aboutsummaryrefslogtreecommitdiffstats
path: root/main/libxml2/Length-related-XHTML-parsing-errors.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/libxml2/Length-related-XHTML-parsing-errors.patch')
-rw-r--r--main/libxml2/Length-related-XHTML-parsing-errors.patch63
1 files changed, 63 insertions, 0 deletions
diff --git a/main/libxml2/Length-related-XHTML-parsing-errors.patch b/main/libxml2/Length-related-XHTML-parsing-errors.patch
new file mode 100644
index 0000000000..7a4363198e
--- /dev/null
+++ b/main/libxml2/Length-related-XHTML-parsing-errors.patch
@@ -0,0 +1,63 @@
+From 7a1bd7f6497ac33a9023d556f6f47a48f01deac0 Mon Sep 17 00:00:00 2001
+From: Nick Wellnhofer <wellnhofer@aevum.de>
+Date: Sat, 17 Mar 2018 00:03:24 +0100
+Subject: [PATCH] Revert "Change calls to xmlCharEncInput to set flush false"
+
+This reverts commit 6e6ae5daa6cd9640c9a83c1070896273e9b30d14 which
+broke decoding of larger documents with ICU.
+
+See https://bugs.chromium.org/p/chromium/issues/detail?id=820163
+---
+ HTMLparser.c | 2 +-
+ parserInternals.c | 2 +-
+ xmlIO.c | 4 ++--
+ 3 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/HTMLparser.c b/HTMLparser.c
+index 9adeb174..7e243e60 100644
+--- a/HTMLparser.c
++++ b/HTMLparser.c
+@@ -3635,7 +3635,7 @@ htmlCheckEncodingDirect(htmlParserCtxtPtr ctxt, const xmlChar *encoding) {
+ */
+ processed = ctxt->input->cur - ctxt->input->base;
+ xmlBufShrink(ctxt->input->buf->buffer, processed);
+- nbchars = xmlCharEncInput(ctxt->input->buf, 0);
++ nbchars = xmlCharEncInput(ctxt->input->buf, 1);
+ if (nbchars < 0) {
+ htmlParseErr(ctxt, XML_ERR_INVALID_ENCODING,
+ "htmlCheckEncoding: encoder error\n",
+diff --git a/parserInternals.c b/parserInternals.c
+index 8c0cd57a..09876ab4 100644
+--- a/parserInternals.c
++++ b/parserInternals.c
+@@ -1214,7 +1214,7 @@ xmlSwitchInputEncodingInt(xmlParserCtxtPtr ctxt, xmlParserInputPtr input,
+ /*
+ * convert as much as possible of the buffer
+ */
+- nbchars = xmlCharEncInput(input->buf, 0);
++ nbchars = xmlCharEncInput(input->buf, 1);
+ } else {
+ /*
+ * convert just enough to get
+diff --git a/xmlIO.c b/xmlIO.c
+index 82543477..f61dd05a 100644
+--- a/xmlIO.c
++++ b/xmlIO.c
+@@ -3157,7 +3157,7 @@ xmlParserInputBufferPush(xmlParserInputBufferPtr in,
+ * convert as much as possible to the parser reading buffer.
+ */
+ use = xmlBufUse(in->raw);
+- nbchars = xmlCharEncInput(in, 0);
++ nbchars = xmlCharEncInput(in, 1);
+ if (nbchars < 0) {
+ xmlIOErr(XML_IO_ENCODER, NULL);
+ in->error = XML_IO_ENCODER;
+@@ -3273,7 +3273,7 @@ xmlParserInputBufferGrow(xmlParserInputBufferPtr in, int len) {
+ * convert as much as possible to the parser reading buffer.
+ */
+ use = xmlBufUse(in->raw);
+- nbchars = xmlCharEncInput(in, 0);
++ nbchars = xmlCharEncInput(in, 1);
+ if (nbchars < 0) {
+ xmlIOErr(XML_IO_ENCODER, NULL);
+ in->error = XML_IO_ENCODER; \ No newline at end of file