Index: dev-libs/libxml2/files/libxml2-2.7.8-xpath-freeing.patch |
diff --git a/dev-libs/libxml2/files/libxml2-2.7.8-xpath-freeing.patch b/dev-libs/libxml2/files/libxml2-2.7.8-xpath-freeing.patch |
new file mode 100644 |
index 0000000000000000000000000000000000000000..3509a48daf57ddd7f0c3239df6eb83a0a9a3ff63 |
--- /dev/null |
+++ b/dev-libs/libxml2/files/libxml2-2.7.8-xpath-freeing.patch |
@@ -0,0 +1,32 @@ |
+From df83c17e5a2646bd923f75e5e507bc80d73c9722 Mon Sep 17 00:00:00 2001 |
+From: Daniel Veillard <veillard@redhat.com> |
+Date: Wed, 17 Nov 2010 13:12:14 +0000 |
+Subject: 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; |
+ } |
+ |
+-- |
+cgit v0.8.3.1 |