author | Petr Sumbera <petr.sumbera@oracle.com> |
Wed, 22 Aug 2012 09:34:32 -0500 | |
branch | s11-sru |
changeset 2334 | b52a7ffea126 |
permissions | -rw-r--r-- |
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) |