components/libxml2/patches/libxml2-Detect-excessive-entities-expansion-upon-replacement.patch
author doug leavitt <doug.leavitt@oracle.com>
Wed, 22 May 2013 10:12:33 -0700
branchs11-update
changeset 2632 af488b226b98
parent 2563 c9820a36ee17
permissions -rw-r--r--
16763104 backport 15998664 to 11.2 - berkeleydb doesn't build with jdk 1.7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2563
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     1
https://git.gnome.org/browse/libxml2/commit/?id=23f05e0c33987d6605387b300c4be5da2120a7ab
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     2
CVE-2013-0338
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     3
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     4
From 23f05e0c33987d6605387b300c4be5da2120a7ab Mon Sep 17 00:00:00 2001
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     5
From: Daniel Veillard <[email protected]>
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     6
Date: Tue, 19 Feb 2013 02:21:49 +0000
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     7
Subject: Detect excessive entities expansion upon replacement
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     8
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     9
If entities expansion in the XML parser is asked for,
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    10
it is possble to craft relatively small input document leading
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    11
to excessive on-the-fly content generation.
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    12
This patch accounts for those replacement and stop parsing
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    13
after a given threshold. it can be bypassed as usual with the
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    14
HUGE parser option.
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    15
---
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    16
diff --git a/include/libxml/parser.h b/include/libxml/parser.h
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    17
index e1346e4..3f5730d 100644
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    18
--- a/include/libxml/parser.h
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    19
+++ b/include/libxml/parser.h
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    20
@@ -310,6 +310,7 @@ struct _xmlParserCtxt {
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    21
     xmlParserNodeInfo *nodeInfoTab;   /* array of nodeInfos */
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    22
 
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    23
     int                input_id;      /* we need to label inputs */
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    24
+    unsigned long      sizeentcopy;   /* volume of entity copy */
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    25
 };
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    26
 
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    27
 /**
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    28
diff --git a/parser.c b/parser.c
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    29
index 91f8c90..ddf3b5b 100644
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    30
--- a/parser.c
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    31
+++ b/parser.c
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    32
@@ -122,7 +122,7 @@ xmlCreateEntityParserCtxtInternal(const xmlChar *URL, const xmlChar *ID,
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    33
  */
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    34
 static int
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    35
 xmlParserEntityCheck(xmlParserCtxtPtr ctxt, size_t size,
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    36
-                     xmlEntityPtr ent)
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    37
+                     xmlEntityPtr ent, size_t replacement)
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    38
 {
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    39
     size_t consumed = 0;
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    40
 
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    41
@@ -130,7 +130,24 @@ xmlParserEntityCheck(xmlParserCtxtPtr ctxt, size_t size,
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    42
         return (0);
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    43
     if (ctxt->lastError.code == XML_ERR_ENTITY_LOOP)
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    44
         return (1);
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    45
-    if (size != 0) {
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    46
+    if (replacement != 0) {
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    47
+	if (replacement < XML_MAX_TEXT_LENGTH)
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    48
+	    return(0);
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    49
+
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    50
+        /*
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    51
+	 * If the volume of entity copy reaches 10 times the
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    52
+	 * amount of parsed data and over the large text threshold
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    53
+	 * then that's very likely to be an abuse.
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    54
+	 */
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    55
+        if (ctxt->input != NULL) {
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    56
+	    consumed = ctxt->input->consumed +
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    57
+	               (ctxt->input->cur - ctxt->input->base);
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    58
+	}
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    59
+        consumed += ctxt->sizeentities;
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    60
+
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    61
+        if (replacement < XML_PARSER_NON_LINEAR * consumed)
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    62
+	    return(0);
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    63
+    } else if (size != 0) {
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    64
         /*
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    65
          * Do the check based on the replacement size of the entity
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    66
          */
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    67
@@ -176,7 +193,6 @@ xmlParserEntityCheck(xmlParserCtxtPtr ctxt, size_t size,
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    68
          */
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    69
         return (0);
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    70
     }
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    71
-
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    72
     xmlFatalErr(ctxt, XML_ERR_ENTITY_LOOP, NULL);
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    73
     return (1);
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    74
 }
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    75
@@ -2743,7 +2759,7 @@ xmlStringLenDecodeEntities(xmlParserCtxtPtr ctxt, const xmlChar *str, int len,
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    76
 		    while (*current != 0) { /* non input consuming loop */
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    77
 			buffer[nbchars++] = *current++;
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    78
 			if (nbchars + XML_PARSER_BUFFER_SIZE > buffer_size) {
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    79
-			    if (xmlParserEntityCheck(ctxt, nbchars, ent))
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    80
+			    if (xmlParserEntityCheck(ctxt, nbchars, ent, 0))
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    81
 				goto int_error;
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    82
 			    growBuffer(buffer, XML_PARSER_BUFFER_SIZE);
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    83
 			}
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    84
@@ -2785,7 +2801,7 @@ xmlStringLenDecodeEntities(xmlParserCtxtPtr ctxt, const xmlChar *str, int len,
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    85
 		    while (*current != 0) { /* non input consuming loop */
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    86
 			buffer[nbchars++] = *current++;
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    87
 			if (nbchars + XML_PARSER_BUFFER_SIZE > buffer_size) {
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    88
-			    if (xmlParserEntityCheck(ctxt, nbchars, ent))
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    89
+			    if (xmlParserEntityCheck(ctxt, nbchars, ent, 0))
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    90
 			        goto int_error;
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    91
 			    growBuffer(buffer, XML_PARSER_BUFFER_SIZE);
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    92
 			}
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    93
@@ -7203,7 +7219,7 @@ xmlParseReference(xmlParserCtxtPtr ctxt) {
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    94
 	    xmlFreeNodeList(list);
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    95
 	    return;
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    96
 	}
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    97
-	if (xmlParserEntityCheck(ctxt, 0, ent)) {
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    98
+	if (xmlParserEntityCheck(ctxt, 0, ent, 0)) {
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    99
 	    xmlFreeNodeList(list);
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   100
 	    return;
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   101
 	}
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   102
@@ -7361,6 +7377,13 @@ xmlParseReference(xmlParserCtxtPtr ctxt) {
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   103
 		xmlNodePtr nw = NULL, cur, firstChild = NULL;
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   104
 
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   105
 		/*
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   106
+		 * We are copying here, make sure there is no abuse
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   107
+		 */
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   108
+		ctxt->sizeentcopy += ent->length;
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   109
+		if (xmlParserEntityCheck(ctxt, 0, ent, ctxt->sizeentcopy))
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   110
+		    return;
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   111
+
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   112
+		/*
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   113
 		 * when operating on a reader, the entities definitions
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   114
 		 * are always owning the entities subtree.
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   115
 		if (ctxt->parseMode == XML_PARSE_READER)
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   116
@@ -7400,6 +7423,14 @@ xmlParseReference(xmlParserCtxtPtr ctxt) {
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   117
 	    } else if ((list == NULL) || (ctxt->inputNr > 0)) {
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   118
 		xmlNodePtr nw = NULL, cur, next, last,
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   119
 			   firstChild = NULL;
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   120
+
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   121
+		/*
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   122
+		 * We are copying here, make sure there is no abuse
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   123
+		 */
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   124
+		ctxt->sizeentcopy += ent->length;
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   125
+		if (xmlParserEntityCheck(ctxt, 0, ent, ctxt->sizeentcopy))
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   126
+		    return;
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   127
+
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   128
 		/*
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   129
 		 * Copy the entity child list and make it the new
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   130
 		 * entity child list. The goal is to make sure any
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   131
@@ -14767,6 +14798,7 @@ xmlCtxtReset(xmlParserCtxtPtr ctxt)
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   132
     ctxt->catalogs = NULL;
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   133
     ctxt->nbentities = 0;
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   134
     ctxt->sizeentities = 0;
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   135
+    ctxt->sizeentcopy = 0;
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   136
     xmlInitNodeInfoSeq(&ctxt->node_seq);
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   137
 
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   138
     if (ctxt->attsDefault != NULL) {
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   139
diff --git a/parserInternals.c b/parserInternals.c
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   140
index 02032d5..f8a7041 100644
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   141
--- a/parserInternals.c
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   142
+++ b/parserInternals.c
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   143
@@ -1719,6 +1719,8 @@ xmlInitParserCtxt(xmlParserCtxtPtr ctxt)
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   144
     ctxt->charset = XML_CHAR_ENCODING_UTF8;
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   145
     ctxt->catalogs = NULL;
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   146
     ctxt->nbentities = 0;
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   147
+    ctxt->sizeentities = 0;
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   148
+    ctxt->sizeentcopy = 0;
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   149
     ctxt->input_id = 1;
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   150
     xmlInitNodeInfoSeq(&ctxt->node_seq);
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   151
     return(0);
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   152
--
c9820a36ee17 16492451 problem in LIBRARY/LIBXML
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   153
cgit v0.9.1