components/libexpat/patches/CVE-2012-0876.patch
author Petr Sumbera <petr.sumbera@oracle.com>
Wed, 22 Aug 2012 09:34:32 -0500
branchs11-sru
changeset 2334 b52a7ffea126
permissions -rw-r--r--
7154639 Problem with library/libexpat
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2334
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     1
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     2
https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2012-0876
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     3
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     4
--- lib/expat.h.cve0876
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     5
+++ lib/expat.h
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     6
@@ -883,6 +883,15 @@ XMLPARSEAPI(int)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     7
 XML_SetParamEntityParsing(XML_Parser parser,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     8
                           enum XML_ParamEntityParsing parsing);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     9
 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    10
+/* Sets the hash salt to use for internal hash calculations.
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    11
+   Helps in preventing DoS attacks based on predicting hash
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    12
+   function behavior. This must be called before parsing is started.
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    13
+   Returns 1 if successful, 0 when called after parsing has started.
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    14
+*/
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    15
+XMLPARSEAPI(int)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    16
+XML_SetHashSalt(XML_Parser parser,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    17
+                unsigned long hash_salt);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    18
+
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    19
 /* If XML_Parse or XML_ParseBuffer have returned XML_STATUS_ERROR, then
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    20
    XML_GetErrorCode returns information about the error.
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    21
 */
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    22
--- lib/xmlparse.c.cve0876
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    23
+++ lib/xmlparse.c
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    24
@@ -5,6 +5,8 @@
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    25
 #include <stddef.h>
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    26
 #include <string.h>                     /* memset(), memcpy() */
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    27
 #include <assert.h>
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    28
+#include <limits.h>                     /* UINT_MAX */
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    29
+#include <time.h>                       /* time() */
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    30
 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    31
 #define XML_BUILDING_EXPAT 1
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    32
 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    33
