[libxml2] Reset parser input pointers on encoding failure
- From: Nick Wellnhofer <nwellnhof src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libxml2] Reset parser input pointers on encoding failure
- Date: Sat, 10 Jun 2017 16:32:06 +0000 (UTC)
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]