d35ea2
From 81169c06a76f62ff987ed990ac910c2ae08b3f91 Mon Sep 17 00:00:00 2001
d35ea2
From: Karl Williamson <khw@cpan.org>
d35ea2
Date: Tue, 10 Mar 2020 15:19:57 -0600
d35ea2
Subject: [PATCH] reentr.c: Buffer sizes for asctime_r,ctime_r are small
d35ea2
MIME-Version: 1.0
d35ea2
Content-Type: text/plain; charset=UTF-8
d35ea2
Content-Transfer-Encoding: 8bit
d35ea2
d35ea2
The needed sizes of these are stated in the man pages, and are much
d35ea2
smaller than were being allocated.
d35ea2
d35ea2
Signed-off-by: Petr Písař <ppisar@redhat.com>
d35ea2
---
d35ea2
 reentr.c        | 4 ++--
d35ea2
 regen/reentr.pl | 5 ++++-
d35ea2
 2 files changed, 6 insertions(+), 3 deletions(-)
d35ea2
d35ea2
diff --git a/reentr.c b/reentr.c
d35ea2
index 8ddda7bfc0..8438c8f90f 100644
d35ea2
--- a/reentr.c
d35ea2
+++ b/reentr.c
d35ea2
@@ -52,14 +52,14 @@ Perl_reentrant_size(pTHX) {
d35ea2
 #  define REENTRANTUSUALSIZE	4096	/* Make something up. */
d35ea2
 
d35ea2
 #  ifdef HAS_ASCTIME_R
d35ea2
-	PL_reentrant_buffer->_asctime_size = REENTRANTSMALLSIZE;
d35ea2
+	PL_reentrant_buffer->_asctime_size = 26;
d35ea2
 #  endif /* HAS_ASCTIME_R */
d35ea2
 
d35ea2
 #  ifdef HAS_CRYPT_R
d35ea2
 #  endif /* HAS_CRYPT_R */
d35ea2
 
d35ea2
 #  ifdef HAS_CTIME_R
d35ea2
-	PL_reentrant_buffer->_ctime_size = REENTRANTSMALLSIZE;
d35ea2
+	PL_reentrant_buffer->_ctime_size = 26;
d35ea2
 #  endif /* HAS_CTIME_R */
d35ea2
 
d35ea2
 #  ifdef HAS_GETGRNAM_R
d35ea2
diff --git a/regen/reentr.pl b/regen/reentr.pl
d35ea2
index f5788c7ad9..94721e9dec 100644
d35ea2
--- a/regen/reentr.pl
d35ea2
+++ b/regen/reentr.pl
d35ea2
@@ -495,8 +495,11 @@ for my $func (@seenf) {
d35ea2
 	char*	_${func}_buffer;
d35ea2
 	size_t	_${func}_size;
d35ea2
 EOF
d35ea2
+            my $size = ($func =~ /^(asctime|ctime)$/)
d35ea2
+                       ? 26
d35ea2
+                       : "REENTRANTSMALLSIZE";
d35ea2
 	    push @size, <
d35ea2
-	PL_reentrant_buffer->_${func}_size = REENTRANTSMALLSIZE;
d35ea2
+	PL_reentrant_buffer->_${func}_size = $size;
d35ea2
 EOF
d35ea2
 	    pushinitfree $func;
d35ea2
 	    pushssif $endif;
d35ea2
-- 
d35ea2
2.25.4
d35ea2