summary refs log tree commit diff
path: root/gnu/packages/patches/libxml2-bug-754947.patch
diff options
context:
space:
mode:
authorMark H Weaver <mhw@netris.org>2015-11-15 14:16:57 -0500
committerMark H Weaver <mhw@netris.org>2015-11-18 17:47:40 -0500
commitee6bb0cc763507b165674dbe03c6ae5d26c8da5c (patch)
tree34c4d1d29b5428f83113af81bc4464b432669c85 /gnu/packages/patches/libxml2-bug-754947.patch
parent328a14e869c01ae4e33120a08a5d60c719263684 (diff)
downloadguix-ee6bb0cc763507b165674dbe03c6ae5d26c8da5c.tar.gz
gnu: libxml2: Add fixes for CVE-2015-{1819,7941,7942,8035} and other bugs.
* gnu/packages/patches/libxml2-CVE-2015-1819.patch,
  gnu/packages/patches/libxml2-CVE-2015-7941-pt1.patch,
  gnu/packages/patches/libxml2-CVE-2015-7941-pt2.patch,
  gnu/packages/patches/libxml2-CVE-2015-7942-pt1.patch,
  gnu/packages/patches/libxml2-CVE-2015-7942-pt2.patch,
  gnu/packages/patches/libxml2-CVE-2015-8035.patch,
  gnu/packages/patches/libxml2-bug-737840.patch,
  gnu/packages/patches/libxml2-bug-738805.patch,
  gnu/packages/patches/libxml2-bug-746048.patch,
  gnu/packages/patches/libxml2-bug-747437.patch,
  gnu/packages/patches/libxml2-bug-751603.patch,
  gnu/packages/patches/libxml2-bug-751631.patch,
  gnu/packages/patches/libxml2-bug-754946.patch,
  gnu/packages/patches/libxml2-bug-754947.patch,
  gnu/packages/patches/libxml2-bug-755857.patch,
  gnu/packages/patches/libxml2-fix-catalog-corruption.patch,
  gnu/packages/patches/libxml2-id-attrs-in-xmlSetTreeDoc.patch,
  gnu/packages/patches/libxml2-node-sort-order-pt1.patch,
  gnu/packages/patches/libxml2-node-sort-order-pt2.patch: New files.
