* modules/standard/mod_autoindex.c (index_directory): If stat() fails

for a particular dirent, ignore that entry rather than truncating the
directory listing.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@102924 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Joe Orton
2004-03-10 20:51:10 +00:00
parent 11b03c4294
commit 7d90e82bac

View File

@ -2126,8 +2126,16 @@ static int index_directory(request_rec *r,
fullpath = apr_palloc(r->pool, APR_PATH_MAX);
dirpathlen = strlen(name);
memcpy(fullpath, name, dirpathlen);
while (apr_dir_read(&dirent, APR_FINFO_MIN | APR_FINFO_NAME,
thedir) == APR_SUCCESS) {
do {
status = apr_dir_read(&dirent, APR_FINFO_MIN | APR_FINFO_NAME, thedir);
if (APR_STATUS_IS_INCOMPLETE(status)) {
continue; /* ignore un-stat()able files */
}
else if (status != APR_SUCCESS) {
break;
}
/* We want to explode symlinks here. */
if (dirent.filetype == APR_LNK) {
const char *savename;
@ -2153,7 +2161,8 @@ static int index_directory(request_rec *r,
head = p;
num_ent++;
}
}
} while (1);
if (num_ent > 0) {
ar = (struct ent **) apr_palloc(r->pool,
num_ent * sizeof(struct ent *));