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