You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.4 KiB
39 lines
1.4 KiB
# ./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) ; |
|
}
|
|
|