Blame SOURCES/0006-Prevent-integer-overflow-on-m_groupSize-in-doProlog-.patch

f57d65
From 06d354807ac297374973631a6418edf7e3fcbf30 Mon Sep 17 00:00:00 2001
f57d65
From: Rob Crittenden <rcritten@redhat.com>
f57d65
Date: Mon, 28 Feb 2022 10:43:23 -0500
f57d65
Subject: [PATCH 6/6] Prevent integer overflow on m_groupSize in doProlog
f57d65
 (CVE-2021-46143)
f57d65
f57d65
Backported from upstream https://github.com/libexpat/libexpat/pull/538
f57d65
f57d65
Resolves: #2058560
f57d65
---
f57d65
 lib/expat/xmlparse/xmlparse.c | 5 +++++
f57d65
 1 file changed, 5 insertions(+)
f57d65
f57d65
diff --git a/lib/expat/xmlparse/xmlparse.c b/lib/expat/xmlparse/xmlparse.c
f57d65
index 16ab82a..b9aa927 100644
f57d65
--- a/lib/expat/xmlparse/xmlparse.c
f57d65
+++ b/lib/expat/xmlparse/xmlparse.c
f57d65
@@ -3991,6 +3991,11 @@ doProlog(XML_Parser       const xmlParserP,
f57d65
     case XML_ROLE_GROUP_OPEN:
f57d65
       if (prologState.level >= groupSize) {
f57d65
         if (groupSize) {
f57d65
+          /* Detect and prevent integer overflow */
f57d65
+          if (groupSize > (unsigned int)(-1) / 2u) {
f57d65
+            *errorCodeP = XML_ERROR_NO_MEMORY;
f57d65
+            return;
f57d65
+          }
f57d65
           char *temp = realloc(groupConnector, groupSize *= 2);
f57d65
           if (!temp) {
f57d65
             *errorCodeP = XML_ERROR_NO_MEMORY;
f57d65
-- 
f57d65
2.31.1
f57d65