summaryrefslogtreecommitdiffstats
path: root/main/libxml2
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2012-11-02 08:31:20 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2012-11-02 08:36:12 +0000
commit2ddd187408d775459ea0a0ec3f5eaff72f4db755 (patch)
treea8def6fa5950338a540a36a589c53f4d5d3976f7 /main/libxml2
parent0dcc88e820888ae9198189992c32510b878ec0b1 (diff)
downloadaports-2ddd187408d775459ea0a0ec3f5eaff72f4db755.tar.bz2
aports-2ddd187408d775459ea0a0ec3f5eaff72f4db755.tar.xz
main/libxml2: upgrade to 2.9.0
fixes #1438
Diffstat (limited to 'main/libxml2')
-rw-r--r--main/libxml2/APKBUILD12
-rw-r--r--main/libxml2/libxml2-entities-local-buffers-size.patch97
-rw-r--r--main/libxml2/libxml2-entities-local-buffers-size2.patch21
-rw-r--r--main/libxml2/libxml2-parser-local-buffers-size.patch260
4 files changed, 3 insertions, 387 deletions
diff --git a/main/libxml2/APKBUILD b/main/libxml2/APKBUILD
index 7c31766c1..0da46a37d 100644
--- a/main/libxml2/APKBUILD
+++ b/main/libxml2/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer: Carlo Landmeter <clandmeter@gmail.com>
pkgname=libxml2
-pkgver=2.8.0
-pkgrel=1
+pkgver=2.9.0
+pkgrel=0
pkgdesc="XML parsing library, version 2"
url="http://www.xmlsoft.org/"
arch="all"
@@ -12,9 +12,6 @@ depends_dev="zlib-dev python-dev"
makedepends="zlib-dev python-dev"
subpackages="$pkgname-doc $pkgname-dev py-$pkgname:py $pkgname-utils"
source="ftp://ftp.xmlsoft.org/${pkgname}/${pkgname}-${pkgver}.tar.gz
- libxml2-entities-local-buffers-size.patch
- libxml2-entities-local-buffers-size2.patch
- libxml2-parser-local-buffers-size.patch
"
options="!strip"
@@ -62,7 +59,4 @@ utils() {
mv "$pkgdir"/usr/bin "$subpkgdir"/usr/
}
-md5sums="c62106f02ee00b6437f0fb9d370c1093 libxml2-2.8.0.tar.gz
-c8c789a4fbdae599a47ecbfa32b889d7 libxml2-entities-local-buffers-size.patch
-cba1201e77dc0f3e337d9ff146a2666e libxml2-entities-local-buffers-size2.patch
-6c5c7a125dddb616feb1b2f4254bf467 libxml2-parser-local-buffers-size.patch"
+md5sums="5b9bebf4f5d2200ae2c4efe8fa6103f7 libxml2-2.9.0.tar.gz"
diff --git a/main/libxml2/libxml2-entities-local-buffers-size.patch b/main/libxml2/libxml2-entities-local-buffers-size.patch
deleted file mode 100644
index 89817d816..000000000
--- a/main/libxml2/libxml2-entities-local-buffers-size.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-From 4f9fdc709c4861c390cd84e2ed1fd878b3442e28 Mon Sep 17 00:00:00 2001
-From: Daniel Veillard <veillard@redhat.com>
-Date: Wed, 18 Jul 2012 03:38:17 +0000
-Subject: Fix entities local buffers size problems
-
----
-diff --git a/entities.c b/entities.c
-index 6aef49f..859ec3b 100644
---- a/entities.c
-+++ b/entities.c
-@@ -528,13 +528,13 @@ xmlGetDocEntity(xmlDocPtr doc, const xmlChar *name) {
- * Macro used to grow the current buffer.
- */
- #define growBufferReentrant() { \
-- buffer_size *= 2; \
-- buffer = (xmlChar *) \
-- xmlRealloc(buffer, buffer_size * sizeof(xmlChar)); \
-- if (buffer == NULL) { \
-- xmlEntitiesErrMemory("xmlEncodeEntitiesReentrant: realloc failed");\
-- return(NULL); \
-- } \
-+ xmlChar *tmp; \
-+ size_t new_size = buffer_size *= 2; \
-+ if (new_size < buffer_size) goto mem_error; \
-+ tmp = (xmlChar *) xmlRealloc(buffer, new_size); \
-+ if (tmp == NULL) goto mem_error; \
-+ buffer = tmp; \
-+ buffer_size = new_size; \
- }
-
-
-@@ -555,7 +555,7 @@ xmlEncodeEntitiesReentrant(xmlDocPtr doc, const xmlChar *input) {
- const xmlChar *cur = input;
- xmlChar *buffer = NULL;
- xmlChar *out = NULL;
-- int buffer_size = 0;
-+ size_t buffer_size = 0;
- int html = 0;
-
- if (input == NULL) return(NULL);
-@@ -574,8 +574,8 @@ xmlEncodeEntitiesReentrant(xmlDocPtr doc, const xmlChar *input) {
- out = buffer;
-
- while (*cur != '\0') {
-- if (out - buffer > buffer_size - 100) {
-- int indx = out - buffer;
-+ size_t indx = out - buffer;
-+ if (indx + 100 > buffer_size) {
-
- growBufferReentrant();
- out = &buffer[indx];
-@@ -692,6 +692,11 @@ xmlEncodeEntitiesReentrant(xmlDocPtr doc, const xmlChar *input) {
- }
- *out = 0;
- return(buffer);
-+
-+mem_error:
-+ xmlEntitiesErrMemory("xmlEncodeEntitiesReentrant: realloc failed");
-+ xmlFree(buffer);
-+ return(NULL);
- }
-
- /**
-@@ -709,7 +714,7 @@ xmlEncodeSpecialChars(xmlDocPtr doc ATTRIBUTE_UNUSED, const xmlChar *input) {
- const xmlChar *cur = input;
- xmlChar *buffer = NULL;
- xmlChar *out = NULL;
-- int buffer_size = 0;
-+ size_t buffer_size = 0;
- if (input == NULL) return(NULL);
-
- /*
-@@ -724,8 +729,8 @@ xmlEncodeSpecialChars(xmlDocPtr doc ATTRIBUTE_UNUSED, const xmlChar *input) {
- out = buffer;
-
- while (*cur != '\0') {
-- if (out - buffer > buffer_size - 10) {
-- int indx = out - buffer;
-+ size_t indx = out - buffer;
-+ if (indx + 10 > buffer_size) {
-
- growBufferReentrant();
- out = &buffer[indx];
-@@ -774,6 +779,11 @@ xmlEncodeSpecialChars(xmlDocPtr doc ATTRIBUTE_UNUSED, const xmlChar *input) {
- }
- *out = 0;
- return(buffer);
-+
-+mem_error:
-+ xmlEntitiesErrMemory("xmlEncodeSpecialChars: realloc failed");
-+ xmlFree(buffer);
-+ return(NULL);
- }
-
- /**
---
-cgit v0.9.0.2
diff --git a/main/libxml2/libxml2-entities-local-buffers-size2.patch b/main/libxml2/libxml2-entities-local-buffers-size2.patch
deleted file mode 100644
index f3cc8b65e..000000000
--- a/main/libxml2/libxml2-entities-local-buffers-size2.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-From baaf03f80f817bb34c421421e6cb4d68c353ac9a Mon Sep 17 00:00:00 2001
-From: Aron Xu <happyaron.xu@gmail.com>
-Date: Fri, 20 Jul 2012 07:41:34 +0000
-Subject: Fix an error in previous commit
-
----
-diff --git a/entities.c b/entities.c
-index 859ec3b..7d06820 100644
---- a/entities.c
-+++ b/entities.c
-@@ -529,7 +529,7 @@ xmlGetDocEntity(xmlDocPtr doc, const xmlChar *name) {
- */
- #define growBufferReentrant() { \
- xmlChar *tmp; \
-- size_t new_size = buffer_size *= 2; \
-+ size_t new_size = buffer_size * 2; \
- if (new_size < buffer_size) goto mem_error; \
- tmp = (xmlChar *) xmlRealloc(buffer, new_size); \
- if (tmp == NULL) goto mem_error; \
---
-cgit v0.9.0.2
diff --git a/main/libxml2/libxml2-parser-local-buffers-size.patch b/main/libxml2/libxml2-parser-local-buffers-size.patch
deleted file mode 100644
index 5b9adabac..000000000
--- a/main/libxml2/libxml2-parser-local-buffers-size.patch
+++ /dev/null
@@ -1,260 +0,0 @@
-From 459eeb9dc752d5185f57ff6b135027f11981a626 Mon Sep 17 00:00:00 2001
-From: Daniel Veillard <veillard@redhat.com>
-Date: Tue, 17 Jul 2012 08:19:17 +0000
-Subject: Fix parser local buffers size problems
-
----
-diff --git a/parser.c b/parser.c
-index 2c38fae..9863275 100644
---- a/parser.c
-+++ b/parser.c
-@@ -40,6 +40,7 @@
- #endif
-
- #include <stdlib.h>
-+#include <limits.h>
- #include <string.h>
- #include <stdarg.h>
- #include <libxml/xmlmemory.h>
-@@ -117,10 +118,10 @@ xmlCreateEntityParserCtxtInternal(const xmlChar *URL, const xmlChar *ID,
- * parser option.
- */
- static int
--xmlParserEntityCheck(xmlParserCtxtPtr ctxt, unsigned long size,
-+xmlParserEntityCheck(xmlParserCtxtPtr ctxt, size_t size,
- xmlEntityPtr ent)
- {
-- unsigned long consumed = 0;
-+ size_t consumed = 0;
-
- if ((ctxt == NULL) || (ctxt->options & XML_PARSE_HUGE))
- return (0);
-@@ -2589,15 +2590,17 @@ xmlParserHandlePEReference(xmlParserCtxtPtr ctxt) {
-
- /*
- * Macro used to grow the current buffer.
-+ * buffer##_size is expected to be a size_t
-+ * mem_error: is expected to handle memory allocation failures
- */
- #define growBuffer(buffer, n) { \
- xmlChar *tmp; \
-- buffer##_size *= 2; \
-- buffer##_size += n; \
-- tmp = (xmlChar *) \
-- xmlRealloc(buffer, buffer##_size * sizeof(xmlChar)); \
-+ size_t new_size = buffer##_size * 2 + n; \
-+ if (new_size < buffer##_size) goto mem_error; \
-+ tmp = (xmlChar *) xmlRealloc(buffer, new_size); \
- if (tmp == NULL) goto mem_error; \
- buffer = tmp; \
-+ buffer##_size = new_size; \
- }
-
- /**
-@@ -2623,14 +2626,14 @@ xmlChar *
- xmlStringLenDecodeEntities(xmlParserCtxtPtr ctxt, const xmlChar *str, int len,
- int what, xmlChar end, xmlChar end2, xmlChar end3) {
- xmlChar *buffer = NULL;
-- int buffer_size = 0;
-+ size_t buffer_size = 0;
-+ size_t nbchars = 0;
-
- xmlChar *current = NULL;
- xmlChar *rep = NULL;
- const xmlChar *last;
- xmlEntityPtr ent;
- int c,l;
-- int nbchars = 0;
-
- if ((ctxt == NULL) || (str == NULL) || (len < 0))
- return(NULL);
-@@ -2647,7 +2650,7 @@ xmlStringLenDecodeEntities(xmlParserCtxtPtr ctxt, const xmlChar *str, int len,
- * allocate a translation buffer.
- */
- buffer_size = XML_PARSER_BIG_BUFFER_SIZE;
-- buffer = (xmlChar *) xmlMallocAtomic(buffer_size * sizeof(xmlChar));
-+ buffer = (xmlChar *) xmlMallocAtomic(buffer_size);
- if (buffer == NULL) goto mem_error;
-
- /*
-@@ -2667,7 +2670,7 @@ xmlStringLenDecodeEntities(xmlParserCtxtPtr ctxt, const xmlChar *str, int len,
- if (val != 0) {
- COPY_BUF(0,buffer,nbchars,val);
- }
-- if (nbchars > buffer_size - XML_PARSER_BUFFER_SIZE) {
-+ if (nbchars + XML_PARSER_BUFFER_SIZE > buffer_size) {
- growBuffer(buffer, XML_PARSER_BUFFER_SIZE);
- }
- } else if ((c == '&') && (what & XML_SUBSTITUTE_REF)) {
-@@ -2685,7 +2688,7 @@ xmlStringLenDecodeEntities(xmlParserCtxtPtr ctxt, const xmlChar *str, int len,
- (ent->etype == XML_INTERNAL_PREDEFINED_ENTITY)) {
- if (ent->content != NULL) {
- COPY_BUF(0,buffer,nbchars,ent->content[0]);
-- if (nbchars > buffer_size - XML_PARSER_BUFFER_SIZE) {
-+ if (nbchars + XML_PARSER_BUFFER_SIZE > buffer_size) {
- growBuffer(buffer, XML_PARSER_BUFFER_SIZE);
- }
- } else {
-@@ -2702,8 +2705,7 @@ xmlStringLenDecodeEntities(xmlParserCtxtPtr ctxt, const xmlChar *str, int len,
- current = rep;
- while (*current != 0) { /* non input consuming loop */
- buffer[nbchars++] = *current++;
-- if (nbchars >
-- buffer_size - XML_PARSER_BUFFER_SIZE) {
-+ if (nbchars + XML_PARSER_BUFFER_SIZE > buffer_size) {
- if (xmlParserEntityCheck(ctxt, nbchars, ent))
- goto int_error;
- growBuffer(buffer, XML_PARSER_BUFFER_SIZE);
-@@ -2717,7 +2719,7 @@ xmlStringLenDecodeEntities(xmlParserCtxtPtr ctxt, const xmlChar *str, int len,
- const xmlChar *cur = ent->name;
-
- buffer[nbchars++] = '&';
-- if (nbchars > buffer_size - i - XML_PARSER_BUFFER_SIZE) {
-+ if (nbchars + i + XML_PARSER_BUFFER_SIZE > buffer_size) {
- growBuffer(buffer, i + XML_PARSER_BUFFER_SIZE);
- }
- for (;i > 0;i--)
-@@ -2745,8 +2747,7 @@ xmlStringLenDecodeEntities(xmlParserCtxtPtr ctxt, const xmlChar *str, int len,
- current = rep;
- while (*current != 0) { /* non input consuming loop */
- buffer[nbchars++] = *current++;
-- if (nbchars >
-- buffer_size - XML_PARSER_BUFFER_SIZE) {
-+ if (nbchars + XML_PARSER_BUFFER_SIZE > buffer_size) {
- if (xmlParserEntityCheck(ctxt, nbchars, ent))
- goto int_error;
- growBuffer(buffer, XML_PARSER_BUFFER_SIZE);
-@@ -2759,8 +2760,8 @@ xmlStringLenDecodeEntities(xmlParserCtxtPtr ctxt, const xmlChar *str, int len,
- } else {
- COPY_BUF(l,buffer,nbchars,c);
- str += l;
-- if (nbchars > buffer_size - XML_PARSER_BUFFER_SIZE) {
-- growBuffer(buffer, XML_PARSER_BUFFER_SIZE);
-+ if (nbchars + XML_PARSER_BUFFER_SIZE > buffer_size) {
-+ growBuffer(buffer, XML_PARSER_BUFFER_SIZE);
- }
- }
- if (str < last)
-@@ -3764,8 +3765,8 @@ xmlParseAttValueComplex(xmlParserCtxtPtr ctxt, int *attlen, int normalize) {
- xmlChar limit = 0;
- xmlChar *buf = NULL;
- xmlChar *rep = NULL;
-- int len = 0;
-- int buf_size = 0;
-+ size_t len = 0;
-+ size_t buf_size = 0;
- int c, l, in_space = 0;
- xmlChar *current = NULL;
- xmlEntityPtr ent;
-@@ -3787,7 +3788,7 @@ xmlParseAttValueComplex(xmlParserCtxtPtr ctxt, int *attlen, int normalize) {
- * allocate a translation buffer.
- */
- buf_size = XML_PARSER_BUFFER_SIZE;
-- buf = (xmlChar *) xmlMallocAtomic(buf_size * sizeof(xmlChar));
-+ buf = (xmlChar *) xmlMallocAtomic(buf_size);
- if (buf == NULL) goto mem_error;
-
- /*
-@@ -3804,7 +3805,7 @@ xmlParseAttValueComplex(xmlParserCtxtPtr ctxt, int *attlen, int normalize) {
-
- if (val == '&') {
- if (ctxt->replaceEntities) {
-- if (len > buf_size - 10) {
-+ if (len + 10 > buf_size) {
- growBuffer(buf, 10);
- }
- buf[len++] = '&';
-@@ -3813,7 +3814,7 @@ xmlParseAttValueComplex(xmlParserCtxtPtr ctxt, int *attlen, int normalize) {
- * The reparsing will be done in xmlStringGetNodeList()
- * called by the attribute() function in SAX.c
- */
-- if (len > buf_size - 10) {
-+ if (len + 10 > buf_size) {
- growBuffer(buf, 10);
- }
- buf[len++] = '&';
-@@ -3823,7 +3824,7 @@ xmlParseAttValueComplex(xmlParserCtxtPtr ctxt, int *attlen, int normalize) {
- buf[len++] = ';';
- }
- } else if (val != 0) {
-- if (len > buf_size - 10) {
-+ if (len + 10 > buf_size) {
- growBuffer(buf, 10);
- }
- len += xmlCopyChar(0, &buf[len], val);
-@@ -3835,7 +3836,7 @@ xmlParseAttValueComplex(xmlParserCtxtPtr ctxt, int *attlen, int normalize) {
- ctxt->nbentities += ent->owner;
- if ((ent != NULL) &&
- (ent->etype == XML_INTERNAL_PREDEFINED_ENTITY)) {
-- if (len > buf_size - 10) {
-+ if (len + 10 > buf_size) {
- growBuffer(buf, 10);
- }
- if ((ctxt->replaceEntities == 0) &&
-@@ -3863,7 +3864,7 @@ xmlParseAttValueComplex(xmlParserCtxtPtr ctxt, int *attlen, int normalize) {
- current++;
- } else
- buf[len++] = *current++;
-- if (len > buf_size - 10) {
-+ if (len + 10 > buf_size) {
- growBuffer(buf, 10);
- }
- }
-@@ -3871,7 +3872,7 @@ xmlParseAttValueComplex(xmlParserCtxtPtr ctxt, int *attlen, int normalize) {
- rep = NULL;
- }
- } else {
-- if (len > buf_size - 10) {
-+ if (len + 10 > buf_size) {
- growBuffer(buf, 10);
- }
- if (ent->content != NULL)
-@@ -3899,7 +3900,7 @@ xmlParseAttValueComplex(xmlParserCtxtPtr ctxt, int *attlen, int normalize) {
- * Just output the reference
- */
- buf[len++] = '&';
-- while (len > buf_size - i - 10) {
-+ while (len + i + 10 > buf_size) {
- growBuffer(buf, i + 10);
- }
- for (;i > 0;i--)
-@@ -3912,7 +3913,7 @@ xmlParseAttValueComplex(xmlParserCtxtPtr ctxt, int *attlen, int normalize) {
- if ((len != 0) || (!normalize)) {
- if ((!normalize) || (!in_space)) {
- COPY_BUF(l,buf,len,0x20);
-- while (len > buf_size - 10) {
-+ while (len + 10 > buf_size) {
- growBuffer(buf, 10);
- }
- }
-@@ -3921,7 +3922,7 @@ xmlParseAttValueComplex(xmlParserCtxtPtr ctxt, int *attlen, int normalize) {
- } else {
- in_space = 0;
- COPY_BUF(l,buf,len,c);
-- if (len > buf_size - 10) {
-+ if (len + 10 > buf_size) {
- growBuffer(buf, 10);
- }
- }
-@@ -3946,7 +3947,18 @@ xmlParseAttValueComplex(xmlParserCtxtPtr ctxt, int *attlen, int normalize) {
- }
- } else
- NEXT;
-- if (attlen != NULL) *attlen = len;
-+
-+ /*
-+ * There we potentially risk an overflow, don't allow attribute value of
-+ * lenght more than INT_MAX it is a very reasonnable assumption !
-+ */
-+ if (len >= INT_MAX) {
-+ xmlFatalErrMsg(ctxt, XML_ERR_ATTRIBUTE_NOT_FINISHED,
-+ "AttValue lenght too long\n");
-+ goto mem_error;
-+ }
-+
-+ if (attlen != NULL) *attlen = (int) len;
- return(buf);
-
- mem_error:
---
-cgit v0.9.0.2