* gnu-system.am (dist_patch_DATA): Add them.
* gnu/packages/xml.scm (libxml2)[source]: Add patches.
Diffstat (limited to 'gnu/packages/patches/libxml2-bug-754947.patch')
-rw-r--r--gnu/packages/patches/libxml2-bug-754947.patch103
1 files changed, 103 insertions, 0 deletions
diff --git a/gnu/packages/patches/libxml2-bug-754947.patch b/gnu/packages/patches/libxml2-bug-754947.patch
new file mode 100644
index 0000000000..5edbc5fcc1
--- /dev/null
+++ b/gnu/packages/patches/libxml2-bug-754947.patch
@@ -0,0 +1,103 @@
+From 4a5d80aded1da94cd55294e7207109712201b75b Mon Sep 17 00:00:00 2001
+From: Daniel Veillard <veillard@redhat.com>
+Date: Fri, 18 Sep 2015 15:06:46 +0800
+Subject: [PATCH] Fix a bug in CData error handling in the push parser
+
+For https://bugzilla.gnome.org/show_bug.cgi?id=754947
+
+The checking function was returning incorrect args in some cases
+Adds the test to teh reg suite and fix one of the existing test output
+---
+ parser.c                     | 6 +++---
+ result/errors/754947.xml     | 0
+ result/errors/754947.xml.err | 7 +++++++
+ result/errors/754947.xml.str | 5 +++++
+ result/errors/cdata.xml.str  | 4 ++--
+ test/errors/754947.xml       | 1 +
+ 6 files changed, 18 insertions(+), 5 deletions(-)
+ create mode 100644 result/errors/754947.xml
+ create mode 100644 result/errors/754947.xml.err
+ create mode 100644 result/errors/754947.xml.str
+ create mode 100644 test/errors/754947.xml
+
+diff --git a/parser.c b/parser.c
+index fd29a39..f1724a9 100644
+--- a/parser.c
++++ b/parser.c
+@@ -11192,7 +11192,7 @@ xmlCheckCdataPush(const xmlChar *utf, int len) {
+ 	    else
+ 	        return(-ix);
+ 	} else if ((c & 0xe0) == 0xc0) {/* 2-byte code, starts with 110 */
+-	    if (ix + 2 > len) return(ix);
++	    if (ix + 2 > len) return(-ix);
+ 	    if ((utf[ix+1] & 0xc0 ) != 0x80)
+ 	        return(-ix);
+ 	    codepoint = (utf[ix] & 0x1f) << 6;
+@@ -11201,7 +11201,7 @@ xmlCheckCdataPush(const xmlChar *utf, int len) {
+ 	        return(-ix);
+ 	    ix += 2;
+ 	} else if ((c & 0xf0) == 0xe0) {/* 3-byte code, starts with 1110 */
+-	    if (ix + 3 > len) return(ix);
++	    if (ix + 3 > len) return(-ix);
+ 	    if (((utf[ix+1] & 0xc0) != 0x80) ||
+ 	        ((utf[ix+2] & 0xc0) != 0x80))
+ 		    return(-ix);
+@@ -11212,7 +11212,7 @@ xmlCheckCdataPush(const xmlChar *utf, int len) {
+ 	        return(-ix);
+ 	    ix += 3;
+ 	} else if ((c & 0xf8) == 0xf0) {/* 4-byte code, starts with 11110 */
+-	    if (ix + 4 > len) return(ix);
++	    if (ix + 4 > len) return(-ix);
+ 	    if (((utf[ix+1] & 0xc0) != 0x80) ||
+ 	        ((utf[ix+2] & 0xc0) != 0x80) ||
+ 		((utf[ix+3] & 0xc0) != 0x80))
+diff --git a/result/errors/754947.xml b/result/errors/754947.xml
+new file mode 100644
+index 0000000..e69de29
+diff --git a/result/errors/754947.xml.err b/result/errors/754947.xml.err
+new file mode 100644
+index 0000000..f45cb5a
+--- /dev/null
++++ b/result/errors/754947.xml.err
+@@ -0,0 +1,7 @@
++./test/errors/754947.xml:1: parser error : Input is not proper UTF-8, indicate encoding !
++Bytes: 0xEE 0x5D 0x5D 0x3E
++<d><![CDATA[0000000000000î]]>
++                         ^
++./test/errors/754947.xml:1: parser error : Premature end of data in tag d line 1
++<d><![CDATA[0000000000000î]]>
++                             ^
+diff --git a/result/errors/754947.xml.str b/result/errors/754947.xml.str
+new file mode 100644
+index 0000000..4d2f52e
+--- /dev/null
++++ b/result/errors/754947.xml.str
+@@ -0,0 +1,5 @@
++./test/errors/754947.xml:1: parser error : Input is not proper UTF-8, indicate encoding !
++Bytes: 0xEE 0x5D 0x5D 0x3E
++<d><![CDATA[0000000000000î]]>
++                         ^
++./test/errors/754947.xml : failed to parse
+diff --git a/result/errors/cdata.xml.str b/result/errors/cdata.xml.str
+index e043441..cf83d2b 100644
+--- a/result/errors/cdata.xml.str
++++ b/result/errors/cdata.xml.str
+@@ -1,5 +1,5 @@
+ ./test/errors/cdata.xml:2: parser error : Input is not proper UTF-8, indicate encoding !
+-Bytes: 0x5B 0x43 0xE1 0x72
++Bytes: 0xE1 0x72 0x5D 0x5D
+ <A><![CDATA[Cár]]></A>
+-           ^
++             ^
+ ./test/errors/cdata.xml : failed to parse
+diff --git a/test/errors/754947.xml b/test/errors/754947.xml
+new file mode 100644
+index 0000000..bd9997e
+--- /dev/null
++++ b/test/errors/754947.xml
+@@ -0,0 +1 @@
++<d><![CDATA[0000000000000î]]>
+\ No newline at end of file
+-- 
+2.6.3
+