From: Joe Orton Date: Wed, 16 Dec 2020 16:23:23 +0000 (+0000) Subject: The Microsoft OOXML format uses xml packaged into a zip file, and has X-Git-Tag: 2.5.0-alpha2-ci-test-only~1080 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=caeb9081648a92d2e545af5c97fd6fe5120eb4cf;p=thirdparty%2Fapache%2Fhttpd.git The Microsoft OOXML format uses xml packaged into a zip file, and has mimetypes like: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet This mimetypes contains 'xml', but is unfortunately not an xml file. xml2enc processes these files (in particular, when mod_proxy_html is used), typically resulting in them being corrupted as it seems to attempt to perform a ISO-8859-1 to UTF-8 conversion on them. * modules/filters/mod_xml2enc.c (xml2enc_ffunc): Restrict test for XML types to matching "+xml". Submitted by: Joseph Heenan PR: 64339 Github: closes #150 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1884505 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/changes-entries/pr64339.txt b/changes-entries/pr64339.txt new file mode 100644 index 00000000000..7037bd8c5cd --- /dev/null +++ b/changes-entries/pr64339.txt @@ -0,0 +1,4 @@ + *) mod_xml2enc: Update check to match MIME types matching + "+xml" rather than anything containing "xml", avoiding + corruption of Microsoft OOXML formats. PR 64339. + [Joseph Heenan ] diff --git a/modules/filters/mod_xml2enc.c b/modules/filters/mod_xml2enc.c index d31348e8447..34f8e8ee090 100644 --- a/modules/filters/mod_xml2enc.c +++ b/modules/filters/mod_xml2enc.c @@ -343,8 +343,8 @@ static apr_status_t xml2enc_ffunc(ap_filter_t* f, apr_bucket_brigade* bb) if (isupper(*p)) *p = tolower(*p); - /* only act if starts-with "text/" or contains "xml" */ - if (strncmp(ctype, "text/", 5) && !strstr(ctype, "xml")) { + /* only act if starts-with "text/" or contains "+xml" */ + if (strncmp(ctype, "text/", 5) && !strstr(ctype, "+xml")) { ap_remove_output_filter(f); return ap_pass_brigade(f->next, bb) ; }