Hi

Slightly refreshed patches taken from upstream git commits attached.
But the resulting package is not yet tested (passed the testsuite).

Regards,
Salvatore
diff -Nru libxslt-1.1.26/debian/changelog libxslt-1.1.26/debian/changelog
--- libxslt-1.1.26/debian/changelog     2012-10-02 17:55:02.000000000 +0200
+++ libxslt-1.1.26/debian/changelog     2013-03-25 23:49:09.000000000 +0100
@@ -1,3 +1,11 @@
+libxslt (1.1.26-14.1) unstable; urgency=high
+
+  * Non-maintainer upload.
+  * Add patches to fix denial of service vulnerability (CVE-2012-6139)
+    (Closes: #703933)
+
+ -- Salvatore Bonaccorso <car...@debian.org>  Mon, 25 Mar 2013 23:48:39 +0100
+
 libxslt (1.1.26-14) unstable; urgency=low
 
   * Patch to fix three CVEs (Closes: #689422):
diff -Nru 
libxslt-1.1.26/debian/patches/0009-Fix-crash-with-empty-xsl-key-match-attribute.patch
 
libxslt-1.1.26/debian/patches/0009-Fix-crash-with-empty-xsl-key-match-attribute.patch
--- 
libxslt-1.1.26/debian/patches/0009-Fix-crash-with-empty-xsl-key-match-attribute.patch
       1970-01-01 01:00:00.000000000 +0100
+++ 
libxslt-1.1.26/debian/patches/0009-Fix-crash-with-empty-xsl-key-match-attribute.patch
       2013-03-25 23:49:09.000000000 +0100
@@ -0,0 +1,64 @@
+From dc11b6b379a882418093ecc8adf11f6166682e8d Mon Sep 17 00:00:00 2001
+From: Nick Wellnhofer <wellnho...@aevum.de>
+Date: Sun, 21 Oct 2012 19:02:25 +0200
+Subject: [PATCH] Fix crash with empty xsl:key/@match attribute
+
+See https://bugzilla.gnome.org/show_bug.cgi?id=685328
+
+Also improve some xsl:key error messages.
+---
+ libxslt/keys.c |   16 +++++++++++-----
+ 1 file changed, 11 insertions(+), 5 deletions(-)
+
+--- a/libxslt/keys.c
++++ b/libxslt/keys.c
+@@ -311,8 +311,8 @@
+               end = skipPredicate(match, end);
+               if (end <= 0) {
+                   xsltTransformError(NULL, style, inst,
+-                                     "key pattern is malformed: %s",
+-                                     key->match);
++                      "xsl:key : 'match' pattern is malformed: %s",
++                      key->match);
+                   if (style != NULL) style->errors++;
+                   goto error;
+               }
+@@ -321,7 +321,7 @@
+       }
+       if (current == end) {
+           xsltTransformError(NULL, style, inst,
+-                             "key pattern is empty\n");
++                             "xsl:key : 'match' pattern is empty\n");
+           if (style != NULL) style->errors++;
+           goto error;
+       }
+@@ -344,6 +344,12 @@
+       }
+       current = end;
+     }
++    if (pattern == NULL) {
++        xsltTransformError(NULL, style, inst,
++                           "xsl:key : 'match' pattern is empty\n");
++        if (style != NULL) style->errors++;
++        goto error;
++    }
+ #ifdef WITH_XSLT_DEBUG_KEYS
+     xsltGenericDebug(xsltGenericDebugContext,
+       "   resulting pattern %s\n", pattern);
+@@ -359,14 +365,14 @@
+     key->comp = xsltXPathCompile(style, pattern);
+     if (key->comp == NULL) {
+       xsltTransformError(NULL, style, inst,
+-              "xsl:key : XPath pattern compilation failed '%s'\n",
++              "xsl:key : 'match' pattern compilation failed '%s'\n",
+                        pattern);
+       if (style != NULL) style->errors++;
+     }
+     key->usecomp = xsltXPathCompile(style, use);
+     if (key->usecomp == NULL) {
+       xsltTransformError(NULL, style, inst,
+-              "xsl:key : XPath pattern compilation failed '%s'\n",
++              "xsl:key : 'use' expression compilation failed '%s'\n",
+                        use);
+       if (style != NULL) style->errors++;
+     }
diff -Nru 
libxslt-1.1.26/debian/patches/0010-Crash-when-passing-an-uninitialized-variable-to-docu.patch
 
libxslt-1.1.26/debian/patches/0010-Crash-when-passing-an-uninitialized-variable-to-docu.patch
--- 
libxslt-1.1.26/debian/patches/0010-Crash-when-passing-an-uninitialized-variable-to-docu.patch
       1970-01-01 01:00:00.000000000 +0100
+++ 
libxslt-1.1.26/debian/patches/0010-Crash-when-passing-an-uninitialized-variable-to-docu.patch
       2013-03-25 23:49:09.000000000 +0100
