diff -urN httpd-2.0.35.org/server/config.c httpd-2.0.35/server/config.c --- httpd-2.0.35.org/server/config.c Thu Apr 11 14:09:06 2002 +++ httpd-2.0.35/server/config.c Thu Apr 11 14:24:03 2002 @@ -1427,6 +1427,7 @@ apr_dir_t *dirp; apr_finfo_t dirent; int current; + size_t slen; apr_array_header_t *candidates = NULL; fnames *fnew; apr_status_t rv; @@ -1448,11 +1449,19 @@ candidates = apr_array_make(p, 1, sizeof(fnames)); while (apr_dir_read(&dirent, APR_FINFO_DIRENT, dirp) == APR_SUCCESS) { + slen = strlen(dirent.name); /* strip out '.' and '..' */ if (strcmp(dirent.name, ".") - && strcmp(dirent.name, "..")) { - fnew = (fnames *) apr_array_push(candidates); - fnew->fname = ap_make_full_path(p, fname, dirent.name); + && strcmp(dirent.name, "..") + && (dirent.name)[slen-1] != '~' && (dirent.name)[0] != '.') { + if (slen < 8 || strcmp((dirent.name + slen - 7), ".rpmnew")) { + if (slen < 9 || + strcmp((dirent.name + slen - 8), ".rpmorig") && + strcmp((dirent.name + slen - 8), ".rpmsave")) { + fnew = (fnames *) apr_array_push(candidates); + fnew->fname = ap_make_full_path(p, fname, dirent.name); + } + } } }