]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
The Microsoft OOXML format uses xml packaged into a zip file, and has
authorJoe Orton <jorton@apache.org>
Wed, 16 Dec 2020 16:23:23 +0000 (16:23 +0000)
committerJoe Orton <jorton@apache.org>
Wed, 16 Dec 2020 16:23:23 +0000 (16:23 +0000)
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 <joseph.heenan fintechlabs.io>
PR: 64339
Github: closes #150

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1884505 13f79535-47bb-0310-9956-ffa450edef68

changes-entries/pr64339.txt [new file with mode: 0644]
modules/filters/mod_xml2enc.c

diff --git a/changes-entries/pr64339.txt b/changes-entries/pr64339.txt
new file mode 100644 (file)
index 0000000..7037bd8
--- /dev/null
@@ -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 <joseph.heenan fintechlabs.io>]
index d31348e8447fabdc81ea69bba751a584b44928cb..34f8e8ee0900382242d8b5d1919e59c18afae00d 100644 (file)
@@ -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) ;
     }