@@ -391,12 +393,13 @@ static void dtdReset(DTD *p, const XML_M
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    34
 static void
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    35
 dtdDestroy(DTD *p, XML_Bool isDocEntity, const XML_Memory_Handling_Suite *ms);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    36
 static int
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    37
-dtdCopy(DTD *newDtd, const DTD *oldDtd, const XML_Memory_Handling_Suite *ms);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    38
+dtdCopy(XML_Parser oldParser,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    39
+        DTD *newDtd, const DTD *oldDtd, const XML_Memory_Handling_Suite *ms);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    40
 static int
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    41
-copyEntityTable(HASH_TABLE *, STRING_POOL *, const HASH_TABLE *);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    42
-
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    43
+copyEntityTable(XML_Parser oldParser,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    44
+                HASH_TABLE *, STRING_POOL *, const HASH_TABLE *);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    45
 static NAMED *
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    46
-lookup(HASH_TABLE *table, KEY name, size_t createSize);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    47
+lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    48
 static void FASTCALL
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    49
 hashTableInit(HASH_TABLE *, const XML_Memory_Handling_Suite *ms);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    50
 static void FASTCALL hashTableClear(HASH_TABLE *);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    51
@@ -429,11 +432,15 @@ static ELEMENT_TYPE *
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    52
 getElementType(XML_Parser parser, const ENCODING *enc,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    53
                const char *ptr, const char *end);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    54
 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    55
+static unsigned long generate_hash_secret_salt(void);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    56
+static XML_Bool startParsing(XML_Parser parser);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    57
+
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    58
 static XML_Parser
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    59
 parserCreate(const XML_Char *encodingName,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    60
              const XML_Memory_Handling_Suite *memsuite,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    61
              const XML_Char *nameSep,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    62
              DTD *dtd);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    63
+
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    64
 static void
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    65
 parserInit(XML_Parser parser, const XML_Char *encodingName);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    66
 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    67
@@ -546,6 +553,7 @@ struct XML_ParserStruct {
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    68
   XML_Bool m_useForeignDTD;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    69
   enum XML_ParamEntityParsing m_paramEntityParsing;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    70
 #endif
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    71
+  unsigned long m_hash_secret_salt;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    72
 };
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    73
 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    74
 #define MALLOC(s) (parser->m_mem.malloc_fcn((s)))
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    75
@@ -653,6 +661,7 @@ struct XML_ParserStruct {
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    76
 #define useForeignDTD (parser->m_useForeignDTD)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    77
 #define paramEntityParsing (parser->m_paramEntityParsing)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    78
 #endif /* XML_DTD */
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    79
+#define hash_secret_salt (parser->m_hash_secret_salt)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    80
 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    81
 XML_Parser XMLCALL
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    82
 XML_ParserCreate(const XML_Char *encodingName)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    83
@@ -677,22 +686,35 @@ static const XML_Char implicitContext[] 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    84
   ASCII_s, ASCII_p, ASCII_a, ASCII_c, ASCII_e, '\0'
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    85
 };
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    86
 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    87
+static unsigned long
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    88
+generate_hash_secret_salt(void)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    89
+{
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    90
+  unsigned int seed = time(NULL) % UINT_MAX;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    91
+  srand(seed);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    92
+  return rand();
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    93
+}
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    94
+
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    95
+static XML_Bool  /* only valid for root parser */
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    96
+startParsing(XML_Parser parser)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    97
+{
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    98
+    /* hash functions must be initialized before setContext() is called */
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    99
+    if (hash_secret_salt == 0)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   100
+      hash_secret_salt = generate_hash_secret_salt();
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   101
+    if (ns) {
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   102
+      /* implicit context only set for root parser, since child
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   103
+         parsers (i.e. external entity parsers) will inherit it
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   104
+      */
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   105
+      return setContext(parser, implicitContext);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   106
+    }
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   107
+    return XML_TRUE;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   108
+}
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   109
+
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   110
 XML_Parser XMLCALL
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   111
 XML_ParserCreate_MM(const XML_Char *encodingName,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   112
                     const XML_Memory_Handling_Suite *memsuite,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   113
                     const XML_Char *nameSep)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   114
 {
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   115
-  XML_Parser parser = parserCreate(encodingName, memsuite, nameSep, NULL);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   116
-  if (parser != NULL && ns) {
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   117
-    /* implicit context only set for root parser, since child
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   118
-       parsers (i.e. external entity parsers) will inherit it
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   119
-    */
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   120
-    if (!setContext(parser, implicitContext)) {
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   121
-      XML_ParserFree(parser);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   122
-      return NULL;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   123
-    }
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   124
-  }
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   125
-  return parser;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   126
+  return parserCreate(encodingName, memsuite, nameSep, NULL);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   127
 }
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   128
 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   129
 static XML_Parser
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   130
@@ -866,6 +888,7 @@ parserInit(XML_Parser parser, const XML_
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   131
   useForeignDTD = XML_FALSE;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   132
   paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   133
 #endif
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   134
+  hash_secret_salt = 0;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   135
 }
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   136
 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   137
 /* moves list of bindings to freeBindingList */
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   138
@@ -913,7 +936,7 @@ XML_ParserReset(XML_Parser parser, const
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   139
   poolClear(&temp2Pool);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   140
   parserInit(parser, encodingName);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   141
   dtdReset(_dtd, &parser->m_mem);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   142
-  return setContext(parser, implicitContext);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   143
+  return XML_TRUE;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   144
 }
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   145
 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   146
 enum XML_Status XMLCALL
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   147
@@ -982,6 +1005,12 @@ XML_ExternalEntityParserCreate(XML_Parse
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   148
   int oldInEntityValue = prologState.inEntityValue;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   149
 #endif
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   150
   XML_Bool oldns_triplets = ns_triplets;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   151
+  /* Note that the new parser shares the same hash secret as the old
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   152
+     parser, so that dtdCopy and copyEntityTable can lookup values
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   153
+     from hash tables associated with either parser without us having
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   154
+     to worry which hash secrets each table has.
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   155
+  */
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   156
+  unsigned long oldhash_secret_salt = hash_secret_salt;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   157
 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   158
 #ifdef XML_DTD
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   159
   if (!context)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   160
@@ -1035,13 +1064,14 @@ XML_ExternalEntityParserCreate(XML_Parse
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   161
     externalEntityRefHandlerArg = oldExternalEntityRefHandlerArg;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   162
   defaultExpandInternalEntities = oldDefaultExpandInternalEntities;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   163
   ns_triplets = oldns_triplets;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   164
+  hash_secret_salt = oldhash_secret_salt;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   165
   parentParser = oldParser;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   166
 #ifdef XML_DTD
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   167
   paramEntityParsing = oldParamEntityParsing;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   168
   prologState.inEntityValue = oldInEntityValue;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   169
   if (context) {
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   170
 #endif /* XML_DTD */
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   171
-    if (!dtdCopy(_dtd, oldDtd, &parser->m_mem)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   172
+    if (!dtdCopy(oldParser, _dtd, oldDtd, &parser->m_mem)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   173
       || !setContext(parser, context)) {
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   174
       XML_ParserFree(parser);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   175
       return NULL;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   176
@@ -1426,6 +1456,17 @@ XML_SetParamEntityParsing(XML_Parser par
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   177
 #endif
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   178
 }
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   179
 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   180
+int XMLCALL
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   181
+XML_SetHashSalt(XML_Parser parser,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   182
+                unsigned long hash_salt)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   183
+{
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   184
+  /* block after XML_Parse()/XML_ParseBuffer() has been called */
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   185
+  if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   186
+    return 0;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   187
+  hash_secret_salt = hash_salt;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   188
+  return 1;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   189
+}
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   190
+
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   191
 enum XML_Status XMLCALL
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   192
 XML_Parse(XML_Parser parser, const char *s, int len, int isFinal)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   193
 {
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   194
@@ -1436,6 +1477,11 @@ XML_Parse(XML_Parser parser, const char 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   195
   case XML_FINISHED:
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   196
     errorCode = XML_ERROR_FINISHED;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   197
     return XML_STATUS_ERROR;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   198
+  case XML_INITIALIZED:
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   199
+    if (parentParser == NULL && !startParsing(parser)) {
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   200
+      errorCode = XML_ERROR_NO_MEMORY;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   201
+      return XML_STATUS_ERROR;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   202
+    }
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   203
   default:
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   204
     ps_parsing = XML_PARSING;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   205
   }
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   206
@@ -1494,11 +1540,13 @@ XML_Parse(XML_Parser parser, const char 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   207
         break;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   208
       case XML_INITIALIZED:
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   209
       case XML_PARSING:
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   210
-        result = XML_STATUS_OK;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   211
         if (isFinal) {
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   212
           ps_parsing = XML_FINISHED;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   213
-          return result;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   214
+          return XML_STATUS_OK;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   215
         }
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   216
+      /* fall through */
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   217
+      default:
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   218
+        result = XML_STATUS_OK;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   219
       }
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   220
     }
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   221
 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   222
@@ -1559,6 +1607,11 @@ XML_ParseBuffer(XML_Parser parser, int l
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   223
   case XML_FINISHED:
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   224
     errorCode = XML_ERROR_FINISHED;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   225
     return XML_STATUS_ERROR;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   226
+  case XML_INITIALIZED:
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   227
+    if (parentParser == NULL && !startParsing(parser)) {
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   228
+      errorCode = XML_ERROR_NO_MEMORY;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   229
+      return XML_STATUS_ERROR;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   230
+    }
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   231
   default:
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   232
     ps_parsing = XML_PARSING;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   233
   }
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   234
@@ -2240,7 +2293,7 @@ doContent(XML_Parser parser,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   235
                                 next - enc->minBytesPerChar);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   236
         if (!name)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   237
           return XML_ERROR_NO_MEMORY;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   238
-        entity = (ENTITY *)lookup(&dtd->generalEntities, name, 0);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   239
+        entity = (ENTITY *)lookup(parser, &dtd->generalEntities, name, 0);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   240
         poolDiscard(&dtd->pool);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   241
         /* First, determine if a check for an existing declaration is needed;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   242
            if yes, check that the entity exists, and that it is internal,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   243
@@ -2630,12 +2683,12 @@ storeAtts(XML_Parser parser, const ENCOD
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   244
   const XML_Char *localPart;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   245
 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   246
   /* lookup the element type name */
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   247
-  elementType = (ELEMENT_TYPE *)lookup(&dtd->elementTypes, tagNamePtr->str,0);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   248
+  elementType = (ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, tagNamePtr->str,0);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   249
   if (!elementType) {
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   250
     const XML_Char *name = poolCopyString(&dtd->pool, tagNamePtr->str);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   251
     if (!name)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   252
       return XML_ERROR_NO_MEMORY;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   253
-    elementType = (ELEMENT_TYPE *)lookup(&dtd->elementTypes, name,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   254
+    elementType = (ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, name,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   255
                                          sizeof(ELEMENT_TYPE));
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   256
     if (!elementType)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   257
       return XML_ERROR_NO_MEMORY;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   258
@@ -2804,9 +2857,9 @@ storeAtts(XML_Parser parser, const ENCOD
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   259
       if (s[-1] == 2) {  /* prefixed */
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   260
         ATTRIBUTE_ID *id;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   261
         const BINDING *b;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   262
-        unsigned long uriHash = 0;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   263
+        unsigned long uriHash = hash_secret_salt;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   264
         ((XML_Char *)s)[-1] = 0;  /* clear flag */
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   265
-        id = (ATTRIBUTE_ID *)lookup(&dtd->attributeIds, s, 0);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   266
+        id = (ATTRIBUTE_ID *)lookup(parser, &dtd->attributeIds, s, 0);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   267
         b = id->prefix->binding;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   268
         if (!b)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   269
           return XML_ERROR_UNBOUND_PREFIX;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   270
@@ -2828,7 +2881,7 @@ storeAtts(XML_Parser parser, const ENCOD
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   271
         } while (*s++);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   272
 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   273
         { /* Check hash table for duplicate of expanded name (uriName).
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   274
-             Derived from code in lookup(HASH_TABLE *table, ...).
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   275
+             Derived from code in lookup(parser, HASH_TABLE *table, ...).
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   276
           */
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   277
           unsigned char step = 0;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   278
           unsigned long mask = nsAttsSize - 1;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   279
@@ -3777,7 +3830,8 @@ doProlog(XML_Parser parser,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   280
     case XML_ROLE_DOCTYPE_PUBLIC_ID:
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   281
 #ifdef XML_DTD
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   282
       useForeignDTD = XML_FALSE;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   283
-      declEntity = (ENTITY *)lookup(&dtd->paramEntities,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   284
+      declEntity = (ENTITY *)lookup(parser,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   285
+                                    &dtd->paramEntities,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   286
                                     externalSubsetName,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   287
                                     sizeof(ENTITY));
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   288
       if (!declEntity)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   289
@@ -3832,7 +3886,8 @@ doProlog(XML_Parser parser,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   290
         XML_Bool hadParamEntityRefs = dtd->hasParamEntityRefs;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   291
         dtd->hasParamEntityRefs = XML_TRUE;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   292
         if (paramEntityParsing && externalEntityRefHandler) {
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   293
-          ENTITY *entity = (ENTITY *)lookup(&dtd->paramEntities,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   294
+          ENTITY *entity = (ENTITY *)lookup(parser,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   295
+                                            &dtd->paramEntities,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   296
                                             externalSubsetName,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   297
                                             sizeof(ENTITY));
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   298
           if (!entity)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   299
@@ -3876,7 +3931,7 @@ doProlog(XML_Parser parser,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   300
         XML_Bool hadParamEntityRefs = dtd->hasParamEntityRefs;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   301
         dtd->hasParamEntityRefs = XML_TRUE;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   302
         if (paramEntityParsing && externalEntityRefHandler) {
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   303
-          ENTITY *entity = (ENTITY *)lookup(&dtd->paramEntities,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   304
+          ENTITY *entity = (ENTITY *)lookup(parser, &dtd->paramEntities,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   305
                                             externalSubsetName,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   306
                                             sizeof(ENTITY));
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   307
           if (!entity)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   308
@@ -4090,7 +4145,8 @@ doProlog(XML_Parser parser,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   309
       break;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   310
 #else /* XML_DTD */
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   311
       if (!declEntity) {
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   312
-        declEntity = (ENTITY *)lookup(&dtd->paramEntities,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   313
+        declEntity = (ENTITY *)lookup(parser,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   314
+                                      &dtd->paramEntities,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   315
                                       externalSubsetName,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   316
                                       sizeof(ENTITY));
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   317
         if (!declEntity)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   318
@@ -4165,7 +4221,7 @@ doProlog(XML_Parser parser,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   319
           const XML_Char *name = poolStoreString(&dtd->pool, enc, s, next);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   320
           if (!name)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   321
             return XML_ERROR_NO_MEMORY;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   322
-          declEntity = (ENTITY *)lookup(&dtd->generalEntities, name,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   323
+          declEntity = (ENTITY *)lookup(parser, &dtd->generalEntities, name,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   324
                                         sizeof(ENTITY));
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   325
           if (!declEntity)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   326
             return XML_ERROR_NO_MEMORY;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   327
@@ -4197,7 +4253,7 @@ doProlog(XML_Parser parser,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   328
         const XML_Char *name = poolStoreString(&dtd->pool, enc, s, next);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   329
         if (!name)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   330
           return XML_ERROR_NO_MEMORY;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   331
-        declEntity = (ENTITY *)lookup(&dtd->paramEntities,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   332
+        declEntity = (ENTITY *)lookup(parser, &dtd->paramEntities,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   333
                                            name, sizeof(ENTITY));
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   334
         if (!declEntity)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   335
           return XML_ERROR_NO_MEMORY;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   336
@@ -4379,7 +4435,7 @@ doProlog(XML_Parser parser,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   337
                                 next - enc->minBytesPerChar);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   338
         if (!name)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   339
           return XML_ERROR_NO_MEMORY;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   340
-        entity = (ENTITY *)lookup(&dtd->paramEntities, name, 0);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   341
+        entity = (ENTITY *)lookup(parser, &dtd->paramEntities, name, 0);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   342
         poolDiscard(&dtd->pool);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   343
         /* first, determine if a check for an existing declaration is needed;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   344
            if yes, check that the entity exists, and that it is internal,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   345
@@ -4903,7 +4959,7 @@ appendAttributeValue(XML_Parser parser, 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   346
                                next - enc->minBytesPerChar);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   347
         if (!name)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   348
           return XML_ERROR_NO_MEMORY;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   349
-        entity = (ENTITY *)lookup(&dtd->generalEntities, name, 0);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   350
+        entity = (ENTITY *)lookup(parser, &dtd->generalEntities, name, 0);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   351
         poolDiscard(&temp2Pool);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   352
         /* First, determine if a check for an existing declaration is needed;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   353
            if yes, check that the entity exists, and that it is internal.
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   354
@@ -5012,7 +5068,7 @@ storeEntityValue(XML_Parser parser,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   355
           result = XML_ERROR_NO_MEMORY;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   356
           goto endEntityValue;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   357
         }
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   358
-        entity = (ENTITY *)lookup(&dtd->paramEntities, name, 0);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   359
+        entity = (ENTITY *)lookup(parser, &dtd->paramEntities, name, 0);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   360
         poolDiscard(&tempPool);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   361
         if (!entity) {
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   362
           /* not a well-formedness error - see XML 1.0: WFC Entity Declared */
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   363
@@ -5302,7 +5358,7 @@ setElementTypePrefix(XML_Parser parser, 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   364
       }
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   365
       if (!poolAppendChar(&dtd->pool, XML_T('\0')))
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   366
         return 0;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   367
-      prefix = (PREFIX *)lookup(&dtd->prefixes, poolStart(&dtd->pool),
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   368
+      prefix = (PREFIX *)lookup(parser, &dtd->prefixes, poolStart(&dtd->pool),
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   369
                                 sizeof(PREFIX));
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   370
       if (!prefix)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   371
         return 0;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   372
@@ -5331,7 +5387,7 @@ getAttributeId(XML_Parser parser, const 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   373
     return NULL;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   374
   /* skip quotation mark - its storage will be re-used (like in name[-1]) */
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   375
   ++name;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   376
-  id = (ATTRIBUTE_ID *)lookup(&dtd->attributeIds, name, sizeof(ATTRIBUTE_ID));
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   377
+  id = (ATTRIBUTE_ID *)lookup(parser, &dtd->attributeIds, name, sizeof(ATTRIBUTE_ID));
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   378
   if (!id)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   379
     return NULL;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   380
   if (id->name != name)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   381
@@ -5349,7 +5405,7 @@ getAttributeId(XML_Parser parser, const 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   382
       if (name[5] == XML_T('\0'))
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   383
         id->prefix = &dtd->defaultPrefix;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   384
       else
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   385
-        id->prefix = (PREFIX *)lookup(&dtd->prefixes, name + 6, sizeof(PREFIX));
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   386
+        id->prefix = (PREFIX *)lookup(parser, &dtd->prefixes, name + 6, sizeof(PREFIX));
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   387
       id->xmlns = XML_TRUE;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   388
     }
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   389
     else {
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   390
@@ -5364,7 +5420,7 @@ getAttributeId(XML_Parser parser, const 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   391
           }
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   392
           if (!poolAppendChar(&dtd->pool, XML_T('\0')))
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   393
             return NULL;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   394
-          id->prefix = (PREFIX *)lookup(&dtd->prefixes, poolStart(&dtd->pool),
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   395
+          id->prefix = (PREFIX *)lookup(parser, &dtd->prefixes, poolStart(&dtd->pool),
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   396
                                         sizeof(PREFIX));
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   397
           if (id->prefix->name == poolStart(&dtd->pool))
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   398
             poolFinish(&dtd->pool);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   399
@@ -5460,7 +5516,7 @@ setContext(XML_Parser parser, const XML_
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   400
       ENTITY *e;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   401
       if (!poolAppendChar(&tempPool, XML_T('\0')))
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   402
         return XML_FALSE;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   403
-      e = (ENTITY *)lookup(&dtd->generalEntities, poolStart(&tempPool), 0);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   404
+      e = (ENTITY *)lookup(parser, &dtd->generalEntities, poolStart(&tempPool), 0);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   405
       if (e)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   406
         e->open = XML_TRUE;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   407
       if (*s != XML_T('\0'))
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   408
@@ -5475,7 +5531,7 @@ setContext(XML_Parser parser, const XML_
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   409
       else {
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   410
         if (!poolAppendChar(&tempPool, XML_T('\0')))
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   411
           return XML_FALSE;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   412
-        prefix = (PREFIX *)lookup(&dtd->prefixes, poolStart(&tempPool),
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   413
+        prefix = (PREFIX *)lookup(parser, &dtd->prefixes, poolStart(&tempPool),
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   414
                                   sizeof(PREFIX));
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   415
         if (!prefix)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   416
           return XML_FALSE;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   417
@@ -5639,7 +5695,7 @@ dtdDestroy(DTD *p, XML_Bool isDocEntity,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   418
    The new DTD has already been initialized.
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   419
 */
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   420
 static int
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   421
-dtdCopy(DTD *newDtd, const DTD *oldDtd, const XML_Memory_Handling_Suite *ms)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   422
+dtdCopy(XML_Parser oldParser, DTD *newDtd, const DTD *oldDtd, const XML_Memory_Handling_Suite *ms)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   423
 {
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   424
   HASH_TABLE_ITER iter;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   425
 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   426
@@ -5654,7 +5710,7 @@ dtdCopy(DTD *newDtd, const DTD *oldDtd, 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   427
     name = poolCopyString(&(newDtd->pool), oldP->name);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   428
     if (!name)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   429
       return 0;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   430
-    if (!lookup(&(newDtd->prefixes), name, sizeof(PREFIX)))
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   431
+    if (!lookup(oldParser, &(newDtd->prefixes), name, sizeof(PREFIX)))
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   432
       return 0;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   433
   }
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   434
 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   435
@@ -5676,7 +5732,7 @@ dtdCopy(DTD *newDtd, const DTD *oldDtd, 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   436
     if (!name)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   437
       return 0;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   438
     ++name;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   439
-    newA = (ATTRIBUTE_ID *)lookup(&(newDtd->attributeIds), name,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   440
+    newA = (ATTRIBUTE_ID *)lookup(oldParser, &(newDtd->attributeIds), name,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   441
                                   sizeof(ATTRIBUTE_ID));
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   442
     if (!newA)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   443
       return 0;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   444
@@ -5686,7 +5742,7 @@ dtdCopy(DTD *newDtd, const DTD *oldDtd, 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   445
       if (oldA->prefix == &oldDtd->defaultPrefix)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   446
         newA->prefix = &newDtd->defaultPrefix;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   447
       else
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   448
-        newA->prefix = (PREFIX *)lookup(&(newDtd->prefixes),
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   449
+        newA->prefix = (PREFIX *)lookup(oldParser, &(newDtd->prefixes),
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   450
                                         oldA->prefix->name, 0);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   451
     }
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   452
   }
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   453
@@ -5705,7 +5761,7 @@ dtdCopy(DTD *newDtd, const DTD *oldDtd, 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   454
     name = poolCopyString(&(newDtd->pool), oldE->name);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   455
     if (!name)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   456
       return 0;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   457
-    newE = (ELEMENT_TYPE *)lookup(&(newDtd->elementTypes), name,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   458
+    newE = (ELEMENT_TYPE *)lookup(oldParser, &(newDtd->elementTypes), name,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   459
                                   sizeof(ELEMENT_TYPE));
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   460
     if (!newE)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   461
       return 0;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   462
@@ -5719,14 +5775,14 @@ dtdCopy(DTD *newDtd, const DTD *oldDtd, 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   463
     }
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   464
     if (oldE->idAtt)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   465
       newE->idAtt = (ATTRIBUTE_ID *)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   466
-          lookup(&(newDtd->attributeIds), oldE->idAtt->name, 0);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   467
+          lookup(oldParser, &(newDtd->attributeIds), oldE->idAtt->name, 0);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   468
     newE->allocDefaultAtts = newE->nDefaultAtts = oldE->nDefaultAtts;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   469
     if (oldE->prefix)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   470
-      newE->prefix = (PREFIX *)lookup(&(newDtd->prefixes),
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   471
+      newE->prefix = (PREFIX *)lookup(oldParser, &(newDtd->prefixes),
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   472
                                       oldE->prefix->name, 0);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   473
     for (i = 0; i < newE->nDefaultAtts; i++) {
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   474
       newE->defaultAtts[i].id = (ATTRIBUTE_ID *)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   475
-          lookup(&(newDtd->attributeIds), oldE->defaultAtts[i].id->name, 0);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   476
+          lookup(oldParser, &(newDtd->attributeIds), oldE->defaultAtts[i].id->name, 0);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   477
       newE->defaultAtts[i].isCdata = oldE->defaultAtts[i].isCdata;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   478
       if (oldE->defaultAtts[i].value) {
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   479
         newE->defaultAtts[i].value
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   480
@@ -5740,13 +5796,15 @@ dtdCopy(DTD *newDtd, const DTD *oldDtd, 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   481
   }
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   482
 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   483
   /* Copy the entity tables. */
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   484
-  if (!copyEntityTable(&(newDtd->generalEntities),
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   485
+  if (!copyEntityTable(oldParser,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   486
+                       &(newDtd->generalEntities),
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   487
                        &(newDtd->pool),
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   488
                        &(oldDtd->generalEntities)))
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   489
       return 0;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   490
 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   491
 #ifdef XML_DTD
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   492
-  if (!copyEntityTable(&(newDtd->paramEntities),
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   493
+  if (!copyEntityTable(oldParser,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   494
+                       &(newDtd->paramEntities),
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   495
                        &(newDtd->pool),
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   496
                        &(oldDtd->paramEntities)))
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   497
       return 0;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   498
@@ -5769,7 +5827,8 @@ dtdCopy(DTD *newDtd, const DTD *oldDtd, 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   499
 }  /* End dtdCopy */
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   500
 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   501
 static int
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   502
-copyEntityTable(HASH_TABLE *newTable,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   503
+copyEntityTable(XML_Parser oldParser,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   504
+                HASH_TABLE *newTable,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   505
                 STRING_POOL *newPool,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   506
                 const HASH_TABLE *oldTable)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   507
 {
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   508
@@ -5788,7 +5847,7 @@ copyEntityTable(HASH_TABLE *newTable,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   509
     name = poolCopyString(newPool, oldE->name);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   510
     if (!name)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   511
       return 0;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   512
-    newE = (ENTITY *)lookup(newTable, name, sizeof(ENTITY));
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   513
+    newE = (ENTITY *)lookup(oldParser, newTable, name, sizeof(ENTITY));
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   514
     if (!newE)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   515
       return 0;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   516
     if (oldE->systemId) {
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   517
@@ -5846,16 +5905,16 @@ keyeq(KEY s1, KEY s2)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   518
 }
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   519
 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   520
 static unsigned long FASTCALL
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   521
-hash(KEY s)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   522
+hash(XML_Parser parser, KEY s)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   523
 {
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   524
-  unsigned long h = 0;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   525
+  unsigned long h = hash_secret_salt;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   526
   while (*s)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   527
     h = CHAR_HASH(h, *s++);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   528
   return h;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   529
 }
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   530
 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   531
 static NAMED *
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   532
-lookup(HASH_TABLE *table, KEY name, size_t createSize)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   533
+lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   534
 {
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   535
   size_t i;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   536
   if (table->size == 0) {
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   537
@@ -5872,10 +5931,10 @@ lookup(HASH_TABLE *table, KEY name, size
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   538
       return NULL;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   539
     }
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   540
     memset(table->v, 0, tsize);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   541
-    i = hash(name) & ((unsigned long)table->size - 1);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   542
+    i = hash(parser, name) & ((unsigned long)table->size - 1);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   543
   }
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   544
   else {
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   545
-    unsigned long h = hash(name);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   546
+    unsigned long h = hash(parser, name);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   547
     unsigned long mask = (unsigned long)table->size - 1;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   548
     unsigned char step = 0;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   549
     i = h & mask;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   550
@@ -5901,7 +5960,7 @@ lookup(HASH_TABLE *table, KEY name, size
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   551
       memset(newV, 0, tsize);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   552
       for (i = 0; i < table->size; i++)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   553
         if (table->v[i]) {
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   554
-          unsigned long newHash = hash(table->v[i]->name);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   555
+          unsigned long newHash = hash(parser, table->v[i]->name);
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   556
           size_t j = newHash & newMask;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   557
           step = 0;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   558
           while (newV[j]) {
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   559
@@ -6276,7 +6335,7 @@ getElementType(XML_Parser parser,
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   560
 
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   561
   if (!name)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   562
     return NULL;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   563
-  ret = (ELEMENT_TYPE *) lookup(&dtd->elementTypes, name, sizeof(ELEMENT_TYPE));
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   564
+  ret = (ELEMENT_TYPE *) lookup(parser, &dtd->elementTypes, name, sizeof(ELEMENT_TYPE));
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   565
   if (!ret)
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   566
     return NULL;
b52a7ffea126 7154639 Problem with library/libexpat
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
   567
   if (ret->name != name)