| From 1d4526f6f4ec8d18c40e2a09b387652a6c1aa2cd Mon Sep 17 00:00:00 2001 |
| From: Daniel Veillard <veillard@redhat.com> |
| Date: Tue, 11 Oct 2011 08:34:34 +0000 |
| Subject: Fix missing error status in XPath evaluation |
| |
| Started by Chris Evans, I added a few more place where the |
| error should have been set in the evaluation context. |
| --- |
| diff --git a/xpath.c b/xpath.c |
| index bcee2ea..d9d902c 100644 |
| --- a/xpath.c |
| +++ b/xpath.c |
| @@ -2485,6 +2485,7 @@ valuePush(xmlXPathParserContextPtr ctxt, xmlXPathObjectPtr value) |
| sizeof(ctxt->valueTab[0])); |
| if (tmp == NULL) { |
| xmlGenericError(xmlGenericErrorContext, "realloc failed !\n"); |
| + ctxt->error = XPATH_MEMORY_ERROR; |
| return (0); |
| } |
| ctxt->valueMax *= 2; |
| @@ -9340,6 +9341,7 @@ xmlXPathTranslateFunction(xmlXPathParserContextPtr ctxt, int nargs) { |
| if ( (ch & 0xc0) != 0xc0 ) { |
| xmlGenericError(xmlGenericErrorContext, |
| "xmlXPathTranslateFunction: Invalid UTF8 string\n"); |
| + /* not asserting an XPath error is probably better */ |
| break; |
| } |
| /* then skip over remaining bytes for this char */ |
| @@ -9347,6 +9349,7 @@ xmlXPathTranslateFunction(xmlXPathParserContextPtr ctxt, int nargs) { |
| if ( (*cptr++ & 0xc0) != 0x80 ) { |
| xmlGenericError(xmlGenericErrorContext, |
| "xmlXPathTranslateFunction: Invalid UTF8 string\n"); |
| + /* not asserting an XPath error is probably better */ |
| break; |
| } |
| if (ch & 0x80) /* must have had error encountered */ |
| @@ -13410,6 +13413,7 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op) |
| xmlGenericError(xmlGenericErrorContext, |
| "xmlXPathCompOpEval: variable %s bound to undefined prefix %s\n", |
| (char *) op->value4, (char *)op->value5); |
| + ctxt->error = XPATH_UNDEF_PREFIX_ERROR; |
| return (total); |
| } |
| val = xmlXPathVariableLookupNS(ctxt->context, |
| @@ -13464,6 +13468,7 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op) |
| "xmlXPathCompOpEval: function %s bound to undefined prefix %s\n", |
| (char *)op->value4, (char *)op->value5); |
| xmlXPathPopFrame(ctxt, frame); |
| + ctxt->error = XPATH_UNDEF_PREFIX_ERROR; |
| return (total); |
| } |
| func = xmlXPathFunctionLookupNS(ctxt->context, |
| @@ -14042,6 +14047,7 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op) |
| } |
| xmlGenericError(xmlGenericErrorContext, |
| "XPath: unknown precompiled operation %d\n", op->op); |
| + ctxt->error = XPATH_INVALID_OPERAND; |
| return (total); |
| } |
| |
| -- |
| cgit v0.9.0.2 |