@@ -0,0 +1,85 @@
+From 6c99c519d97e5fcbec7a9537d190efb442e4e833 Mon Sep 17 00:00:00 2001
+From: Nick Wellnhofer <wellnho...@aevum.de>
+Date: Wed, 10 Oct 2012 12:09:36 +0200
+Subject: [PATCH] Crash when passing an uninitialized variable to document()
+
+https://bugzilla.gnome.org/show_bug.cgi?id=685330
+
+Missing check for NULL
+---
+ libxslt/functions.c       |    5 +++--
+ tests/docs/Makefile.am    |    1 +
+ tests/docs/bug-180.xml    |    2 ++
+ tests/general/Makefile.am |    1 +
+ tests/general/bug-180.err |    4 ++++
+ tests/general/bug-180.xsl |    8 ++++++++
+ 6 files changed, 19 insertions(+), 2 deletions(-)
+ create mode 100644 tests/docs/bug-180.xml
+ create mode 100644 tests/general/bug-180.err
+ create mode 100644 tests/general/bug-180.out
+ create mode 100644 tests/general/bug-180.xsl
+
+--- a/libxslt/functions.c
++++ b/libxslt/functions.c
+@@ -260,7 +260,7 @@
+         obj = valuePop(ctxt);
+         ret = xmlXPathNewNodeSet(NULL);
+ 
+-        if (obj->nodesetval) {
++        if ((obj != NULL) && obj->nodesetval) {
+             for (i = 0; i < obj->nodesetval->nodeNr; i++) {
+                 valuePush(ctxt,
+                           xmlXPathNewNodeSet(obj->nodesetval->nodeTab[i]));
+@@ -280,7 +280,8 @@
+             }
+         }
+ 
+-        xmlXPathFreeObject(obj);
++        if (obj != NULL)
++            xmlXPathFreeObject(obj);
+         if (obj2 != NULL)
+             xmlXPathFreeObject(obj2);
+         valuePush(ctxt, ret);
+--- /dev/null
++++ b/tests/docs/bug-180.xml
+@@ -0,0 +1,2 @@
++<doc/>
++
+--- /dev/null
++++ b/tests/general/bug-180.err
+@@ -0,0 +1,4 @@
++runtime error: file ./bug-180.xsl line 4 element copy-of
++Variable 'xxx' has not been declared.
++XPath error : Stack usage errror
++xmlXPathCompiledEval: 1 objects left on the stack.
+--- /dev/null
++++ b/tests/general/bug-180.xsl
+@@ -0,0 +1,8 @@
++<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
version="1.0">
++
++  <xsl:template match="/">
++      <xsl:copy-of select=" * | document($xxx) "/>
++  </xsl:template>
++
++</xsl:stylesheet>
++
+--- a/tests/docs/Makefile.am
++++ b/tests/docs/Makefile.am
+@@ -168,6 +168,7 @@
+       bug-167.xml \
+       bug-168.xml \
+       bug-169.xml \
++      bug-180.xml \
+       character.xml \
+       array.xml \
+       items.xml
+--- a/tests/general/Makefile.am
++++ b/tests/general/Makefile.am
+@@ -177,6 +177,7 @@
+     bug-167.out bug-167.xsl \
+     bug-168.out bug-168.xsl \
+     bug-169.out bug-169.xsl bug-169.imp \
++    bug-180.out bug-180.xsl bug-180.err \
+     character.out character.xsl \
+     character2.out character2.xsl \
+     itemschoose.out itemschoose.xsl \
diff -Nru libxslt-1.1.26/debian/patches/series 
libxslt-1.1.26/debian/patches/series
--- libxslt-1.1.26/debian/patches/series        2012-10-02 17:53:16.000000000 
+0200
+++ libxslt-1.1.26/debian/patches/series        2013-03-25 23:49:09.000000000 
+0100
@@ -6,3 +6,5 @@
 0006-cve-2012-2870.patch
 0007-Fix-default-template-processing-on-namespace-nodes.patch
 0008-Fix-a-dictionary-string-usage.patch
+0009-Fix-crash-with-empty-xsl-key-match-attribute.patch
+0010-Crash-when-passing-an-uninitialized-variable-to-docu.patch
>From dc11b6b379a882418093ecc8adf11f6166682e8d Mon Sep 17 00:00:00 2001
From: Nick Wellnhofer <wellnho...@aevum.de>
Date: Sun, 21 Oct 2012 19:02:25 +0200
Subject: [PATCH] Fix crash with empty xsl:key/@match attribute

See https://bugzilla.gnome.org/show_bug.cgi?id=685328

Also improve some xsl:key error messages.
---
 libxslt/keys.c |   16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

--- a/libxslt/keys.c
+++ b/libxslt/keys.c
@@ -311,8 +311,8 @@
 	        end = skipPredicate(match, end);
 		if (end <= 0) {
 		    xsltTransformError(NULL, style, inst,
-		                       "key pattern is malformed: %s",
-				       key->match);
+		        "xsl:key : 'match' pattern is malformed: %s",
+		        key->match);
 		    if (style != NULL) style->errors++;
 		    goto error;
 		}
