diff options
author | Daniel Veillard <veillard@redhat.com> | 2015-02-23 11:29:20 +0800 |
---|---|---|
committer | Daniel Veillard <veillard@redhat.com> | 2015-02-23 11:29:20 +0800 |
commit | 9b8512337d14c8ddf662fcb98b0135f225a1c489 (patch) | |
tree | ad91301c5a02bdf4e165a555f23b77e02d6ef64c | |
parent | a7dfab7411cbf545f359dd3157e5df1eb0e7ce31 (diff) | |
download | libxml2-9b8512337d14c8ddf662fcb98b0135f225a1c489.tar.gz |
Cleanup conditional section error handlingCVE-2015-7941_2
For https://bugzilla.gnome.org/show_bug.cgi?id=744980
The error handling of Conditional Section also need to be
straightened as the structure of the document can't be
guessed on a failure there and it's better to stop parsing
as further errors are likely to be irrelevant.
-rw-r--r-- | parser.c | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -6770,6 +6770,8 @@ xmlParseConditionalSections(xmlParserCtxtPtr ctxt) { SKIP_BLANKS; if (RAW != '[') { xmlFatalErr(ctxt, XML_ERR_CONDSEC_INVALID, NULL); + xmlStopParser(ctxt); + return; } else { if (ctxt->input->id != id) { xmlValidityError(ctxt, XML_ERR_ENTITY_BOUNDARY, @@ -6830,6 +6832,8 @@ xmlParseConditionalSections(xmlParserCtxtPtr ctxt) { SKIP_BLANKS; if (RAW != '[') { xmlFatalErr(ctxt, XML_ERR_CONDSEC_INVALID, NULL); + xmlStopParser(ctxt); + return; } else { if (ctxt->input->id != id) { xmlValidityError(ctxt, XML_ERR_ENTITY_BOUNDARY, @@ -6885,6 +6889,8 @@ xmlParseConditionalSections(xmlParserCtxtPtr ctxt) { } else { xmlFatalErr(ctxt, XML_ERR_CONDSEC_INVALID_KEYWORD, NULL); + xmlStopParser(ctxt); + return; } if (RAW == 0) |