diff -r 16cb553a85a2 -r 85cbcf3980ca components/apache2/patches/bug52774.patch --- a/components/apache2/patches/bug52774.patch Thu Oct 04 16:40:21 2012 -0700 +++ b/components/apache2/patches/bug52774.patch Mon Oct 08 07:58:20 2012 -0700 @@ -1,18 +1,33 @@ https://issues.apache.org/bugzilla/show_bug.cgi?id=52774 ---- modules/mappers/mod_rewrite.c Tue Jan 24 11:39:31 2012 -+++ modules/mappers/mod_rewrite.c Thu Apr 5 07:37:37 2012 -@@ -4266,9 +4266,13 @@ +--- modules/mappers/mod_rewrite.c Mon Aug 20 10:22:53 2012 ++++ modules/mappers/mod_rewrite.c Tue Sep 18 04:02:33 2012 +@@ -4302,14 +4302,29 @@ + /* Unless the anyuri option is set, ensure that the input to the + * first rule really is a URL-path, avoiding security issues with + * poorly configured rules. See CVE-2011-3368, CVE-2011-4317. */ ++ /* ++ * We believe that URI starting with "http://" is valid and thus we fork ++ * here little bit from upstream. I'm intentionally not optimizing ++ * following if statement to keep changes against upstream clear. ++ * See also: https://issues.apache.org/bugzilla/show_bug.cgi?id=52774 ++ */ + if ((dconf->options & OPTION_ANYURI) == 0 + && ((r->unparsed_uri[0] == '*' && r->unparsed_uri[1] == '\0') +- || !r->uri || r->uri[0] != '/')) { ++ || !r->uri)) { + rewritelog((r, 8, NULL, "Declining, request-URI '%s' is not a URL-path. " + "Consult the manual entry for the RewriteOptions directive " + "for options and caveats about matching other strings.", + r->uri)); return DECLINED; - } - -- if ((r->unparsed_uri[0] == '*' && r->unparsed_uri[1] == '\0') -- || !r->uri || r->uri[0] != '/') { -+ if ((r->unparsed_uri[0] == '*' && r->unparsed_uri[1] == '\0') || !r->uri) { - return DECLINED; -+ } else if (r->uri[0] != '/') { ++ } else if ((dconf->options & OPTION_ANYURI) == 0 && r->uri[0] != '/') { + if (strncmp(r->uri, "http://" , 7) != 0 && + strncmp(r->uri, "https://", 8 )!= 0) { ++ rewritelog((r, 8, NULL, "Declining, request-URI '%s' is not a URL-path. " ++ "Consult the manual entry for the RewriteOptions directive " ++ "for options and caveats about matching other strings.", ++ r->uri)); + return DECLINED; + } }