mirror of
https://github.com/libexpat/libexpat.git
synced 2025-04-13 08:02:56 +00:00
lib: Fix overeager DTD destruction in XML_ExternalEntityParserCreate
This commit is contained in:
parent
391551620e
commit
5290462a7e
1 changed files with 8 additions and 0 deletions
|
@ -1068,6 +1068,14 @@ parserCreate(const XML_Char *encodingName,
|
|||
parserInit(parser, encodingName);
|
||||
|
||||
if (encodingName && ! parser->m_protocolEncodingName) {
|
||||
if (dtd) {
|
||||
// We need to stop the upcoming call to XML_ParserFree from happily
|
||||
// destroying parser->m_dtd because the DTD is shared with the parent
|
||||
// parser and the only guard that keeps XML_ParserFree from destroying
|
||||
// parser->m_dtd is parser->m_isParamEntity but it will be set to
|
||||
// XML_TRUE only later in XML_ExternalEntityParserCreate (or not at all).
|
||||
parser->m_dtd = NULL;
|
||||
}
|
||||
XML_ParserFree(parser);
|
||||
return NULL;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue