[libxml2] Reset parser input pointers on encoding failure



commit f9e7997e803457b714352c4d51a96104ae298d94
Author: Nick Wellnhofer <wellnhofer aevum de>
Date:   Sat Jun 10 00:33:07 2017 +0200

    Reset parser input pointers on encoding failure
    
    Call xmlBufResetInput before bailing out if switching the encoding
    fails. Otherwise, the input pointers are left in an invalid state.
    This would typically lead to an internal error in xmlGROW but could also
    cause other unforeseen problems.

 parserInternals.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
---
diff --git a/parserInternals.c b/parserInternals.c
index 67e5518..f09142b 100644
--- a/parserInternals.c
+++ b/parserInternals.c
@@ -1233,6 +1233,7 @@ xmlSwitchInputEncodingInt(xmlParserCtxtPtr ctxt, xmlParserInputPtr input,
                  */
                 nbchars = xmlCharEncFirstLineInput(input->buf, len);
             }
+            xmlBufResetInput(input->buf->buffer, input);
             if (nbchars < 0) {
                 xmlErrInternal(ctxt,
                                "switching encoding: encoder error\n",
@@ -1240,7 +1241,6 @@ xmlSwitchInputEncodingInt(xmlParserCtxtPtr ctxt, xmlParserInputPtr input,
                 return (-1);
             }
            input->buf->rawconsumed += use - xmlBufUse(input->buf->raw);
-            xmlBufResetInput(input->buf->buffer, input);
         }
         return (0);
     } else if (input->length == 0) {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]