From: William A. Rowe Jr Date: Wed, 9 Nov 2016 14:23:00 +0000 (+0000) Subject: Backport: r1610383 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=971ddfa11d769c2ad541ce3ab641a44c5a074a0b;p=thirdparty%2Fapache%2Fhttpd.git Backport: r1610383 Submitted by: jailletc36 Simplify code. Cases where 'loc' doesn't have any ':' or is starting with ':' are already handled by 'ap_is_url()' Calling 'apr_isascii()' seems useless. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x-merge-http-strict@1768969 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/http/http_filters.c b/modules/http/http_filters.c index aa95829a22d..8f35b5751c9 100644 --- a/modules/http/http_filters.c +++ b/modules/http/http_filters.c @@ -718,22 +718,14 @@ static APR_INLINE int check_headers(request_rec *r) if ((loc = apr_table_get(r->headers_out, "Location")) != NULL) { const char *scheme_end = ap_strchr_c(loc, ':'); - const char *s = loc; /* * Check that the URI has a valid scheme and is absolute * XXX Should we do a full uri parse here? */ - if (scheme_end == NULL || scheme_end == loc) + if (!ap_is_url(loc)) goto bad; - do { - if ((!apr_isalnum(*s) && *s != '.' && *s != '+' && *s != '-') - || !apr_isascii(*s) ) { - goto bad; - } - } while (++s < scheme_end); - if (scheme_end[1] != '/' || scheme_end[2] != '/') goto bad; }