From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Sebastian Pipping Date: Mon, 19 Aug 2024 22:37:16 +0200 Subject: [PATCH 3/4] lib: Detect integer overflow in function nextScaffoldPart Reported by TaiYou --- lib/xmlparse.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/xmlparse.c b/lib/xmlparse.c index 9bd93b0..e6f334a 100644 --- a/lib/xmlparse.c +++ b/lib/xmlparse.c @@ -6929,6 +6929,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;