Просмотр исходного кода

fix segfaulting with a vendor-based patch

Ralf S. Engelschall 23 лет назад
Родитель
Сommit
162adcbba6
2 измененных файлов с 58 добавлено и 1 удалено
  1. 55 0
      libxml/libxml.patch
  2. 3 1
      libxml/libxml.spec

+ 55 - 0
libxml/libxml.patch

@@ -0,0 +1,55 @@
+This patch is from CVS and fixes a seg fault due to some bad memory
+management.  This will be fixed in the next release.
+
+--- valid.c.orig	Wed Oct  9 12:03:48 2002
++++ valid.c	Wed Oct  9 12:06:17 2002
+@@ -4551,9 +4551,9 @@
+        xmlElementPtr elemDecl, int warn, xmlNodePtr parent) {
+     int ret = 1;
+ #ifndef  LIBXML_REGEXP_ENABLED
+-    xmlNodePtr last = NULL;
++    xmlNodePtr last = NULL, last = NULL, tmp;
+ #endif
+-    xmlNodePtr repl = NULL, cur, tmp;
++    xmlNodePtr cur;
+     xmlElementContentPtr cont;
+     const xmlChar *name;
+ 
+@@ -4571,6 +4571,9 @@
+     } else {
+ 	xmlRegExecCtxtPtr exec;
+ 
++	ctxt->nodeMax = 0;
++	ctxt->nodeNr = 0;
++	ctxt->nodeTab = NULL;
+ 	exec = xmlRegNewExecCtxt(elemDecl->contModel, NULL, NULL);
+ 	if (exec != NULL) {
+ 	    cur = child;
+@@ -4762,9 +4765,11 @@
+ 	    expr[0] = 0;
+ 	    xmlSnprintfElementContent(expr, 5000, cont, 1);
+ 	    list[0] = 0;
++#ifndef LIBXML_REGEXP_ENABLED
+ 	    if (repl != NULL)
+ 		xmlSnprintfElements(list, 5000, repl, 1);
+ 	    else
++#endif /* LIBXML_REGEXP_ENABLED */
+ 		xmlSnprintfElements(list, 5000, child, 1);
+ 
+ 	    if (name != NULL) {
+@@ -4797,7 +4802,6 @@
+ 
+ #ifndef  LIBXML_REGEXP_ENABLED
+ done:
+-#endif
+     /*
+      * Deallocate the copy if done, and free up the validation stack
+      */
+@@ -4811,6 +4815,7 @@
+ 	xmlFree(ctxt->vstateTab);
+ 	ctxt->vstateTab = NULL;
+     }
++#endif
+     ctxt->nodeMax = 0;
+     ctxt->nodeNr = 0;
+     if (ctxt->nodeTab != NULL) {

+ 3 - 1
libxml/libxml.spec

@@ -33,10 +33,11 @@ Distribution: OpenPKG [BASE]
 Group:        SGML
 License:      LGPL
 Version:      2.4.25
-Release:      20020927
+Release:      20021010
 
 #   list of sources
 Source0:      ftp://xmlsoft.org/libxml2-%{version}.tar.gz
+Patch0:       libxml.patch
 
 #   build information
 Prefix:       %{l_prefix}
@@ -54,6 +55,7 @@ AutoReqProv:  no
 
 %prep
     %setup -q -n libxml2-%{version}
+    %patch -p0
 
 %build
     CC="%{l_cc}" \