components/libxml2/patches/13.CVE-2011-3905.patch
author Petr Sumbera <petr.sumbera@oracle.com>
Mon, 23 Jul 2012 03:17:23 -0500
branchs11-sru
changeset 2313 cee15dd34514
permissions -rw-r--r--
7100337 Problem with library/libxml 7072501 Problem with library/libxml 7131703 Problem with library/libxml 7008726 Problem with library/libxml 7171310 Problem with library/libxml 7150804 Problem with library/libxml
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2313
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     1
This patch copied/pasted from this link:
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     2
http://git.gnome.org/browse/libxml2/patch/?id=77404b8b69bc122d12231807abf1a837d121b551
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     3
----------------------------------------------------------------------
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     4
From 77404b8b69bc122d12231807abf1a837d121b551 Mon Sep 17 00:00:00 2001
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     5
From: Chris Evans <[email protected]>
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     6
Date: Wed, 14 Dec 2011 08:18:25 +0000
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     7
Subject: Make sure the parser returns when getting a Stop order
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     8
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     9
patch backported from chromiun bug fixes, assuming author is Chris
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    10
---
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    11
diff --git a/parser.c b/parser.c
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    12
index 21d7aa3..4e5dcb9 100644
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    13
--- a/parser.c
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    14
+++ b/parser.c
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    15
@@ -4949,7 +4949,8 @@ xmlParsePI(xmlParserCtxtPtr ctxt) {
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    16
 		    (ctxt->sax->processingInstruction != NULL))
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    17
 		    ctxt->sax->processingInstruction(ctxt->userData,
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    18
 		                                     target, NULL);
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    19
-		ctxt->instate = state;
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    20
+		if (ctxt->instate != XML_PARSER_EOF)
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    21
+		    ctxt->instate = state;
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    22
 		return;
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    23
 	    }
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    24
 	    buf = (xmlChar *) xmlMallocAtomic(size * sizeof(xmlChar));
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    25
@@ -5029,7 +5030,8 @@ xmlParsePI(xmlParserCtxtPtr ctxt) {
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    26
 	} else {
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    27
 	    xmlFatalErr(ctxt, XML_ERR_PI_NOT_STARTED, NULL);
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    28
 	}
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    29
-	ctxt->instate = state;
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    30
+	if (ctxt->instate != XML_PARSER_EOF)
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    31
+	    ctxt->instate = state;
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    32
     }
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    33
 }
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    34
 
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    35
@@ -9589,6 +9591,8 @@ xmlParseElement(xmlParserCtxtPtr ctxt) {
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    36
     else
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    37
 	name = xmlParseStartTag(ctxt);
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    38
 #endif /* LIBXML_SAX1_ENABLED */
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    39
+    if (ctxt->instate == XML_PARSER_EOF)
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    40
+	return;
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    41
     if (name == NULL) {
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    42
 	spacePop(ctxt);
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    43
         return;
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    44
@@ -10975,6 +10979,8 @@ xmlParseTryOrFinish(xmlParserCtxtPtr ctxt, int terminate) {
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    45
 		else
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    46
 		    name = xmlParseStartTag(ctxt);
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    47
 #endif /* LIBXML_SAX1_ENABLED */
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    48
+		if (ctxt->instate == XML_PARSER_EOF)
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    49
+		    goto done;
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    50
 		if (name == NULL) {
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    51
 		    spacePop(ctxt);
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    52
 		    ctxt->instate = XML_PARSER_EOF;
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    53
@@ -11161,7 +11167,9 @@ xmlParseTryOrFinish(xmlParserCtxtPtr ctxt, int terminate) {
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    54
 		  else
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    55
 		    xmlParseEndTag1(ctxt, 0);
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    56
 #endif /* LIBXML_SAX1_ENABLED */
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    57
-		if (ctxt->nameNr == 0) {
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    58
+		if (ctxt->instate == XML_PARSER_EOF) {
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    59
+		    /* Nothing */
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    60
+		} else if (ctxt->nameNr == 0) {
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    61
 		    ctxt->instate = XML_PARSER_EPILOG;
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    62
 		} else {
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    63
 		    ctxt->instate = XML_PARSER_CONTENT;
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    64
--
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    65
cgit v0.9.0.2
cee15dd34514 7100337 Problem with library/libxml
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    66