Commit 9accbcc9 authored by William A. Rowe Jr's avatar William A. Rowe Jr
Browse files

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
parent e2f74aa1
Loading
Loading
Loading
Loading
+1 −9
Original line number Diff line number Diff line
@@ -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;
    }