summaryrefslogtreecommitdiff
path: root/httpd-2.4.57-r1884505+.patch
diff options
context:
space:
mode:
Diffstat (limited to 'httpd-2.4.57-r1884505+.patch')
-rw-r--r--httpd-2.4.57-r1884505+.patch39
1 files changed, 39 insertions, 0 deletions
diff --git a/httpd-2.4.57-r1884505+.patch b/httpd-2.4.57-r1884505+.patch
new file mode 100644
index 0000000..97bc6a8
--- /dev/null
+++ b/httpd-2.4.57-r1884505+.patch
@@ -0,0 +1,39 @@
+# ./pullrev.sh 1884505 1915625
+http://svn.apache.org/viewvc?view=revision&revision=1884505
+http://svn.apache.org/viewvc?view=revision&revision=1915625
+
+--- httpd-2.4.57/modules/filters/mod_xml2enc.c
++++ httpd-2.4.57/modules/filters/mod_xml2enc.c
+@@ -329,7 +329,7 @@
+ apr_bucket* bstart;
+ apr_size_t insz = 0;
+ int pending_meta = 0;
+- char *ctype;
++ char *mtype;
+ char *p;
+
+ if (!ctx || !f->r->content_type) {
+@@ -338,13 +338,17 @@
+ return ap_pass_brigade(f->next, bb) ;
+ }
+
+- ctype = apr_pstrdup(f->r->pool, f->r->content_type);
+- for (p = ctype; *p; ++p)
+- if (isupper(*p))
+- *p = tolower(*p);
++ /* Extract the media type, ignoring parameters in content-type. */
++ mtype = apr_pstrdup(f->r->pool, f->r->content_type);
++ if ((p = ap_strchr(mtype, ';')) != NULL) *p = '\0';
++ ap_str_tolower(mtype);
+
+- /* only act if starts-with "text/" or contains "xml" */
+- if (strncmp(ctype, "text/", 5) && !strstr(ctype, "xml")) {
++ /* Accept text/ types, plus any XML media type per RFC 7303. */
++ if (!(strncmp(mtype, "text/", 5) == 0
++ || strcmp(mtype, "application/xml") == 0
++ || (strlen(mtype) > 7 /* minimum 'a/b+xml' length */
++ && (p = strstr(mtype, "+xml")) != NULL
++ && strlen(p) == 4 /* ensures +xml is a suffix */))) {
+ ap_remove_output_filter(f);
+ return ap_pass_brigade(f->next, bb) ;
+ }