diff options
author | Jim Jagielski <jim@apache.org> | 2017-12-21 18:50:38 +0000 |
---|---|---|
committer | Jim Jagielski <jim@apache.org> | 2017-12-21 18:50:38 +0000 |
commit | a1926e67ef860210c033401e1a44a6e4c37bd5fd (patch) | |
tree | 4bb158fb581a8a08599300e6c366e8fbb58dfe52 /server | |
parent | b1102a1ca550e7b35b1bd5f904f12da0b8a4ad9a (diff) | |
download | httpd-a1926e67ef860210c033401e1a44a6e4c37bd5fd.tar.gz |
Merge r1814968 from trunk:
core: silently ignore a not existent file path when IncludeOptional
is used.
In https://bz.apache.org/bugzilla/show_bug.cgi?id=57585 some use cases
were reported in which IncludeOptional seems to be too strict in its
sanity checks.
This change is a proposal to relax IncludeOptional checks to silently
fail when a file path is not existent rather than returning SyntaxError.
Submitted by: elukey
Reviewed by: elukey, jim, niq
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1818964 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'server')
-rw-r--r-- | server/config.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/server/config.c b/server/config.c index 983c7dfae3..30bd6d66bd 100644 --- a/server/config.c +++ b/server/config.c @@ -1951,6 +1951,15 @@ static const char *process_resource_config_nofnmatch(server_rec *s, return NULL; } + else if (optional) { + /* If the optinal flag is set (like for IncludeOptional) we can + * tolerate that no file or directory is present and bail out. + */ + apr_finfo_t finfo; + if (apr_stat(&finfo, fname, APR_FINFO_TYPE, ptemp) != APR_SUCCESS + || finfo.filetype == APR_NOFILE) + return NULL; + } return ap_process_resource_config(s, fname, conftree, p, ptemp); } @@ -2001,6 +2010,12 @@ static const char *process_resource_config_fnmatch(server_rec *s, */ rv = apr_dir_open(&dirp, path, ptemp); if (rv != APR_SUCCESS) { + /* If the directory doesn't exist and the optional flag is set + * there is no need to return an error. + */ + if (rv == APR_ENOENT && optional) { + return NULL; + } return apr_psprintf(p, "Could not open config directory %s: %pm", path, &rv); } |