mirror of
https://github.com/GNOME/libxml2.git
synced 2025-10-18 18:22:45 +08:00
447899 potential double free in xmlFreeTextReader
* xmlreader.c: a document may still be referenced by fakenode, just free fakenode before freeing the document.
This commit is contained in:
@@ -2214,6 +2214,9 @@ xmlFreeTextReader(xmlTextReaderPtr reader) {
|
|||||||
xmlFree(reader->patternTab);
|
xmlFree(reader->patternTab);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
if (reader->faketext != NULL) {
|
||||||
|
xmlFreeNode(reader->faketext);
|
||||||
|
}
|
||||||
if (reader->ctxt != NULL) {
|
if (reader->ctxt != NULL) {
|
||||||
if (reader->dict == reader->ctxt->dict)
|
if (reader->dict == reader->ctxt->dict)
|
||||||
reader->dict = NULL;
|
reader->dict = NULL;
|
||||||
@@ -2235,9 +2238,6 @@ xmlFreeTextReader(xmlTextReaderPtr reader) {
|
|||||||
xmlFree(reader->sax);
|
xmlFree(reader->sax);
|
||||||
if ((reader->input != NULL) && (reader->allocs & XML_TEXTREADER_INPUT))
|
if ((reader->input != NULL) && (reader->allocs & XML_TEXTREADER_INPUT))
|
||||||
xmlFreeParserInputBuffer(reader->input);
|
xmlFreeParserInputBuffer(reader->input);
|
||||||
if (reader->faketext != NULL) {
|
|
||||||
xmlFreeNode(reader->faketext);
|
|
||||||
}
|
|
||||||
if (reader->buffer != NULL)
|
if (reader->buffer != NULL)
|
||||||
xmlBufferFree(reader->buffer);
|
xmlBufferFree(reader->buffer);
|
||||||
if (reader->entTab != NULL)
|
if (reader->entTab != NULL)
|
||||||
|
Reference in New Issue
Block a user