diff options
author | Nick Wellnhofer <wellnhofer@aevum.de> | 2020-08-19 13:13:20 +0200 |
---|---|---|
committer | Nick Wellnhofer <wellnhofer@aevum.de> | 2020-08-19 13:13:48 +0200 |
commit | fbb7fa9a9ad8269834d32ff872b1477ff7b9c705 (patch) | |
tree | 4f07f6c523a21a00461fd7dd03dc7abedce62e3b /xinclude.c | |
parent | 19cae17f5a2acfbd5554d145bb87cd6bf2de244f (diff) | |
download | libxml2-fbb7fa9a9ad8269834d32ff872b1477ff7b9c705.tar.gz |
Fix memory leak in xmlXIncludeAddNode error paths
Found by OSS-Fuzz.
Diffstat (limited to 'xinclude.c')
-rw-r--r-- | xinclude.c | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -627,8 +627,8 @@ xmlXIncludeAddNode(xmlXIncludeCtxtPtr ctxt, xmlNodePtr cur) { xmlXIncludeErr(ctxt, cur, XML_XINCLUDE_RECURSION, "detected a local recursion with no xpointer in %s\n", URL); - if (fragment != NULL) - xmlFree(fragment); + xmlFree(URL); + xmlFree(fragment); return(-1); } @@ -640,12 +640,15 @@ xmlXIncludeAddNode(xmlXIncludeCtxtPtr ctxt, xmlNodePtr cur) { if (xmlStrEqual(URL, ctxt->urlTab[i])) { xmlXIncludeErr(ctxt, cur, XML_XINCLUDE_RECURSION, "detected a recursion in %s\n", URL); + xmlFree(URL); + xmlFree(fragment); return(-1); } } } ref = xmlXIncludeNewRef(ctxt, URL, cur); + xmlFree(URL); if (ref == NULL) { return(-1); } @@ -653,7 +656,6 @@ xmlXIncludeAddNode(xmlXIncludeCtxtPtr ctxt, xmlNodePtr cur) { ref->doc = NULL; ref->xml = xml; ref->count = 1; - xmlFree(URL); return(0); } |