Upstream release of 2.7.5, Daniel
This commit is contained in:
		
							parent
							
								
									affa4e3873
								
							
						
					
					
						commit
						7f8d3e3280
					
				| @ -23,3 +23,4 @@ libxml2-2.7.1.tar.gz | ||||
| libxml2-2.7.2.tar.gz | ||||
| libxml2-2.7.3.tar.gz | ||||
| libxml2-2.7.4.tar.gz | ||||
| libxml2-2.7.5.tar.gz | ||||
|  | ||||
| @ -1,159 +0,0 @@ | ||||
| diff --git a/parser.c b/parser.c
 | ||||
| index a476060..b404722 100644
 | ||||
| --- a/parser.c
 | ||||
| +++ b/parser.c
 | ||||
| @@ -5323,7 +5323,8 @@ xmlParseNotationType(xmlParserCtxtPtr ctxt) {
 | ||||
|  	if (name == NULL) { | ||||
|  	    xmlFatalErrMsg(ctxt, XML_ERR_NAME_REQUIRED, | ||||
|  			   "Name expected in NOTATION declaration\n"); | ||||
| -	    return(ret);
 | ||||
| +            xmlFreeEnumeration(ret);
 | ||||
| +	    return(NULL);
 | ||||
|  	} | ||||
|  	tmp = ret; | ||||
|  	while (tmp != NULL) { | ||||
| @@ -5339,7 +5340,10 @@ xmlParseNotationType(xmlParserCtxtPtr ctxt) {
 | ||||
|  	} | ||||
|  	if (tmp == NULL) { | ||||
|  	    cur = xmlCreateEnumeration(name); | ||||
| -	    if (cur == NULL) return(ret);
 | ||||
| +	    if (cur == NULL) {
 | ||||
| +                xmlFreeEnumeration(ret);
 | ||||
| +                return(NULL);
 | ||||
| +            }
 | ||||
|  	    if (last == NULL) ret = last = cur; | ||||
|  	    else { | ||||
|  		last->next = cur; | ||||
| @@ -5350,9 +5354,8 @@ xmlParseNotationType(xmlParserCtxtPtr ctxt) {
 | ||||
|      } while (RAW == '|'); | ||||
|      if (RAW != ')') { | ||||
|  	xmlFatalErr(ctxt, XML_ERR_NOTATION_NOT_FINISHED, NULL); | ||||
| -	if ((last != NULL) && (last != ret))
 | ||||
| -	    xmlFreeEnumeration(last);
 | ||||
| -	return(ret);
 | ||||
| +        xmlFreeEnumeration(ret);
 | ||||
| +	return(NULL);
 | ||||
|      } | ||||
|      NEXT; | ||||
|      return(ret); | ||||
| @@ -5407,7 +5410,10 @@ xmlParseEnumerationType(xmlParserCtxtPtr ctxt) {
 | ||||
|  	    cur = xmlCreateEnumeration(name); | ||||
|  	    if (!xmlDictOwns(ctxt->dict, name)) | ||||
|  		xmlFree(name); | ||||
| -	    if (cur == NULL) return(ret);
 | ||||
| +	    if (cur == NULL) {
 | ||||
| +                xmlFreeEnumeration(ret);
 | ||||
| +                return(NULL);
 | ||||
| +            }
 | ||||
|  	    if (last == NULL) ret = last = cur; | ||||
|  	    else { | ||||
|  		last->next = cur; | ||||
| @@ -5775,9 +5781,10 @@ xmlParseElementMixedContentDecl(xmlParserCtxtPtr ctxt, int inputchk) {
 | ||||
|  } | ||||
|   | ||||
|  /** | ||||
| - * xmlParseElementChildrenContentDecl:
 | ||||
| + * xmlParseElementChildrenContentDeclPriv:
 | ||||
|   * @ctxt:  an XML parser context | ||||
|   * @inputchk:  the input used for the current entity, needed for boundary checks | ||||
| + * @depth: the level of recursion
 | ||||
|   * | ||||
|   * parse the declaration for a Mixed Element content | ||||
|   * The leading '(' and spaces have been skipped in xmlParseElementContentDecl | ||||
| @@ -5805,12 +5812,20 @@ xmlParseElementMixedContentDecl(xmlParserCtxtPtr ctxt, int inputchk) {
 | ||||
|   * Returns the tree of xmlElementContentPtr describing the element  | ||||
|   *          hierarchy. | ||||
|   */ | ||||
| -xmlElementContentPtr
 | ||||
| -xmlParseElementChildrenContentDecl (xmlParserCtxtPtr ctxt, int inputchk) {
 | ||||
| +static xmlElementContentPtr
 | ||||
| +xmlParseElementChildrenContentDeclPriv(xmlParserCtxtPtr ctxt, int inputchk,
 | ||||
| +                                       int depth) {
 | ||||
|      xmlElementContentPtr ret = NULL, cur = NULL, last = NULL, op = NULL; | ||||
|      const xmlChar *elem; | ||||
|      xmlChar type = 0; | ||||
|   | ||||
| +    if (((depth > 128) && ((ctxt->options & XML_PARSE_HUGE) == 0)) ||
 | ||||
| +        (depth >  2048)) {
 | ||||
| +        xmlFatalErrMsgInt(ctxt, XML_ERR_ELEMCONTENT_NOT_FINISHED,
 | ||||
| +"xmlParseElementChildrenContentDecl : depth %d too deep, use XML_PARSE_HUGE\n",
 | ||||
| +                          depth);
 | ||||
| +	return(NULL);
 | ||||
| +    }
 | ||||
|      SKIP_BLANKS; | ||||
|      GROW; | ||||
|      if (RAW == '(') { | ||||
| @@ -5819,7 +5834,8 @@ xmlParseElementChildrenContentDecl (xmlParserCtxtPtr ctxt, int inputchk) {
 | ||||
|          /* Recurse on first child */ | ||||
|  	NEXT; | ||||
|  	SKIP_BLANKS; | ||||
| -        cur = ret = xmlParseElementChildrenContentDecl(ctxt, inputid);
 | ||||
| +        cur = ret = xmlParseElementChildrenContentDeclPriv(ctxt, inputid,
 | ||||
| +                                                           depth + 1);
 | ||||
|  	SKIP_BLANKS; | ||||
|  	GROW; | ||||
|      } else { | ||||
| @@ -5951,7 +5967,8 @@ xmlParseElementChildrenContentDecl (xmlParserCtxtPtr ctxt, int inputchk) {
 | ||||
|  	    /* Recurse on second child */ | ||||
|  	    NEXT; | ||||
|  	    SKIP_BLANKS; | ||||
| -	    last = xmlParseElementChildrenContentDecl(ctxt, inputid);
 | ||||
| +	    last = xmlParseElementChildrenContentDeclPriv(ctxt, inputid,
 | ||||
| +                                                          depth + 1);
 | ||||
|  	    SKIP_BLANKS; | ||||
|  	} else { | ||||
|  	    elem = xmlParseName(ctxt); | ||||
| @@ -6062,6 +6079,44 @@ xmlParseElementChildrenContentDecl (xmlParserCtxtPtr ctxt, int inputchk) {
 | ||||
|  } | ||||
|   | ||||
|  /** | ||||
| + *
 | ||||
| + * xmlParseElementChildrenContentDecl:
 | ||||
| + * @ctxt:  an XML parser context
 | ||||
| + * @inputchk:  the input used for the current entity, needed for boundary checks
 | ||||
| + * @depth: the level of recursion
 | ||||
| + *
 | ||||
| + * parse the declaration for a Mixed Element content
 | ||||
| + * The leading '(' and spaces have been skipped in xmlParseElementContentDecl
 | ||||
| + *
 | ||||
| + * [47] children ::= (choice | seq) ('?' | '*' | '+')?
 | ||||
| + *
 | ||||
| + * [48] cp ::= (Name | choice | seq) ('?' | '*' | '+')?
 | ||||
| + *
 | ||||
| + * [49] choice ::= '(' S? cp ( S? '|' S? cp )* S? ')'
 | ||||
| + *
 | ||||
| + * [50] seq ::= '(' S? cp ( S? ',' S? cp )* S? ')'
 | ||||
| + *
 | ||||
| + * [ VC: Proper Group/PE Nesting ] applies to [49] and [50]
 | ||||
| + * TODO Parameter-entity replacement text must be properly nested
 | ||||
| + *	with parenthesized groups. That is to say, if either of the
 | ||||
| + *	opening or closing parentheses in a choice, seq, or Mixed
 | ||||
| + *	construct is contained in the replacement text for a parameter
 | ||||
| + *	entity, both must be contained in the same replacement text. For
 | ||||
| + *	interoperability, if a parameter-entity reference appears in a
 | ||||
| + *	choice, seq, or Mixed construct, its replacement text should not
 | ||||
| + *	be empty, and neither the first nor last non-blank character of
 | ||||
| + *	the replacement text should be a connector (| or ,).
 | ||||
| + *
 | ||||
| + * Returns the tree of xmlElementContentPtr describing the element 
 | ||||
| + *          hierarchy.
 | ||||
| + */
 | ||||
| +xmlElementContentPtr
 | ||||
| +xmlParseElementChildrenContentDecl(xmlParserCtxtPtr ctxt, int inputchk) {
 | ||||
| +    /* stub left for API/ABI compat */
 | ||||
| +    return(xmlParseElementChildrenContentDeclPriv(ctxt, inputchk, 1));
 | ||||
| +}
 | ||||
| +
 | ||||
| +/**
 | ||||
|   * xmlParseElementContentDecl: | ||||
|   * @ctxt:  an XML parser context | ||||
|   * @name:  the name of the element being defined. | ||||
| @@ -6097,7 +6152,7 @@ xmlParseElementContentDecl(xmlParserCtxtPtr ctxt, const xmlChar *name,
 | ||||
|          tree = xmlParseElementMixedContentDecl(ctxt, inputid); | ||||
|  	res = XML_ELEMENT_TYPE_MIXED; | ||||
|      } else { | ||||
| -        tree = xmlParseElementChildrenContentDecl(ctxt, inputid);
 | ||||
| +        tree = xmlParseElementChildrenContentDeclPriv(ctxt, inputid, 1);
 | ||||
|  	res = XML_ELEMENT_TYPE_ELEMENT; | ||||
|      } | ||||
|      SKIP_BLANKS; | ||||
| @ -1,33 +0,0 @@ | ||||
| commit 9d3d141c412baa5c713ad3df48f1a4d179e07b05 | ||||
| Author: Daniel Veillard <veillard@redhat.com> | ||||
| Date:   Tue Sep 15 18:41:30 2009 +0200 | ||||
| 
 | ||||
|     Fix a parsing problem with little data at startup | ||||
|      | ||||
|     * parser.c: inkscape extension loader (and possibly others) feed | ||||
|       data to the parser very slowly, 0 at start, 4 bytes on first GROW | ||||
|       and this broke after the fix for | ||||
|       https://bugzilla.gnome.org/show_bug.cgi?id=566012 | ||||
|       http://git.gnome.org/cgit/libxml2/commit/?id=7e385bd4e28a0cc12b6b26ed178c620e3c3ab8d8 | ||||
|       leading to another bug | ||||
|       https://bugzilla.redhat.com/show_bug.cgi?id=523002 | ||||
|       this detects the situation and GROW when needed for proper processing. | ||||
| 
 | ||||
| diff --git a/parser.c b/parser.c
 | ||||
| index e415339..b41dcc3 100644
 | ||||
| --- a/parser.c
 | ||||
| +++ b/parser.c
 | ||||
| @@ -10130,8 +10130,12 @@ xmlParseDocument(xmlParserCtxtPtr ctxt) {
 | ||||
|      /* | ||||
|       * Check for the XMLDecl in the Prolog. | ||||
|       * do not GROW here to avoid the detected encoder to decode more | ||||
| -     * than just the first line
 | ||||
| +     * than just the first line, unless the amount of data is really
 | ||||
| +     * too small to hold "<?xml version="1.0" encoding="foo"
 | ||||
|       */ | ||||
| +    if ((ctxt->input->end - ctxt->input->cur) < 35) {
 | ||||
| +       GROW;
 | ||||
| +    }
 | ||||
|      if ((CMP5(CUR_PTR, '<', '?', 'x', 'm', 'l')) && (IS_BLANK_CH(NXT(5)))) { | ||||
|   | ||||
|  	/* | ||||
							
								
								
									
										11
									
								
								libxml2.spec
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								libxml2.spec
									
									
									
									
									
								
							| @ -1,7 +1,7 @@ | ||||
| Summary: Library providing XML and HTML support | ||||
| Name: libxml2 | ||||
| Version: 2.7.4 | ||||
| Release: 2%{?dist}%{?extra_release} | ||||
| Version: 2.7.5 | ||||
| Release: 1%{?dist}%{?extra_release} | ||||
| License: MIT | ||||
| Group: Development/Libraries | ||||
| Source: ftp://xmlsoft.org/libxml2/libxml2-%{version}.tar.gz | ||||
| @ -9,7 +9,6 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-root | ||||
| BuildRequires: python python-devel zlib-devel pkgconfig | ||||
| URL: http://xmlsoft.org/ | ||||
| Patch0: libxml2-multilib.patch | ||||
| Patch1: libxml2-2.7.4-input-parser.patch | ||||
| 
 | ||||
| %description | ||||
| This library allows to manipulate XML files. It includes support  | ||||
| @ -68,7 +67,6 @@ at parse time or later once the document has been modified. | ||||
| %prep | ||||
| %setup -q | ||||
| %patch0 -p1 | ||||
| %patch1 -p1 | ||||
| 
 | ||||
| %build | ||||
| %configure | ||||
| @ -143,6 +141,11 @@ rm -fr %{buildroot} | ||||
| %doc doc/python.html | ||||
| 
 | ||||
| %changelog | ||||
| * Thu Sep 24 2009 Daniel Veillard <veillard@redhat.com> - 2.7.5-1 | ||||
| - Upstream release of 2.7.5 | ||||
| - fix a couple of Relax-NG validation problems | ||||
| - couple more fixes | ||||
| 
 | ||||
| * Tue Sep 15 2009 Daniel Veillard <veillard@redhat.com> - 2.7.4-2 | ||||
| - fix a problem with little data at startup affecting inkscape #523002 | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user