[arch-commits] Commit in libxml2/trunk (PKGBUILD libxml2-2.6.32.entities.patch)
Jan de Groot
jgc at archlinux.org
Fri Dec 26 16:50:56 UTC 2008
Date: Friday, December 26, 2008 @ 11:50:56
Author: jgc
Revision: 22382
upgpkg: libxml2 2.7.2-1
Modified:
libxml2/trunk/PKGBUILD
Deleted:
libxml2/trunk/libxml2-2.6.32.entities.patch
-------------------------------+
PKGBUILD | 12 --
libxml2-2.6.32.entities.patch | 216 ----------------------------------------
2 files changed, 4 insertions(+), 224 deletions(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2008-12-26 16:33:26 UTC (rev 22381)
+++ PKGBUILD 2008-12-26 16:50:56 UTC (rev 22382)
@@ -3,25 +3,21 @@
# Contributor: John Proctor <jproctor at prium.net>
pkgname=libxml2
-pkgver=2.6.32
-pkgrel=5
+pkgver=2.7.2
+pkgrel=1
pkgdesc="XML parsing library, version 2"
arch=(i686 x86_64)
license=('custom')
depends=('zlib>=1.2.3.3' 'readline>=5.2-8' 'ncurses>=5.6-7')
makedepends=('python')
options=('!libtool')
-source=(ftp://ftp.xmlsoft.org/${pkgname}/${pkgname}-${pkgver}.tar.gz
- largefile64.patch
- libxml2-2.6.32.entities.patch)
-md5sums=('2621d322c16f0257e30f0ff2b13384de' '5ad4915665608ebfa5b89f7908467a72'\
- 'dce576490467042fabff0a659ae3678b')
url="http://www.xmlsoft.org/"
+source=(ftp://ftp.xmlsoft.org/${pkgname}/${pkgname}-${pkgver}.tar.gz
+ largefile64.patch)
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
patch -Np1 -i ${srcdir}/largefile64.patch || return 1
- patch -Np0 -i ${srcdir}/libxml2-2.6.32.entities.patch || return 1
./configure --prefix=/usr --with-threads --with-history || return 1
make || return 1
make DESTDIR="${pkgdir}" install || return 1
Deleted: libxml2-2.6.32.entities.patch
===================================================================
--- libxml2-2.6.32.entities.patch 2008-12-26 16:33:26 UTC (rev 22381)
+++ libxml2-2.6.32.entities.patch 2008-12-26 16:50:56 UTC (rev 22382)
@@ -1,216 +0,0 @@
-Index: include/libxml/parser.h
-===================================================================
---- include/libxml/parser.h (revision 3771)
-+++ include/libxml/parser.h (working copy)
-@@ -297,6 +297,7 @@ struct _xmlParserCtxt {
- */
- xmlError lastError;
- xmlParserMode parseMode; /* the parser mode */
-+ unsigned long nbentities; /* number of entities references */
- };
-
- /**
-Index: parserInternals.c
-===================================================================
---- parserInternals.c (revision 3771)
-+++ parserInternals.c (working copy)
-@@ -1670,6 +1670,7 @@ xmlInitParserCtxt(xmlParserCtxtPtr ctxt)
- ctxt->depth = 0;
- ctxt->charset = XML_CHAR_ENCODING_UTF8;
- ctxt->catalogs = NULL;
-+ ctxt->nbentities = 0;
- xmlInitNodeInfoSeq(&ctxt->node_seq);
- return(0);
- }
-Index: SAX2.c
-===================================================================
---- SAX2.c (revision 3772)
-+++ SAX2.c (working copy)
-@@ -580,7 +580,8 @@ xmlSAX2GetEntity(void *ctx, const xmlCha
- return(NULL);
- }
- ret->owner = 1;
-- ret->checked = 1;
-+ if (ret->checked == 0)
-+ ret->checked = 1;
- }
- return(ret);
- }
---- parser.c.orig 2008-04-08 16:47:58.000000000 +0200
-+++ parser.c 2008-08-25 17:55:30.000000000 +0200
-@@ -2344,7 +2344,7 @@ xmlStringLenDecodeEntities(xmlParserCtxt
- return(NULL);
- last = str + len;
-
-- if (ctxt->depth > 40) {
-+ if ((ctxt->depth > 40) || (ctxt->nbentities >= 500000)) {
- xmlFatalErr(ctxt, XML_ERR_ENTITY_LOOP, NULL);
- return(NULL);
- }
-@@ -2382,6 +2382,11 @@ xmlStringLenDecodeEntities(xmlParserCtxt
- "String decoding Entity Reference: %.30s\n",
- str);
- ent = xmlParseStringEntityRef(ctxt, &str);
-+ if (ctxt->lastError.code == XML_ERR_ENTITY_LOOP)
-+ goto int_error;
-+ ctxt->nbentities++;
-+ if (ent != NULL)
-+ ctxt->nbentities += ent->checked;
- if ((ent != NULL) &&
- (ent->etype == XML_INTERNAL_PREDEFINED_ENTITY)) {
- if (ent->content != NULL) {
-@@ -2427,6 +2432,11 @@ xmlStringLenDecodeEntities(xmlParserCtxt
- xmlGenericError(xmlGenericErrorContext,
- "String decoding PE Reference: %.30s\n", str);
- ent = xmlParseStringPEReference(ctxt, &str);
-+ if (ctxt->lastError.code == XML_ERR_ENTITY_LOOP)
-+ goto int_error;
-+ ctxt->nbentities++;
-+ if (ent != NULL)
-+ ctxt->nbentities += ent->checked;
- if (ent != NULL) {
- if (ent->content == NULL) {
- if (xmlLoadEntityContent(ctxt, ent) < 0) {
-@@ -2466,6 +2476,7 @@ xmlStringLenDecodeEntities(xmlParserCtxt
-
- mem_error:
- xmlErrMemory(ctxt, NULL);
-+int_error:
- if (rep != NULL)
- xmlFree(rep);
- if (buffer != NULL)
-@@ -3280,6 +3291,9 @@ xmlParseAttValueComplex(xmlParserCtxtPtr
- }
- } else {
- ent = xmlParseEntityRef(ctxt);
-+ ctxt->nbentities++;
-+ if (ent != NULL)
-+ ctxt->nbentities += ent->checked;
- if ((ent != NULL) &&
- (ent->etype == XML_INTERNAL_PREDEFINED_ENTITY)) {
- if (len > buf_size - 10) {
-@@ -4566,6 +4580,7 @@ xmlParseEntityDecl(xmlParserCtxtPtr ctxt
- int isParameter = 0;
- xmlChar *orig = NULL;
- int skipped;
-+ unsigned long oldnbent = ctxt->nbentities;
-
- /* GROW; done in the caller */
- if (CMP8(CUR_PTR, '<', '!', 'E', 'N', 'T', 'I', 'T', 'Y')) {
-@@ -4783,6 +4798,7 @@ xmlParseEntityDecl(xmlParserCtxtPtr ctxt
- }
- }
- if (cur != NULL) {
-+ cur->checked = ctxt->nbentities - oldnbent;
- if (cur->orig != NULL)
- xmlFree(orig);
- else
-@@ -6189,6 +6205,11 @@ xmlParseReference(xmlParserCtxtPtr ctxt)
- if (ent == NULL) return;
- if (!ctxt->wellFormed)
- return;
-+ ctxt->nbentities++;
-+ if (ctxt->nbentities >= 500000) {
-+ xmlFatalErr(ctxt, XML_ERR_ENTITY_LOOP, NULL);
-+ return;
-+ }
- was_checked = ent->checked;
- if ((ent->name != NULL) &&
- (ent->etype != XML_INTERNAL_PREDEFINED_ENTITY)) {
-@@ -6249,6 +6270,7 @@ xmlParseReference(xmlParserCtxtPtr ctxt)
- xmlFreeNodeList(list);
- }
- } else {
-+ unsigned long oldnbent = ctxt->nbentities;
- /*
- * 4.3.2: An internal general parsed entity is well-formed
- * if its replacement text matches the production labeled
-@@ -6271,6 +6293,7 @@ xmlParseReference(xmlParserCtxtPtr ctxt)
- ret = xmlParseBalancedChunkMemoryInternal(ctxt,
- value, user_data, &list);
- ctxt->depth--;
-+
- } else if (ent->etype ==
- XML_EXTERNAL_GENERAL_PARSED_ENTITY) {
- ctxt->depth++;
-@@ -6283,6 +6306,7 @@ xmlParseReference(xmlParserCtxtPtr ctxt)
- xmlErrMsgStr(ctxt, XML_ERR_INTERNAL_ERROR,
- "invalid entity type found\n", NULL);
- }
-+ ent->checked = ctxt->nbentities - oldnbent;
- if (ret == XML_ERR_ENTITY_LOOP) {
- xmlFatalErr(ctxt, XML_ERR_ENTITY_LOOP, NULL);
- return;
-@@ -6339,8 +6363,10 @@ xmlParseReference(xmlParserCtxtPtr ctxt)
- list = NULL;
- }
- }
-- ent->checked = 1;
-+ if (ent->checked == 0)
-+ ent->checked = 1;
- }
-+ ctxt->nbentities += ent->checked;
-
- if (ent->children == NULL) {
- /*
-@@ -6349,7 +6375,7 @@ xmlParseReference(xmlParserCtxtPtr ctxt)
- * though parsing for first checking go though the entity
- * content to generate callbacks associated to the entity
- */
-- if (was_checked == 1) {
-+ if (was_checked != 0) {
- void *user_data;
- /*
- * This is a bit hackish but this seems the best
-@@ -11480,7 +11506,7 @@ xmlParseCtxtExternalEntity(xmlParserCtxt
-
- if (ctx == NULL) return(-1);
-
-- if (ctx->depth > 40) {
-+ if ((ctx->depth > 40) || (ctx->nbentities >= 500000)) {
- return(XML_ERR_ENTITY_LOOP);
- }
-
-@@ -11681,7 +11707,8 @@ xmlParseExternalEntityPrivate(xmlDocPtr
- xmlChar start[4];
- xmlCharEncoding enc;
-
-- if (depth > 40) {
-+ if ((depth > 40) ||
-+ ((oldctxt != NULL) && (oldctxt->nbentities >= 500000))) {
- return(XML_ERR_ENTITY_LOOP);
- }
-
-@@ -11824,6 +11851,7 @@ xmlParseExternalEntityPrivate(xmlDocPtr
- oldctxt->node_seq.maximum = ctxt->node_seq.maximum;
- oldctxt->node_seq.length = ctxt->node_seq.length;
- oldctxt->node_seq.buffer = ctxt->node_seq.buffer;
-+ oldctxt->nbentities += ctxt->nbentities;
- ctxt->node_seq.maximum = 0;
- ctxt->node_seq.length = 0;
- ctxt->node_seq.buffer = NULL;
-@@ -11924,7 +11952,7 @@ xmlParseBalancedChunkMemoryInternal(xmlP
- int size;
- xmlParserErrors ret = XML_ERR_OK;
-
-- if (oldctxt->depth > 40) {
-+ if ((oldctxt->depth > 40) || (oldctxt->nbentities >= 500000)) {
- return(XML_ERR_ENTITY_LOOP);
- }
-
-@@ -12048,6 +12076,7 @@ xmlParseBalancedChunkMemoryInternal(xmlP
- ctxt->myDoc->last = last;
- }
-
-+ oldctxt->nbentities += ctxt->nbentities;
- ctxt->sax = oldsax;
- ctxt->dict = NULL;
- ctxt->attsDefault = NULL;
-@@ -13363,6 +13392,7 @@ xmlCtxtReset(xmlParserCtxtPtr ctxt)
- ctxt->depth = 0;
- ctxt->charset = XML_CHAR_ENCODING_UTF8;
- ctxt->catalogs = NULL;
-+ ctxt->nbentities = 0;
- xmlInitNodeInfoSeq(&ctxt->node_seq);
-
- if (ctxt->attsDefault != NULL) {
More information about the arch-commits
mailing list