From 9bf0f2c16ee86f644dd1432507edff94c08dc232 Mon Sep 17 00:00:00 2001 From: Sebastian Pipping Date: Mon, 19 Aug 2024 22:37:16 +0200 Subject: [PATCH] lib: Detect integer overflow in function nextScaffoldPart Reported by TaiYou --- expat/lib/xmlparse.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c index 91682c188..f737575ea 100644 --- a/expat/lib/xmlparse.c +++ b/expat/lib/xmlparse.c @@ -7558,6 +7558,15 @@ nextScaffoldPart(XML_Parser parser) { int next; if (! dtd->scaffIndex) { + /* Detect and prevent integer overflow. + * The preprocessor guard addresses the "always false" warning + * from -Wtype-limits on platforms where + * sizeof(unsigned int) < sizeof(size_t), e.g. on x86_64. */ +#if UINT_MAX >= SIZE_MAX + if (parser->m_groupSize > ((size_t)(-1) / sizeof(int))) { + return -1; + } +#endif dtd->scaffIndex = (int *)MALLOC(parser, parser->m_groupSize * sizeof(int)); if (! dtd->scaffIndex) return -1;