3f1b01
From 981fbfc16220a15e72457d8ece4e014988746946 Mon Sep 17 00:00:00 2001
3f1b01
From: Karl Williamson <khw@cpan.org>
3f1b01
Date: Thu, 12 Mar 2020 12:48:47 -0600
3f1b01
Subject: [PATCH] reentr.c: Prevent infinite looping
3f1b01
MIME-Version: 1.0
3f1b01
Content-Type: text/plain; charset=UTF-8
3f1b01
Content-Transfer-Encoding: 8bit
3f1b01
3f1b01
This is an easy, though  paranoid hedge to prevent something that should
3f1b01
never happen from causing an infinite loop if it were to happen.
3f1b01
3f1b01
Signed-off-by: Petr Písař <ppisar@redhat.com>
3f1b01
---
3f1b01
 reentr.c        | 2 +-
3f1b01
 regen/reentr.pl | 2 +-
3f1b01
 2 files changed, 2 insertions(+), 2 deletions(-)
3f1b01
3f1b01
diff --git a/reentr.c b/reentr.c
3f1b01
index 8438c8f90f..2429aa2f5d 100644
3f1b01
--- a/reentr.c
3f1b01
+++ b/reentr.c
3f1b01
@@ -36,7 +36,7 @@
3f1b01
 
3f1b01
 #define RenewDouble(data_pointer, size_pointer, type) \
3f1b01
     STMT_START { \
3f1b01
-	const size_t size = *(size_pointer) * 2; \
3f1b01
+	const size_t size = MAX(*(size_pointer), 1) * 2; \
3f1b01
 	Renew((data_pointer), (size), type); \
3f1b01
 	*(size_pointer) = size; \
3f1b01
     } STMT_END
3f1b01
diff --git a/regen/reentr.pl b/regen/reentr.pl
3f1b01
index 94721e9dec..ba2e1c8fa6 100644
3f1b01
--- a/regen/reentr.pl
3f1b01
+++ b/regen/reentr.pl
3f1b01
@@ -818,7 +818,7 @@ print $c <<"EOF";
3f1b01
 
3f1b01
 #define RenewDouble(data_pointer, size_pointer, type) \\
3f1b01
     STMT_START { \\
3f1b01
-	const size_t size = *(size_pointer) * 2; \\
3f1b01
+	const size_t size = MAX(*(size_pointer), 1) * 2; \\
3f1b01
 	Renew((data_pointer), (size), type); \\
3f1b01
 	*(size_pointer) = size; \\
3f1b01
     } STMT_END
3f1b01
-- 
3f1b01
2.25.4
3f1b01