1
0
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:
Daniel Veillard
2009-08-21 18:40:50 +02:00
parent a721612e54
commit f4653dcd8b

View File

@@ -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)