summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuli Suominen <ssuominen@gentoo.org>2012-03-10 17:51:46 +0000
committerSamuli Suominen <ssuominen@gentoo.org>2012-03-10 17:51:46 +0000
commit5339f413e8dc6f8821682654dc3f35d9c38910eb (patch)
treec76cb1668ddec8b61ee6a2201e08c37c7ccecaa9 /dev-libs/expat/files
parentRemove restriction for pypy as jinja is fixed now (diff)
downloadgentoo-2-5339f413e8dc6f8821682654dc3f35d9c38910eb.tar.gz
gentoo-2-5339f413e8dc6f8821682654dc3f35d9c38910eb.tar.bz2
gentoo-2-5339f413e8dc6f8821682654dc3f35d9c38910eb.zip
Move call to setContext right after the setting of salt wrt #407555 using upstream patch. Thanks to Marien Zwart for bisecting the issue.
(Portage version: 2.2.0_alpha90/cvs/Linux x86_64)
Diffstat (limited to 'dev-libs/expat/files')
-rw-r--r--dev-libs/expat/files/expat-2.1.0_beta2-move_setContext_call.patch90
1 files changed, 90 insertions, 0 deletions
diff --git a/dev-libs/expat/files/expat-2.1.0_beta2-move_setContext_call.patch b/dev-libs/expat/files/expat-2.1.0_beta2-move_setContext_call.patch
new file mode 100644
index 000000000000..41034ca65184
--- /dev/null
+++ b/dev-libs/expat/files/expat-2.1.0_beta2-move_setContext_call.patch
@@ -0,0 +1,90 @@
+http://bugs.gentoo.org/407555
+http://expat.cvs.sourceforge.net/viewvc/expat/expat/lib/xmlparse.c?r1=1.168&r2=1.169
+http://sourceforge.net/tracker/?func=detail&atid=110127&aid=3500861&group_id=10127
+
+--- lib/xmlparse.c
++++ lib/xmlparse.c
+@@ -432,6 +432,9 @@
+ getElementType(XML_Parser parser, const ENCODING *enc,
+ const char *ptr, const char *end);
+
++static unsigned long generate_hash_secret_salt(void);
++static XML_Bool parsingSetup(XML_Parser parser);
++
+ static XML_Parser
+ parserCreate(const XML_Char *encodingName,
+ const XML_Memory_Handling_Suite *memsuite,
+@@ -695,22 +698,27 @@
+ return rand();
+ }
+
++static XML_Bool
++parsingSetup(XML_Parser parser)
++{
++ /* hash functions must be initialized before setContext() is called */
++ if (hash_secret_salt == 0)
++ hash_secret_salt = generate_hash_secret_salt();
++ if (parser != NULL && ns) {
++ /* implicit context only set for root parser, since child
++ parsers (i.e. external entity parsers) will inherit it
++ */
++ return setContext(parser, implicitContext);
++ }
++ return XML_TRUE;
++}
++
+ XML_Parser XMLCALL
+ XML_ParserCreate_MM(const XML_Char *encodingName,
+ const XML_Memory_Handling_Suite *memsuite,
+ const XML_Char *nameSep)
+ {
+- XML_Parser parser = parserCreate(encodingName, memsuite, nameSep, NULL);
+- if (parser != NULL && ns) {
+- /* implicit context only set for root parser, since child
+- parsers (i.e. external entity parsers) will inherit it
+- */
+- if (!setContext(parser, implicitContext)) {
+- XML_ParserFree(parser);
+- return NULL;
+- }
+- }
+- return parser;
++ return parserCreate(encodingName, memsuite, nameSep, NULL);
+ }
+
+ static XML_Parser
+@@ -946,7 +954,7 @@
+ poolClear(&temp2Pool);
+ parserInit(parser, encodingName);
+ dtdReset(_dtd, &parser->m_mem);
+- return setContext(parser, implicitContext);
++ return XML_TRUE;
+ }
+
+ enum XML_Status XMLCALL
+@@ -1499,8 +1507,10 @@
+ errorCode = XML_ERROR_FINISHED;
+ return XML_STATUS_ERROR;
+ case XML_INITIALIZED:
+- if (hash_secret_salt == 0)
+- hash_secret_salt = generate_hash_secret_salt();
++ if (!parsingSetup(parser)) {
++ errorCode = XML_ERROR_NO_MEMORY;
++ return XML_STATUS_ERROR;
++ }
+ default:
+ ps_parsing = XML_PARSING;
+ }
+@@ -1623,8 +1633,10 @@
+ errorCode = XML_ERROR_FINISHED;
+ return XML_STATUS_ERROR;
+ case XML_INITIALIZED:
+- if (hash_secret_salt == 0)
+- hash_secret_salt = generate_hash_secret_salt();
++ if (!parsingSetup(parser)) {
++ errorCode = XML_ERROR_NO_MEMORY;
++ return XML_STATUS_ERROR;
++ }
+ default:
+ ps_parsing = XML_PARSING;
+ }