You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
178 lines
6.1 KiB
178 lines
6.1 KiB
From 586849318286965d6ede2932ccd31176b4f7fe81 Mon Sep 17 00:00:00 2001 |
|
From: Daniel Veillard <veillard@redhat.com> |
|
Date: Fri, 20 Nov 2015 14:59:30 +0800 |
|
Subject: [PATCH] Reuse xmlHaltParser() where it makes sense |
|
To: libvir-list@redhat.com |
|
|
|
Unify the various place where either xmlStopParser was called |
|
(which resets the error as a side effect) and places where we |
|
used ctxt->instate = XML_PARSER_EOF to stop further processing |
|
|
|
Signed-off-by: Daniel Veillard <veillard@redhat.com> |
|
--- |
|
parser.c | 37 +++++++++++++++++-------------------- |
|
1 file changed, 17 insertions(+), 20 deletions(-) |
|
|
|
diff --git a/parser.c b/parser.c |
|
index 5b4f719..9aed98d 100644 |
|
--- a/parser.c |
|
+++ b/parser.c |
|
@@ -1773,7 +1773,7 @@ nodePush(xmlParserCtxtPtr ctxt, xmlNodePtr value) |
|
xmlFatalErrMsgInt(ctxt, XML_ERR_INTERNAL_ERROR, |
|
"Excessive depth in document: %d use XML_PARSE_HUGE option\n", |
|
xmlParserMaxDepth); |
|
- ctxt->instate = XML_PARSER_EOF; |
|
+ xmlHaltParser(ctxt); |
|
return(-1); |
|
} |
|
ctxt->nodeTab[ctxt->nodeNr] = value; |
|
@@ -5655,7 +5655,7 @@ xmlParseEntityDecl(xmlParserCtxtPtr ctxt) { |
|
if (RAW != '>') { |
|
xmlFatalErrMsgStr(ctxt, XML_ERR_ENTITY_NOT_FINISHED, |
|
"xmlParseEntityDecl: entity %s not terminated\n", name); |
|
- xmlStopParser(ctxt); |
|
+ xmlHaltParser(ctxt); |
|
} else { |
|
if (input != ctxt->input) { |
|
xmlFatalErrMsg(ctxt, XML_ERR_ENTITY_BOUNDARY, |
|
@@ -6767,8 +6767,7 @@ xmlParseConditionalSections(xmlParserCtxtPtr ctxt) { |
|
SKIP_BLANKS; |
|
if (RAW != '[') { |
|
xmlFatalErr(ctxt, XML_ERR_CONDSEC_INVALID, NULL); |
|
- xmlStopParser(ctxt); |
|
- ctxt->errNo = XML_ERR_CONDSEC_INVALID; |
|
+ xmlHaltParser(ctxt); |
|
return; |
|
} else { |
|
if (ctxt->input->id != id) { |
|
@@ -6830,8 +6829,7 @@ xmlParseConditionalSections(xmlParserCtxtPtr ctxt) { |
|
SKIP_BLANKS; |
|
if (RAW != '[') { |
|
xmlFatalErr(ctxt, XML_ERR_CONDSEC_INVALID, NULL); |
|
- xmlStopParser(ctxt); |
|
- ctxt->errNo = XML_ERR_CONDSEC_INVALID; |
|
+ xmlHaltParser(ctxt); |
|
return; |
|
} else { |
|
if (ctxt->input->id != id) { |
|
@@ -6888,8 +6886,7 @@ xmlParseConditionalSections(xmlParserCtxtPtr ctxt) { |
|
|
|
} else { |
|
xmlFatalErr(ctxt, XML_ERR_CONDSEC_INVALID_KEYWORD, NULL); |
|
- xmlStopParser(ctxt); |
|
- ctxt->errNo = XML_ERR_CONDSEC_INVALID_KEYWORD; |
|
+ xmlHaltParser(ctxt); |
|
return; |
|
} |
|
|
|
@@ -7100,7 +7097,7 @@ xmlParseExternalSubset(xmlParserCtxtPtr ctxt, const xmlChar *ExternalID, |
|
/* |
|
* The XML REC instructs us to stop parsing right here |
|
*/ |
|
- ctxt->instate = XML_PARSER_EOF; |
|
+ xmlHaltParser(ctxt); |
|
return; |
|
} |
|
} |
|
@@ -8087,7 +8084,7 @@ xmlParsePEReference(xmlParserCtxtPtr ctxt) |
|
* The XML REC instructs us to stop parsing |
|
* right here |
|
*/ |
|
- ctxt->instate = XML_PARSER_EOF; |
|
+ xmlHaltParser(ctxt); |
|
return; |
|
} |
|
} |
|
@@ -9986,7 +9983,7 @@ xmlParseContent(xmlParserCtxtPtr ctxt) { |
|
if ((cons == ctxt->input->consumed) && (test == CUR_PTR)) { |
|
xmlFatalErr(ctxt, XML_ERR_INTERNAL_ERROR, |
|
"detected an error in element content\n"); |
|
- ctxt->instate = XML_PARSER_EOF; |
|
+ xmlHaltParser(ctxt); |
|
break; |
|
} |
|
} |
|
@@ -10021,7 +10018,7 @@ xmlParseElement(xmlParserCtxtPtr ctxt) { |
|
xmlFatalErrMsgInt(ctxt, XML_ERR_INTERNAL_ERROR, |
|
"Excessive depth in document: %d use XML_PARSE_HUGE option\n", |
|
xmlParserMaxDepth); |
|
- ctxt->instate = XML_PARSER_EOF; |
|
+ xmlHaltParser(ctxt); |
|
return; |
|
} |
|
|
|
@@ -11345,7 +11342,7 @@ xmlParseTryOrFinish(xmlParserCtxtPtr ctxt, int terminate) { |
|
ctxt->sax->setDocumentLocator(ctxt->userData, |
|
&xmlDefaultSAXLocator); |
|
xmlFatalErr(ctxt, XML_ERR_DOCUMENT_EMPTY, NULL); |
|
- ctxt->instate = XML_PARSER_EOF; |
|
+ xmlHaltParser(ctxt); |
|
#ifdef DEBUG_PUSH |
|
xmlGenericError(xmlGenericErrorContext, |
|
"PP: entering EOF\n"); |
|
@@ -11378,7 +11375,7 @@ xmlParseTryOrFinish(xmlParserCtxtPtr ctxt, int terminate) { |
|
* The XML REC instructs us to stop parsing right |
|
* here |
|
*/ |
|
- ctxt->instate = XML_PARSER_EOF; |
|
+ xmlHaltParser(ctxt); |
|
return(0); |
|
} |
|
ctxt->standalone = ctxt->input->standalone; |
|
@@ -11434,7 +11431,7 @@ xmlParseTryOrFinish(xmlParserCtxtPtr ctxt, int terminate) { |
|
cur = ctxt->input->cur[0]; |
|
if (cur != '<') { |
|
xmlFatalErr(ctxt, XML_ERR_DOCUMENT_EMPTY, NULL); |
|
- ctxt->instate = XML_PARSER_EOF; |
|
+ xmlHaltParser(ctxt); |
|
if ((ctxt->sax) && (ctxt->sax->endDocument != NULL)) |
|
ctxt->sax->endDocument(ctxt->userData); |
|
goto done; |
|
@@ -11466,7 +11463,7 @@ xmlParseTryOrFinish(xmlParserCtxtPtr ctxt, int terminate) { |
|
goto done; |
|
if (name == NULL) { |
|
spacePop(ctxt); |
|
- ctxt->instate = XML_PARSER_EOF; |
|
+ xmlHaltParser(ctxt); |
|
if ((ctxt->sax) && (ctxt->sax->endDocument != NULL)) |
|
ctxt->sax->endDocument(ctxt->userData); |
|
goto done; |
|
@@ -11633,7 +11630,7 @@ xmlParseTryOrFinish(xmlParserCtxtPtr ctxt, int terminate) { |
|
if ((cons == ctxt->input->consumed) && (test == CUR_PTR)) { |
|
xmlFatalErr(ctxt, XML_ERR_INTERNAL_ERROR, |
|
"detected an error in element content\n"); |
|
- ctxt->instate = XML_PARSER_EOF; |
|
+ xmlHaltParser(ctxt); |
|
break; |
|
} |
|
break; |
|
@@ -11954,7 +11951,7 @@ xmlParseTryOrFinish(xmlParserCtxtPtr ctxt, int terminate) { |
|
goto done; |
|
} else { |
|
xmlFatalErr(ctxt, XML_ERR_DOCUMENT_END, NULL); |
|
- ctxt->instate = XML_PARSER_EOF; |
|
+ xmlHaltParser(ctxt); |
|
#ifdef DEBUG_PUSH |
|
xmlGenericError(xmlGenericErrorContext, |
|
"PP: entering EOF\n"); |
|
@@ -12318,7 +12315,7 @@ xmldecl_done: |
|
res = xmlParserInputBufferPush(ctxt->input->buf, size, chunk); |
|
if (res < 0) { |
|
ctxt->errNo = XML_PARSER_EOF; |
|
- ctxt->disableSAX = 1; |
|
+ xmlHaltParser(ctxt); |
|
return (XML_PARSER_EOF); |
|
} |
|
xmlBufSetInputBaseCur(ctxt->input->buf->buffer, ctxt->input, base, cur); |
|
@@ -12372,7 +12369,7 @@ xmldecl_done: |
|
((ctxt->input->cur - ctxt->input->base) > XML_MAX_LOOKUP_LIMIT)) && |
|
((ctxt->options & XML_PARSE_HUGE) == 0)) { |
|
xmlFatalErr(ctxt, XML_ERR_INTERNAL_ERROR, "Huge input lookup"); |
|
- ctxt->instate = XML_PARSER_EOF; |
|
+ xmlHaltParser(ctxt); |
|
} |
|
if ((ctxt->errNo != XML_ERR_OK) && (ctxt->disableSAX == 1)) |
|
return(ctxt->errNo); |
|
-- |
|
2.5.0 |
|
|
|
|