From c40cbf07a30c264846ad1135a3670535942441f6 Mon Sep 17 00:00:00 2001 From: Nick Wellnhofer Date: Mon, 8 May 2023 17:03:00 +0200 Subject: malloc-fail: Fix null deref after xmlXIncludeNewRef See #344. --- xinclude.c | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/xinclude.c b/xinclude.c index 09c1eef4..949c768a 100644 --- a/xinclude.c +++ b/xinclude.c @@ -264,19 +264,9 @@ xmlXIncludeNewRef(xmlXIncludeCtxtPtr ctxt, const xmlChar *URI, ret->elem = elem; ret->xml = 0; ret->inc = NULL; - if (ctxt->incMax == 0) { - ctxt->incMax = 4; - ctxt->incTab = (xmlXIncludeRefPtr *) xmlMalloc(ctxt->incMax * - sizeof(ctxt->incTab[0])); - if (ctxt->incTab == NULL) { - xmlXIncludeErrMemory(ctxt, elem, "growing XInclude context"); - xmlXIncludeFreeRef(ret); - return(NULL); - } - } if (ctxt->incNr >= ctxt->incMax) { xmlXIncludeRefPtr *tmp; - size_t newSize = ctxt->incMax * 2; + size_t newSize = ctxt->incMax ? ctxt->incMax * 2 : 4; tmp = (xmlXIncludeRefPtr *) xmlRealloc(ctxt->incTab, newSize * sizeof(ctxt->incTab[0])); @@ -286,7 +276,7 @@ xmlXIncludeNewRef(xmlXIncludeCtxtPtr ctxt, const xmlChar *URI, return(NULL); } ctxt->incTab = tmp; - ctxt->incMax *= 2; + ctxt->incMax = newSize; } ctxt->incTab[ctxt->incNr++] = ret; return(ret); -- cgit v1.2.1