You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by dg...@hyperreal.org on 1999/05/12 18:50:45 UTC
cvs commit: apache-1.3/src/main http_request.c
dgaudet 99/05/12 09:50:43
Modified: src CHANGES
src/main http_request.c
Log:
don't assume the struct stat passed to stat() is left alone when the
stat fails
Submitted by: Ed Korthof <ed...@bitmechanic.com>
Revision Changes Path
1.1353 +3 -0 apache-1.3/src/CHANGES
Index: CHANGES
===================================================================
RCS file: /home/cvs/apache-1.3/src/CHANGES,v
retrieving revision 1.1352
retrieving revision 1.1353
diff -u -r1.1352 -r1.1353
--- CHANGES 1999/05/07 00:38:05 1.1352
+++ CHANGES 1999/05/12 16:50:40 1.1353
@@ -1,5 +1,8 @@
Changes with Apache 1.3.7
+ *) When stat() fails, don't assume anything about the contents of
+ the struct stat. [Ed Korthof <ed...@bitmechanic.com>]
+
*) It's OK for a semop to return EINTR, just loop around and try
again. [Dean Gaudet]
1.148 +10 -8 apache-1.3/src/main/http_request.c
Index: http_request.c
===================================================================
RCS file: /home/cvs/apache-1.3/src/main/http_request.c,v
retrieving revision 1.147
retrieving revision 1.148
diff -u -r1.147 -r1.148
--- http_request.c 1999/04/20 23:38:44 1.147
+++ http_request.c 1999/05/12 16:50:42 1.148
@@ -265,8 +265,12 @@
*cp = '\0';
return OK;
}
+ /* must set this to zero, some stat()s may have corrupted it
+ * even if they returned an error.
+ */
+ r->finfo.st_mode = 0;
#if defined(ENOENT) && defined(ENOTDIR)
- else if (errno == ENOENT || errno == ENOTDIR) {
+ if (errno == ENOENT || errno == ENOTDIR) {
last_cp = cp;
while (--cp > path && *cp != '/')
@@ -299,15 +303,13 @@
* you needed to do this. Please be sure to include the operating
* system you are using.
*/
- else {
- last_cp = cp;
+ last_cp = cp;
- while (--cp > path && *cp != '/')
- continue;
+ while (--cp > path && *cp != '/')
+ continue;
- while (cp > path && cp[-1] == '/')
- --cp;
- }
+ while (cp > path && cp[-1] == '/')
+ --cp;
#endif /* ENOENT && ENOTDIR */
}
return OK;