From: Christophe Jaillet Date: Wed, 4 Sep 2019 19:11:28 +0000 (+0000) Subject: Fix an issue on Windows where looks for a file on a non-existent drive ... X-Git-Tag: 2.5.0-alpha2-ci-test-only~1900 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e1f29d826efb7941c8b59f5adae5b7111635c82f;p=thirdparty%2Fapache%2Fhttpd.git Fix an issue on Windows where looks for a file on a non-existent drive (on a USB key that is not plugged for example) Issue repported by Heather Lotz git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1866418 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index cba4b195abd..d152919575d 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,10 @@ -*- coding: utf-8 -*- Changes with Apache 2.5.1 + *) core: On Windows, fix a start-up crash if is used with a path that is not + valid (For example, testing for a file on a flash drive that is not mounted) + [Christophe Jaillet] + *) mod_proxy_balancer: Fix case-sensitive referer check related to CSRF/XSS protection. PR63688. [Armin Abfalterer ] diff --git a/server/core.c b/server/core.c index 11bf8d3d102..6de5892a21d 100644 --- a/server/core.c +++ b/server/core.c @@ -2948,8 +2948,15 @@ static int test_iffile_section(cmd_parms *cmd, const char *arg) const char *relative; apr_finfo_t sb; + /* + * At least on Windows, if the path we are testing is not valid (for example + * a path on a USB key that is not plugged), 'ap_server_root_relative()' will + * return NULL. In such a case, consider that the file is not there and that + * the section should be skipped. + */ relative = ap_server_root_relative(cmd->temp_pool, arg); - return (apr_stat(&sb, relative, 0, cmd->pool) == APR_SUCCESS); + return (relative && + (apr_stat(&sb, relative, APR_FINFO_TYPE, cmd->temp_pool) == APR_SUCCESS)); } static int test_ifdirective_section(cmd_parms *cmd, const char *arg)