mirror of
https://github.com/apache/httpd.git
synced 2025-08-03 16:33:59 +00:00
* 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:
@ -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 *));
|
||||
|
Reference in New Issue
Block a user