From 1e2dd3a4b9a30ae7994533ce0cf6429f8c53ffb8 Mon Sep 17 00:00:00 2001 From: DistroBaker Date: Tue, 6 Apr 2021 12:25:23 +0000 Subject: [PATCH] Merged update from upstream sources This is an automated DistroBaker update from upstream sources. If you do not know what this is about or would like to opt out, contact the OSCI team. Source: https://src.fedoraproject.org/rpms/perl.git#d4be40cd41e70e291f7a52836675d54e4c6e0142 --- ...2.1-Perl_do_sv_dump-handle-PL_strtab.patch | 44 +++++++++++++ ...ft-shift-of-IV_MIN-under-use-integer.patch | 62 +++++++++++++++++++ perl.spec | 17 ++++- 3 files changed, 122 insertions(+), 1 deletion(-) create mode 100644 perl-5.32.1-Perl_do_sv_dump-handle-PL_strtab.patch create mode 100644 perl-5.33.8-Fix-broken-left-shift-of-IV_MIN-under-use-integer.patch diff --git a/perl-5.32.1-Perl_do_sv_dump-handle-PL_strtab.patch b/perl-5.32.1-Perl_do_sv_dump-handle-PL_strtab.patch new file mode 100644 index 0000000..9e04761 --- /dev/null +++ b/perl-5.32.1-Perl_do_sv_dump-handle-PL_strtab.patch @@ -0,0 +1,44 @@ +From 2ce7bf1ad5fd7aee21975b3dd1c8dceef3aab7e4 Mon Sep 17 00:00:00 2001 +From: David Mitchell +Date: Tue, 9 Mar 2021 16:42:11 +0000 +Subject: [PATCH] Perl_do_sv_dump(): handle PL_strtab +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +When dumping this special hash, the values in the HE entry are refcounts +rather than SV pointers. sv_dump() used to crash here. + +Petr Písař: Ported to 5.32.1 from upstream +a9bb6a62ae45bb372a5cca98a76d1a79edd89ccb. + +Signed-off-by: Petr Písař +--- + dump.c | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +diff --git a/dump.c b/dump.c +index f03c3f6..0f15d77 100644 +--- a/dump.c ++++ b/dump.c +@@ -2224,8 +2224,15 @@ Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bo + PerlIO_printf(file, "[UTF8 \"%s\"] ", sv_uni_display(d, keysv, 6 * SvCUR(keysv), UNI_DISPLAY_QQ)); + if (HvEITER_get(hv) == he) + PerlIO_printf(file, "[CURRENT] "); +- PerlIO_printf(file, "HASH = 0x%" UVxf "\n", (UV) hash); +- do_sv_dump(level+1, file, elt, nest+1, maxnest, dumpops, pvlim); ++ PerlIO_printf(file, "HASH = 0x%" UVxf, (UV) hash); ++ ++ if (sv == (SV*)PL_strtab) ++ PerlIO_printf(file, " REFCNT = 0x%" UVxf "\n", ++ (UV)he->he_valu.hent_refcount ); ++ else { ++ (void)PerlIO_putc(file, '\n'); ++ do_sv_dump(level+1, file, elt, nest+1, maxnest, dumpops, pvlim); ++ } + } + } + DONEHV:; +-- +2.26.3 + diff --git a/perl-5.33.8-Fix-broken-left-shift-of-IV_MIN-under-use-integer.patch b/perl-5.33.8-Fix-broken-left-shift-of-IV_MIN-under-use-integer.patch new file mode 100644 index 0000000..5ce6046 --- /dev/null +++ b/perl-5.33.8-Fix-broken-left-shift-of-IV_MIN-under-use-integer.patch @@ -0,0 +1,62 @@ +From 4e82c85b1c9c9b30253b8624470da6f20a6c0604 Mon Sep 17 00:00:00 2001 +From: Karl Williamson +Date: Mon, 15 Mar 2021 21:01:47 -0600 +Subject: [PATCH] Fix broken left shift of IV_MIN under 'use integer' +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This fixes GH 18639 + +When I wrote this code, I conflated casting and complementing. + +Signed-off-by: Petr Písař +--- + pp.c | 3 --- + t/op/bop.t | 9 ++++++++- + 2 files changed, 8 insertions(+), 4 deletions(-) + +diff --git a/pp.c b/pp.c +index d365afea4c..baf0777a47 100644 +--- a/pp.c ++++ b/pp.c +@@ -2007,9 +2007,6 @@ static IV S_iv_shift(IV iv, int shift, bool left) + * 18446744073709551552 + * */ + if (left) { +- if (iv == IV_MIN) { /* Casting this to a UV is undefined behavior */ +- return 0; +- } + return (IV) (((UV) iv) << shift); + } + +diff --git a/t/op/bop.t b/t/op/bop.t +index 07f057d0a9..31b6531a03 100644 +--- a/t/op/bop.t ++++ b/t/op/bop.t +@@ -18,7 +18,7 @@ BEGIN { + # If you find tests are failing, please try adding names to tests to track + # down where the failure is, and supply your new names as a patch. + # (Just-in-time test naming) +-plan tests => 502; ++plan tests => 503; + + # numerics + ok ((0xdead & 0xbeef) == 0x9ead); +@@ -33,6 +33,13 @@ ok ((33023 >> 7) == 257); + # signed vs. unsigned + ok ((~0 > 0 && do { use integer; ~0 } == -1)); + ++{ # GH #18639 ++ my $iv_min = -(~0 >> 1) - 1; ++ my $shifted; ++ { use integer; $shifted = $iv_min << 0 }; ++ is($shifted, $iv_min, "IV_MIN << 0 yields IV_MIN under 'use integer'"); ++} ++ + my $bits = 0; + for (my $i = ~0; $i; $i >>= 1) { ++$bits; } + my $cusp = 1 << ($bits - 1); +-- +2.26.3 + diff --git a/perl.spec b/perl.spec index 8870b93..9ddb993 100644 --- a/perl.spec +++ b/perl.spec @@ -100,7 +100,7 @@ License: GPL+ or Artistic Epoch: %{perl_epoch} Version: %{perl_version} # release number must be even higher, because dual-lived modules will be broken otherwise -Release: 473%{?dist} +Release: 474%{?dist} Summary: Practical Extraction and Report Language Url: https://www.perl.org/ Source0: https://www.cpan.org/src/5.0/perl-%{perl_version}.tar.xz @@ -273,6 +273,13 @@ Patch55: perl-5.32.1-hv.c-add-a-guard-clause-to-prevent-the-number-of-buc # in upstream after 5.33.7 Patch56: perl-5.33.7-regcomp.c-Remove-memory-leak.patch +# Fix dumping a hash entry of PL_strtab type, in upstream after 5.33.7 +Patch57: perl-5.32.1-Perl_do_sv_dump-handle-PL_strtab.patch + +# Fix an arithmetic left shift of a minimal integer value, GH#18639, +# in upstream after 5.33.8 +Patch58: perl-5.33.8-Fix-broken-left-shift-of-IV_MIN-under-use-integer.patch + # Link XS modules to libperl.so with EU::CBuilder on Linux, bug #960048 Patch200: perl-5.16.3-Link-XS-modules-to-libperl.so-with-EU-CBuilder-on-Li.patch @@ -4330,6 +4337,8 @@ you're not running VMS, this module does nothing. %patch54 -p1 %patch55 -p1 %patch56 -p1 +%patch57 -p1 +%patch58 -p1 %patch200 -p1 %patch201 -p1 @@ -4385,6 +4394,8 @@ perl -x patchlevel.h \ 'Fedora Patch54: Protect locale tests from LANGUAGE environment variable' \ 'Fedora Patch55: Prevent the number of buckets in a hash from getting too large' \ 'Fedora Patch56: Fix a memory leak when compiling a regular expression (GH#18604)' \ + 'Fedora Patch57: Fix dumping a hash entry of PL_strtab type' \ + 'Fedora Patch57: Fix an arithmetic left shift of a minimal integer value (GH#18639)' \ 'Fedora Patch200: Link XS modules to libperl.so with EU::CBuilder on Linux' \ 'Fedora Patch201: Link XS modules to libperl.so with EU::MM on Linux' \ %{nil} @@ -7159,6 +7170,10 @@ popd # Old changelog entries are preserved in CVS. %changelog +* Wed Mar 31 2021 Petr Pisar - 4:5.32.1-474 +- Fix dumping a hash entry of PL_strtab type +- Fix an arithmetic left shift of a minimal integer value (GH#18639) + * Thu Mar 04 2021 Jitka Plesnikova - 4:5.32.1-473 - Remove files excluded from dual-lived subpackages