1
0
mirror of https://gitlab.gnome.org/GNOME/libxml2.git synced 2024-10-26 20:25:14 +03:00

Fix memory leak in xmlParseElementMixedContentDecl

Free parsed content if malloc fails to avoid a memory leak.

Found with libFuzzer.
This commit is contained in:
Nick Wellnhofer 2020-12-18 12:14:52 +01:00
parent 1d73f07d67
commit 45da175c14

View File

@ -6082,14 +6082,20 @@ xmlParseElementMixedContentDecl(xmlParserCtxtPtr ctxt, int inputchk) {
NEXT;
if (elem == NULL) {
ret = xmlNewDocElementContent(ctxt->myDoc, NULL, XML_ELEMENT_CONTENT_OR);
if (ret == NULL) return(NULL);
if (ret == NULL) {
xmlFreeDocElementContent(ctxt->myDoc, cur);
return(NULL);
}
ret->c1 = cur;
if (cur != NULL)
cur->parent = ret;
cur = ret;
} else {
n = xmlNewDocElementContent(ctxt->myDoc, NULL, XML_ELEMENT_CONTENT_OR);
if (n == NULL) return(NULL);
if (n == NULL) {
xmlFreeDocElementContent(ctxt->myDoc, ret);
return(NULL);
}
n->c1 = xmlNewDocElementContent(ctxt->myDoc, elem, XML_ELEMENT_CONTENT_ELEMENT);
if (n->c1 != NULL)
n->c1->parent = n;