From 14476b059d44e03f2d2ab01718224015fad46bd6 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Fri, 30 Nov 2018 08:40:18 +0100 Subject: [PATCH] 5.28.1 bump --- .gitignore | 1 + ...ipt-run-bug-1-followed-by-Thai-digit.patch | 100 ---------- ...0-Perl_my_setenv-handle-integer-wrap.patch | 180 ------------------ ...when-index-1-as-a-boolean-expression.patch | 103 ---------- ...ys-close-the-directory-handle-on-cle.patch | 103 ---------- perl.spec | 32 +--- sources | 2 +- 7 files changed, 10 insertions(+), 511 deletions(-) delete mode 100644 perl-5.28.0-Fix-script-run-bug-1-followed-by-Thai-digit.patch delete mode 100644 perl-5.29.0-Perl_my_setenv-handle-integer-wrap.patch delete mode 100644 perl-5.29.0-treat-when-index-1-as-a-boolean-expression.patch delete mode 100644 perl-5.29.1-perl-133314-always-close-the-directory-handle-on-cle.patch diff --git a/.gitignore b/.gitignore index 24c0cc0..f354a4e 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,4 @@ perl-5.12.1.tar.gz /perl-5.26.2-RC1.tar.bz2 /perl-5.26.2.tar.bz2 /perl-5.28.0.tar.xz +/perl-5.28.1.tar.xz diff --git a/perl-5.28.0-Fix-script-run-bug-1-followed-by-Thai-digit.patch b/perl-5.28.0-Fix-script-run-bug-1-followed-by-Thai-digit.patch deleted file mode 100644 index 480d731..0000000 --- a/perl-5.28.0-Fix-script-run-bug-1-followed-by-Thai-digit.patch +++ /dev/null @@ -1,100 +0,0 @@ -From 7b4a3fe1d488df004e3969802fe121697cd3d6e5 Mon Sep 17 00:00:00 2001 -From: Karl Williamson -Date: Thu, 16 Aug 2018 16:14:01 -0600 -Subject: [PATCH] Fix script run bug '1' followed by Thai digit -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This does not have a ticket, but was pointed out in -http://nntp.perl.org/group/perl.perl5.porters/251870 - -The logic for deciding if it was needed to check if a character is a -digit was flawed. - -Petr Písař: Ported to 5.28.0. - -Signed-off-by: Petr Písař ---- - regexec.c | 46 +++++++++++++++++++++++++++++++--------------- - t/re/script_run.t | 5 +++++ - 2 files changed, 36 insertions(+), 15 deletions(-) - -diff --git a/regexec.c b/regexec.c -index 95bb254..d1a3937 100644 ---- a/regexec.c -+++ b/regexec.c -@@ -10599,23 +10599,39 @@ Perl_isSCRIPT_RUN(pTHX_ const U8 * s, const U8 * send, const bool utf8_target) - scripts_match: - - /* Here, the script of the character is compatible with that of the -- * run. Either they match exactly, or one or both can be any of -- * several scripts, and the intersection is not empty. If the -- * character is not a decimal digit, we are done with it. Otherwise, -- * it could still fail if it is from a different set of 10 than seen -- * already (or we may not have seen any, and we need to set the -- * sequence). If we have determined a single script and that script -- * only has one set of digits (almost all scripts are like that), then -- * this isn't a problem, as any digit must come from the same sequence. -- * The only scripts that have multiple sequences have been constructed -- * to be 0 in 'script_zeros[]'. -+ * run. That means that in most cases, it continues the script run. -+ * Either it and the run match exactly, or one or both can be in any of -+ * several scripts, and the intersection is not empty. But if the -+ * character is a decimal digit, we need further handling. If we -+ * haven't seen a digit before, it would establish what set of 10 all -+ * must come from; and if we have established a set, we need to check -+ * that this is in it. - * -- * Here we check if it is a digit. */ -+ * But there are cases we can rule out without having to look up if -+ * this is a digit: -+ * a. All instances of [0-9] have been dealt with earlier. -+ * b. The next digit encoded by Unicode is 1600 code points further -+ * on, so if the code point in this loop iteration is less than -+ * that, it isn't a digit. -+ * c. Most scripts that have digits have a single set of 10. If -+ * we've encountered a digit in such a script, 'zero_of_run' is -+ * set to the code point (call it z) whose numeric value is 0. -+ * If the code point in this loop iteration is in the range -+ * z..z+9, it is in the script's set of 10, and we've actually -+ * handled it earlier in this function and won't reach this -+ * point. But, code points in that script that aren't in that -+ * range can't be digits, so we don't have to look any such up. -+ * We can tell if this script is such a one by looking at -+ * 'script_zeros[]' for it. It is non-zero iff it has a single -+ * set of digits. This rule doesn't apply if we haven't narrowed -+ * down the possible scripts to a single one yet. Nor if the -+ * zero of the run is '0', as that also hasn't narrowed things -+ * down completely */ - if ( cp >= FIRST_NON_ASCII_DECIMAL_DIGIT -- && ( ( zero_of_run == 0 -- || ( ( script_of_char >= 0 -- && script_zeros[script_of_char] == 0) -- || intersection)))) -+ && ( intersection -+ || script_of_char < 0 /* Also implies an intersection */ -+ || zero_of_run == '0' -+ || script_zeros[script_of_char] == 0)) - { - SSize_t range_zero_index; - range_zero_index = _invlist_search(decimals_invlist, cp); -diff --git a/t/re/script_run.t b/t/re/script_run.t -index ca234d9..10c7103 100644 ---- a/t/re/script_run.t -+++ b/t/re/script_run.t -@@ -84,6 +84,11 @@ foreach my $type ('script_run', 'sr', 'atomic_script_run', 'asr') { - - # From UTS 39 - like("写真だけの結婚式", $script_run, "Mixed Hiragana and Han"); -+ -+ unlike "\N{THAI DIGIT FIVE}1", $script_run, "Thai digit followed by '1'"; -+ unlike "1\N{THAI DIGIT FIVE}", $script_run, "'1' followed by Thai digit "; -+ unlike "\N{BENGALI DIGIT ZERO}\N{CHAKMA DIGIT SEVEN}", $script_run, -+ "Two digits in same extended script but from different sets of 10"; - } - - # Until fixed, this was skipping the '[' --- -2.14.4 - diff --git a/perl-5.29.0-Perl_my_setenv-handle-integer-wrap.patch b/perl-5.29.0-Perl_my_setenv-handle-integer-wrap.patch deleted file mode 100644 index e48935d..0000000 --- a/perl-5.29.0-Perl_my_setenv-handle-integer-wrap.patch +++ /dev/null @@ -1,180 +0,0 @@ -From 34716e2a6ee2af96078d62b065b7785c001194be Mon Sep 17 00:00:00 2001 -From: David Mitchell -Date: Fri, 29 Jun 2018 13:37:03 +0100 -Subject: [PATCH] Perl_my_setenv(); handle integer wrap -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RT #133204 - -Wean this function off int/I32 and onto UV/Size_t. -Also, replace all malloc-ish calls with a wrapper that does -overflow checks, - -In particular, it was doing (nlen + vlen + 2) which could wrap when -the combined length of the environment variable name and value -exceeded around 0x7fffffff. - -The wrapper check function is probably overkill, but belt and braces... - -NB this function has several variant parts, #ifdef'ed by platform -type; I have blindly changed the parts that aren't compiled under linux. - -Signed-off-by: Petr Písař ---- - util.c | 76 ++++++++++++++++++++++++++++++++++++++++++++++-------------------- - 1 file changed, 53 insertions(+), 23 deletions(-) - -diff --git a/util.c b/util.c -index 7282dd9cfe..c5c7becc0f 100644 ---- a/util.c -+++ b/util.c -@@ -2061,8 +2061,40 @@ Perl_new_warnings_bitfield(pTHX_ STRLEN *buffer, const char *const bits, - *(s+(nlen+1+vlen)) = '\0' - - #ifdef USE_ENVIRON_ARRAY -- /* VMS' my_setenv() is in vms.c */ -+ -+/* small wrapper for use by Perl_my_setenv that mallocs, or reallocs if -+ * 'current' is non-null, with up to three sizes that are added together. -+ * It handles integer overflow. -+ */ -+static char * -+S_env_alloc(void *current, Size_t l1, Size_t l2, Size_t l3, Size_t size) -+{ -+ void *p; -+ Size_t sl, l = l1 + l2; -+ -+ if (l < l2) -+ goto panic; -+ l += l3; -+ if (l < l3) -+ goto panic; -+ sl = l * size; -+ if (sl < l) -+ goto panic; -+ -+ p = current -+ ? safesysrealloc(current, sl) -+ : safesysmalloc(sl); -+ if (p) -+ return (char*)p; -+ -+ panic: -+ croak_memory_wrap(); -+} -+ -+ -+/* VMS' my_setenv() is in vms.c */ - #if !defined(WIN32) && !defined(NETWARE) -+ - void - Perl_my_setenv(pTHX_ const char *nam, const char *val) - { -@@ -2078,28 +2110,27 @@ Perl_my_setenv(pTHX_ const char *nam, const char *val) - #ifndef PERL_USE_SAFE_PUTENV - if (!PL_use_safe_putenv) { - /* most putenv()s leak, so we manipulate environ directly */ -- I32 i; -- const I32 len = strlen(nam); -- int nlen, vlen; -+ UV i; -+ Size_t vlen, nlen = strlen(nam); - - /* where does it go? */ - for (i = 0; environ[i]; i++) { -- if (strnEQ(environ[i],nam,len) && environ[i][len] == '=') -+ if (strnEQ(environ[i], nam, nlen) && environ[i][nlen] == '=') - break; - } - - if (environ == PL_origenviron) { /* need we copy environment? */ -- I32 j; -- I32 max; -+ UV j, max; - char **tmpenv; - - max = i; - while (environ[max]) - max++; -- tmpenv = (char**)safesysmalloc((max+2) * sizeof(char*)); -+ /* XXX shouldn't that be max+1 rather than max+2 ??? - DAPM */ -+ tmpenv = (char**)S_env_alloc(NULL, max, 2, 0, sizeof(char*)); - for (j=0; j -Date: Sat, 14 Jul 2018 10:47:04 +0100 -Subject: [PATCH] treat when(index() > -1) as a boolean expression -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RT #133368 - -when(X) is normally compiled as when($_ ~~ X) *except* when X appears to -be a boolean expression, in which case it's used directly. - -5.28.0 introduced an optimisation whereby comparisons involving index -like - - index(...) != -1 - -eliminated the comparison, and pp_index() returned a boolean value -directly. This defeated the 'look for a boolean op' mechanism, and so - - when(index(...) != -1) - -and similar were being incorrectly compiled as - - when($_ ~~ (index(...) != -1)) - -Signed-off-by: Petr Písař ---- - op.c | 8 +++++++- - t/op/switch.t | 23 ++++++++++++++++++++++- - 2 files changed, 29 insertions(+), 2 deletions(-) - -diff --git a/op.c b/op.c -index a05a1319d4..ddeb484b64 100644 ---- a/op.c -+++ b/op.c -@@ -9072,6 +9072,13 @@ S_looks_like_bool(pTHX_ const OP *o) - case OP_FLOP: - - return TRUE; -+ -+ case OP_INDEX: -+ case OP_RINDEX: -+ /* optimised-away (index() != -1) or similar comparison */ -+ if (o->op_private & OPpTRUEBOOL) -+ return TRUE; -+ return FALSE; - - case OP_CONST: - /* Detect comparisons that have been optimized away */ -@@ -9081,7 +9088,6 @@ S_looks_like_bool(pTHX_ const OP *o) - return TRUE; - else - return FALSE; -- - /* FALLTHROUGH */ - default: - return FALSE; -diff --git a/t/op/switch.t b/t/op/switch.t -index e5385df0b4..6ff69e0bce 100644 ---- a/t/op/switch.t -+++ b/t/op/switch.t -@@ -10,7 +10,7 @@ use strict; - use warnings; - no warnings 'experimental::smartmatch'; - --plan tests => 195; -+plan tests => 197; - - # The behaviour of the feature pragma should be tested by lib/feature.t - # using the tests in t/lib/feature/*. This file tests the behaviour of -@@ -1358,6 +1358,27 @@ given("xyz") { - "scalar value of false when"; - } - -+# RT #133368 -+# index() and rindex() comparisons such as '> -1' are optimised away. Make -+# sure that they're still treated as a direct boolean expression rather -+# than when(X) being implicitly converted to when($_ ~~ X) -+ -+{ -+ my $s = "abc"; -+ my $ok = 0; -+ given("xyz") { -+ when (index($s, 'a') > -1) { $ok = 1; } -+ } -+ ok($ok, "RT #133368 index"); -+ -+ $ok = 0; -+ given("xyz") { -+ when (rindex($s, 'a') > -1) { $ok = 1; } -+ } -+ ok($ok, "RT #133368 rindex"); -+} -+ -+ - # Okay, that'll do for now. The intricacies of the smartmatch - # semantics are tested in t/op/smartmatch.t. Taintedness of - # returned values is checked in t/op/taint.t. --- -2.14.4 - diff --git a/perl-5.29.1-perl-133314-always-close-the-directory-handle-on-cle.patch b/perl-5.29.1-perl-133314-always-close-the-directory-handle-on-cle.patch deleted file mode 100644 index 8df0e8c..0000000 --- a/perl-5.29.1-perl-133314-always-close-the-directory-handle-on-cle.patch +++ /dev/null @@ -1,103 +0,0 @@ -From 3d5e9c119db6b727684fe75dfcfe5831c4351bec Mon Sep 17 00:00:00 2001 -From: Tony Cook -Date: Mon, 2 Jul 2018 10:43:19 +1000 -Subject: [PATCH 2/2] (perl #133314) always close the directory handle on clean - up -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Previously the directory handle was only closed if the rest of the -magic free clean up is done, but in most success cases that code -doesn't run, leaking the directory handle. - -So always close the directory if our AV is available. - -Signed-off-by: Petr Písař ---- - doio.c | 56 +++++++++++++++++++++++++++++++------------------------- - 1 file changed, 31 insertions(+), 25 deletions(-) - -diff --git a/doio.c b/doio.c -index 4b8923f77c..16daf9fd11 100644 ---- a/doio.c -+++ b/doio.c -@@ -1163,44 +1163,50 @@ S_argvout_free(pTHX_ SV *io, MAGIC *mg) { - - /* mg_obj can be NULL if a thread is created with the handle open, in which - case we leave any clean up to the parent thread */ -- if (mg->mg_obj && IoIFP(io)) { -- SV **pid_psv; -+ if (mg->mg_obj) { - #ifdef ARGV_USE_ATFUNCTIONS - SV **dir_psv; - DIR *dir; -+ -+ dir_psv = av_fetch((AV*)mg->mg_obj, ARGVMG_ORIG_DIRP, FALSE); -+ assert(dir_psv && *dir_psv && SvIOK(*dir_psv)); -+ dir = INT2PTR(DIR *, SvIV(*dir_psv)); - #endif -- PerlIO *iop = IoIFP(io); -+ if (IoIFP(io)) { -+ SV **pid_psv; -+ PerlIO *iop = IoIFP(io); - -- assert(SvTYPE(mg->mg_obj) == SVt_PVAV); -+ assert(SvTYPE(mg->mg_obj) == SVt_PVAV); - -- pid_psv = av_fetch((AV*)mg->mg_obj, ARGVMG_ORIG_PID, FALSE); -+ pid_psv = av_fetch((AV*)mg->mg_obj, ARGVMG_ORIG_PID, FALSE); - -- assert(pid_psv && *pid_psv); -+ assert(pid_psv && *pid_psv); - -- if (SvIV(*pid_psv) == (IV)PerlProc_getpid()) { -- /* if we get here the file hasn't been closed explicitly by the -- user and hadn't been closed implicitly by nextargv(), so -- abandon the edit */ -- SV **temp_psv = av_fetch((AV*)mg->mg_obj, ARGVMG_TEMP_NAME, FALSE); -- const char *temp_pv = SvPVX(*temp_psv); -+ if (SvIV(*pid_psv) == (IV)PerlProc_getpid()) { -+ /* if we get here the file hasn't been closed explicitly by the -+ user and hadn't been closed implicitly by nextargv(), so -+ abandon the edit */ -+ SV **temp_psv = av_fetch((AV*)mg->mg_obj, ARGVMG_TEMP_NAME, FALSE); -+ const char *temp_pv = SvPVX(*temp_psv); - -- assert(temp_psv && *temp_psv && SvPOK(*temp_psv)); -- (void)PerlIO_close(iop); -- IoIFP(io) = IoOFP(io) = NULL; -+ assert(temp_psv && *temp_psv && SvPOK(*temp_psv)); -+ (void)PerlIO_close(iop); -+ IoIFP(io) = IoOFP(io) = NULL; - #ifdef ARGV_USE_ATFUNCTIONS -- dir_psv = av_fetch((AV*)mg->mg_obj, ARGVMG_ORIG_DIRP, FALSE); -- assert(dir_psv && *dir_psv && SvIOK(*dir_psv)); -- dir = INT2PTR(DIR *, SvIV(*dir_psv)); -- if (dir) { -- if (unlinkat(my_dirfd(dir), temp_pv, 0) < 0 && -- NotSupported(errno)) -- (void)UNLINK(temp_pv); -- closedir(dir); -- } -+ if (dir) { -+ if (unlinkat(my_dirfd(dir), temp_pv, 0) < 0 && -+ NotSupported(errno)) -+ (void)UNLINK(temp_pv); -+ } - #else -- (void)UNLINK(temp_pv); -+ (void)UNLINK(temp_pv); - #endif -+ } - } -+#ifdef ARGV_USE_ATFUNCTIONS -+ if (dir) -+ closedir(dir); -+#endif - } - - return 0; --- -2.14.4 - diff --git a/perl.spec b/perl.spec index e838547..e5fdd11 100644 --- a/perl.spec +++ b/perl.spec @@ -1,4 +1,4 @@ -%global perl_version 5.28.0 +%global perl_version 5.28.1 %global perl_epoch 4 %global perl_arch_stem -thread-multi %global perl_archname %{_arch}-%{_os}%{perl_arch_stem} @@ -81,7 +81,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: 425%{?dist} +Release: 426%{?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 @@ -153,10 +153,6 @@ Patch14: perl-5.27.8-hints-linux-Add-lphtread-to-lddlflags.patch # Adjust tests to gdbm-1.15, RT#133295 Patch15: perl-5.29.0-Remove-ext-GDBM_File-t-fatal.t.patch -# Fix an integer wrap when allocating memory for an environment variable, -# RT#133204, in upstream after 5.29.0 -Patch16: perl-5.29.0-Perl_my_setenv-handle-integer-wrap.patch - # Fix printing a warning about a wide character when matching a regular # expression while ISO-8859-1 locale is in effect, in upstream after 5.29.0 Patch17: perl-5.29.0-regexec.c-Call-macro-with-correct-args.patch @@ -165,17 +161,12 @@ Patch17: perl-5.29.0-regexec.c-Call-macro-with-correct-args.patch # in upstream after 5.29.0 Patch18: perl-5.29.0-perl.h-Add-parens-around-macro-arguments.patch -# Fix index() and rindex() optimization in given-when boolean context, -# RT#133368, in upstream after 5.29.0 -Patch19: perl-5.29.0-treat-when-index-1-as-a-boolean-expression.patch - # Fix build conditions in locale.c, in upstream after 5.29.0 Patch20: perl-5.29.0-locale.c-Fix-conditional-compilation.patch # Fix a file descriptor leak in in-place edits, RT#133314, # in upstream after 5.29.1 Patch21: perl-5.29.1-perl-133314-test-for-handle-leaks-from-in-place-edit.patch -Patch22: perl-5.29.1-perl-133314-always-close-the-directory-handle-on-cle.patch # Fix a buffer overrun in deprecated S_is_utf8_common(), # in upstream after 5.29.1 @@ -184,10 +175,6 @@ Patch23: perl-5.29.1-utf8.c-Make-safer-a-deprecated-function.patch # Fix a time race in Time-HiRes/t/itimer.t test, in upstream after 5.29.1 Patch24: perl-5.29.1-Time-HiRes-t-itimer.t-avoid-race-condition.patch -# Fix matching an ASCII digit followed by a non-ASCII digit using a script -# run, in upstream after 5.29.1 -Patch25: perl-5.28.0-Fix-script-run-bug-1-followed-by-Thai-digit.patch - # Fix Time::Piece to handle objects in overloaded methods correctly, # in upstream after 5.29.1 Patch26: perl-5.29.1-Update-Time-Piece-to-CPAN-version-1.33.patch @@ -255,7 +242,7 @@ BuildRequires: rsyslog # compat macro needed for rebuild -%global perl_compat perl(:MODULE_COMPAT_5.28.0) +%global perl_compat perl(:MODULE_COMPAT_5.28.1) Requires: %perl_compat Requires: perl-interpreter%{?_isa} = %{perl_epoch}:%{perl_version}-%{release} @@ -407,6 +394,7 @@ Summary: The libraries for the perl run-time License: (GPL+ or Artistic) and HSRL and MIT and UCD # Compat provides Provides: %perl_compat +Provides: perl(:MODULE_COMPAT_5.28.0) # Interpreter version to fulfil required genersted from "require 5.006;" Provides: perl(:VERSION) = %{perl_version} # Integeres are 64-bit on all platforms @@ -2775,16 +2763,12 @@ Perl extension for Version Objects %patch13 -p1 %patch14 -p1 %patch15 -p1 -%patch16 -p1 %patch17 -p1 %patch18 -p1 -%patch19 -p1 %patch20 -p1 %patch21 -p1 -%patch22 -p1 %patch23 -p1 %patch24 -p1 -%patch25 -p1 %patch26 -p1 %patch27 -p1 %patch28 -p1 @@ -2812,16 +2796,12 @@ perl -x patchlevel.h \ 'Fedora Patch13: Fix executing arybase::_tie_it() in Safe compartement (RT#131588)' \ 'Fedora Patch14: Link XS modules to pthread library to fix linking with -z defs' \ 'Fedora Patch15: Adjust tests to gdbm-1.15 (RT#133295)' \ - 'Fedora Patch16: Fix an integer wrap when allocating memory for an environment variable (RT#133204)' \ 'Fedora Patch17: Fix printing a warning about a wide character when matching a regular expression while ISO-8859-1 locale is in effect' \ 'Fedora Patch18: Fix invoking a check for wide characters while ISO-8859-1 locale is in effect' \ - 'Fedora Patch19: Fix index() and rindex() optimization in given-when boolean context (RT#133368)' \ 'Fedora Patch20: Fix build conditions in locale.c' \ 'Fedora Patch21: Fix a file descriptor leak in in-place edits (RT#133314)' \ - 'Fedora Patch22: Fix a file descriptor leak in in-place edits (RT#133314)' \ 'Fedora Patch23: Fix a buffer overrun in deprecated S_is_utf8_common()' \ 'Fedora Patch24: Fix a time race in Time-HiRes/t/itimer.t test' \ - 'Fedora Patch25: Fix matching an ASCII digit followed by a non-ASCII digit using a script run' \ 'Fedora Patch26: Fix Time::Piece to handle objects in overloaded methods correctly' \ 'Fedora Patch27: Fix an assignment to a lexical variable in multiconcatenation expressions (RT#133441)' \ 'Fedora Patch28: Fix a spurious warning about uninitialized value in warn (RT#132683)' \ @@ -5114,6 +5094,10 @@ popd # Old changelog entries are preserved in CVS. %changelog +* Fri Nov 30 2018 Jitka Plesnikova - 4:5.28.1-426 +- 5.28.1 bump +- Fix CVE-2018-18312 (heap-buffer-overflow write in regcomp.c) + * Fri Nov 02 2018 Petr Pisar - 4:5.28.0-425 - Install Encode developmental files when installing complete Perl diff --git a/sources b/sources index 9c09e6a..94ad58f 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (perl-5.28.0.tar.xz) = de701e37371b81cecf06098bb2c09017bde9cebaf9537d58838d0adf605ac2ecf739897b0a73576a7adb74d4cf65591ec4d2ed1f94b7191e695f88cb7e214a39 +SHA512 (perl-5.28.1.tar.xz) = 6d18e9684c3a15bea2ccd28f116d1829c3acd5547551ee3539f0060c0d1a75246dfe570dfb9d5f00625a994a0afb0cbd6a5a5f9a407fef75a421e7dbc6491b43