commit 75bb51c072a0a505037bea18d18103473000b339 Author: Tomas Korbar Date: Wed Sep 11 15:07:26 2024 +0200 Fix CVE-2024-45491 https://github.com/libexpat/libexpat/pull/891 diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c index c3c1af9..6818c4e 100644 --- a/expat/lib/xmlparse.c +++ b/expat/lib/xmlparse.c @@ -6843,6 +6843,16 @@ dtdCopy(XML_Parser oldParser, DTD *newDtd, const DTD *oldDtd, const XML_Memory_H if (!newE) return 0; if (oldE->nDefaultAtts) { + /* Detect and prevent integer overflow. + * The preprocessor guard addresses the "always false" warning + * from -Wtype-limits on platforms where + * sizeof(int) < sizeof(size_t), e.g. on x86_64. */ +#if UINT_MAX >= SIZE_MAX + if ((size_t)oldE->nDefaultAtts + > ((size_t)(-1) / sizeof(DEFAULT_ATTRIBUTE))) { + return 0; + } +#endif newE->defaultAtts = (DEFAULT_ATTRIBUTE *) ms->malloc_fcn(oldE->nDefaultAtts * sizeof(DEFAULT_ATTRIBUTE)); if (!newE->defaultAtts) {