mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-03-20 18:50:08 +03:00
Fix XPath stack frame logic
Move the calls to xmlXPathSetFrame and xmlXPathPopFrame around in xmlXPathCompOpEvalPositionalPredicate to make sure that the context object on the stack is actually protected. Otherwise, memory corruption can occur when calling sloppily coded XPath extension functions. Fixes bug 783160.
This commit is contained in:
parent
3157cf4e53
commit
0f3b843b35
4
xpath.c
4
xpath.c
@ -11932,11 +11932,11 @@ xmlXPathCompOpEvalPositionalPredicate(xmlXPathParserContextPtr ctxt,
|
||||
}
|
||||
}
|
||||
|
||||
frame = xmlXPathSetFrame(ctxt);
|
||||
valuePush(ctxt, contextObj);
|
||||
frame = xmlXPathSetFrame(ctxt);
|
||||
res = xmlXPathCompOpEvalToBoolean(ctxt, exprOp, 1);
|
||||
tmp = valuePop(ctxt);
|
||||
xmlXPathPopFrame(ctxt, frame);
|
||||
tmp = valuePop(ctxt);
|
||||
|
||||
if ((ctxt->error != XPATH_EXPRESSION_OK) || (res == -1)) {
|
||||
while (tmp != contextObj) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user