diff options
Diffstat (limited to 'patches/source/libxml2/libxml.CVE-2011-3102.diff')
-rw-r--r-- | patches/source/libxml2/libxml.CVE-2011-3102.diff | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/patches/source/libxml2/libxml.CVE-2011-3102.diff b/patches/source/libxml2/libxml.CVE-2011-3102.diff new file mode 100644 index 00000000..4f6a92cb --- /dev/null +++ b/patches/source/libxml2/libxml.CVE-2011-3102.diff @@ -0,0 +1,39 @@ +From d8e1faeaa99c7a7c07af01c1c72de352eb590a3e Mon Sep 17 00:00:00 2001 +From: Jüri Aedla <asd@ut.ee> +Date: Mon, 07 May 2012 07:06:56 +0000 +Subject: Fix an off by one pointer access + +getting out of the range of memory allocated for xpointer decoding +--- +diff --git a/xpointer.c b/xpointer.c +index 37afa3a..0b463dd 100644 +--- a/xpointer.c ++++ b/xpointer.c +@@ -1007,21 +1007,14 @@ xmlXPtrEvalXPtrPart(xmlXPathParserContextPtr ctxt, xmlChar *name) { + NEXT; + break; + } +- *cur++ = CUR; + } else if (CUR == '(') { + level++; +- *cur++ = CUR; + } else if (CUR == '^') { +- NEXT; +- if ((CUR == ')') || (CUR == '(') || (CUR == '^')) { +- *cur++ = CUR; +- } else { +- *cur++ = '^'; +- *cur++ = CUR; +- } +- } else { +- *cur++ = CUR; ++ if ((NXT(1) == ')') || (NXT(1) == '(') || (NXT(1) == '^')) { ++ NEXT; ++ } + } ++ *cur++ = CUR; + NEXT; + } + *cur = 0; +-- +cgit v0.9.0.2 |