@@ -321,7 +321,7 @@
 	}
 	if (current == end) {
 	    xsltTransformError(NULL, style, inst,
-			       "key pattern is empty\n");
+			       "xsl:key : 'match' pattern is empty\n");
 	    if (style != NULL) style->errors++;
 	    goto error;
 	}
@@ -344,6 +344,12 @@
 	}
 	current = end;
     }
+    if (pattern == NULL) {
+        xsltTransformError(NULL, style, inst,
+                           "xsl:key : 'match' pattern is empty\n");
+        if (style != NULL) style->errors++;
+        goto error;
+    }
 #ifdef WITH_XSLT_DEBUG_KEYS
     xsltGenericDebug(xsltGenericDebugContext,
 	"   resulting pattern %s\n", pattern);
@@ -359,14 +365,14 @@
     key->comp = xsltXPathCompile(style, pattern);
     if (key->comp == NULL) {
 	xsltTransformError(NULL, style, inst,
-		"xsl:key : XPath pattern compilation failed '%s'\n",
+		"xsl:key : 'match' pattern compilation failed '%s'\n",
 		         pattern);
 	if (style != NULL) style->errors++;
     }
     key->usecomp = xsltXPathCompile(style, use);
     if (key->usecomp == NULL) {
 	xsltTransformError(NULL, style, inst,
-		"xsl:key : XPath pattern compilation failed '%s'\n",
+		"xsl:key : 'use' expression compilation failed '%s'\n",
 		         use);
 	if (style != NULL) style->errors++;
     }
>From 6c99c519d97e5fcbec7a9537d190efb442e4e833 Mon Sep 17 00:00:00 2001
From: Nick Wellnhofer <wellnho...@aevum.de>
Date: Wed, 10 Oct 2012 12:09:36 +0200
Subject: [PATCH] Crash when passing an uninitialized variable to document()

https://bugzilla.gnome.org/show_bug.cgi?id=685330

Missing check for NULL
---
 libxslt/functions.c       |    5 +++--
 tests/docs/Makefile.am    |    1 +
 tests/docs/bug-180.xml    |    2 ++
 tests/general/Makefile.am |    1 +
 tests/general/bug-180.err |    4 ++++
 tests/general/bug-180.xsl |    8 ++++++++
 6 files changed, 19 insertions(+), 2 deletions(-)
 create mode 100644 tests/docs/bug-180.xml
 create mode 100644 tests/general/bug-180.err
 create mode 100644 tests/general/bug-180.out
 create mode 100644 tests/general/bug-180.xsl

--- a/libxslt/functions.c
+++ b/libxslt/functions.c
@@ -260,7 +260,7 @@
         obj = valuePop(ctxt);
         ret = xmlXPathNewNodeSet(NULL);
 
-        if (obj->nodesetval) {
+        if ((obj != NULL) && obj->nodesetval) {
             for (i = 0; i < obj->nodesetval->nodeNr; i++) {
                 valuePush(ctxt,
                           xmlXPathNewNodeSet(obj->nodesetval->nodeTab[i]));
@@ -280,7 +280,8 @@
             }
         }
 
-        xmlXPathFreeObject(obj);
+        if (obj != NULL)
+            xmlXPathFreeObject(obj);
         if (obj2 != NULL)
             xmlXPathFreeObject(obj2);
         valuePush(ctxt, ret);
--- /dev/null
+++ b/tests/docs/bug-180.xml
@@ -0,0 +1,2 @@
+<doc/>
+
--- /dev/null
+++ b/tests/general/bug-180.err
@@ -0,0 +1,4 @@
+runtime error: file ./bug-180.xsl line 4 element copy-of
+Variable 'xxx' has not been declared.
+XPath error : Stack usage errror
+xmlXPathCompiledEval: 1 objects left on the stack.
--- /dev/null
+++ b/tests/general/bug-180.xsl
@@ -0,0 +1,8 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="1.0">
+
+  <xsl:template match="/">
+      <xsl:copy-of select=" * | document($xxx) "/>
+  </xsl:template>
+
+</xsl:stylesheet>
+
--- a/tests/docs/Makefile.am
+++ b/tests/docs/Makefile.am
@@ -168,6 +168,7 @@
 	bug-167.xml \
 	bug-168.xml \
 	bug-169.xml \
+	bug-180.xml \
 	character.xml \
 	array.xml \
 	items.xml
--- a/tests/general/Makefile.am
+++ b/tests/general/Makefile.am
@@ -177,6 +177,7 @@
     bug-167.out bug-167.xsl \
     bug-168.out bug-168.xsl \
     bug-169.out bug-169.xsl bug-169.imp \
+    bug-180.out bug-180.xsl bug-180.err \
     character.out character.xsl \
     character2.out character2.xsl \
     itemschoose.out itemschoose.xsl \

Reply via email to