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