summaryrefslogtreecommitdiff
path: root/extra/libxml2/libxml2-2.7.8-xpath-freeing.patch
diff options
context:
space:
mode:
authorroot <root@rshg054.dnsready.net>2012-02-07 23:15:14 +0000
committerroot <root@rshg054.dnsready.net>2012-02-07 23:15:14 +0000
commit0dee03071a0643c3ee5820afa3c694dcef71d385 (patch)
tree2aa6cbee930040086600726e496a2bd87ec41ba8 /extra/libxml2/libxml2-2.7.8-xpath-freeing.patch
parent1fa6edfba8d1e31ca1c0d59e8202cd3c62ccf393 (diff)
Tue Feb 7 23:15:14 UTC 2012
Diffstat (limited to 'extra/libxml2/libxml2-2.7.8-xpath-freeing.patch')
-rw-r--r--extra/libxml2/libxml2-2.7.8-xpath-freeing.patch30
1 files changed, 30 insertions, 0 deletions
diff --git a/extra/libxml2/libxml2-2.7.8-xpath-freeing.patch b/extra/libxml2/libxml2-2.7.8-xpath-freeing.patch
new file mode 100644
index 000000000..2844f4a74
--- /dev/null
+++ b/extra/libxml2/libxml2-2.7.8-xpath-freeing.patch
@@ -0,0 +1,30 @@
+commit df83c17e5a2646bd923f75e5e507bc80d73c9722
+Author: Daniel Veillard <veillard@redhat.com>
+Date: Wed Nov 17 14:12:14 2010 +0100
+
+ Fix a potential freeing error in XPath
+
+diff --git a/xpath.c b/xpath.c
+index 81e33f6..1447be5 100644
+--- a/xpath.c
++++ b/xpath.c
+@@ -11763,11 +11763,15 @@ xmlXPathCompOpEvalPositionalPredicate(xmlXPathParserContextPtr ctxt,
+
+ if ((ctxt->error != XPATH_EXPRESSION_OK) || (res == -1)) {
+ xmlXPathObjectPtr tmp;
+- /* pop the result */
++ /* pop the result if any */
+ tmp = valuePop(ctxt);
+- xmlXPathReleaseObject(xpctxt, tmp);
+- /* then pop off contextObj, which will be freed later */
+- valuePop(ctxt);
++ if (tmp != contextObj)
++ /*
++ * Free up the result
++ * then pop off contextObj, which will be freed later
++ */
++ xmlXPathReleaseObject(xpctxt, tmp);
++ valuePop(ctxt);
+ goto evaluation_error;
+ }
+