pkgsrc-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: [pkgsrc-2026Q2] pkgsrc/lang/perl5
Module Name: pkgsrc
Committed By: bsiegert
Date: Sun Aug 9 19:00:15 UTC 2026
Modified Files:
pkgsrc/lang/perl5 [pkgsrc-2026Q2]: Makefile Makefile.common distinfo
pkgsrc/lang/perl5/patches [pkgsrc-2026Q2]:
patch-cpan_Archive-Tar_lib_Archive_Tar.pm
patch-cpan_Socket_Socket.xs patch-dist_Storable_Storable.xs
patch-pp__pack.c patch-regcomp__study.c
Log Message:
Pullup ticket #7224 - requested by maya
lang/perl5: security fix
(via patch)
perl5: Update to 5.42.3
Updated for security fixes.
Remove local patches backporting security fixes.
Release notes:
Security
CVE-2026-8376 - Buffer overflow in Perl_study_chunk
Perl_study_chunk in regcomp_study.c checked the size of the joined substring buffer in characters rather than bytes. On 32-bit builds, this can lead to an integer overflow of the size of the buffer
leading to out-of-bounds writes.
CVE-2026-57432 - Buffer overflow in S_measure_struct
If you call pack or unpack to operate on a structure whose computed size is too large to fit in memory, an integer overflow could happen that would result in a buffer overflow. This usually happens
as a result of embedding a large number as the repeat count for an item.
CVE-2026-13221 - Regex trie 16-bit field overflow
The trie optimization in the regex engine could overflow in an alternation with more than ~65k branches. This could cause both false positives and false negatives on such regular expressions.
Modules and Pragmata
Updated Modules and Pragmata
Archive::Tar has been upgraded from version 3.04 to 3.12.
This fixes CVE-2026-9538, CVE-2026-42496, and CVE-2026-42497.
Compress::Raw::Bzip2 has been upgraded from version 2.213 to 2.218.
HTTP::Tiny has been upgraded from version 0.090 to 0.096.
This fixes CVE-2026-7010 and CVE-2026-7017.
IO::Compress has been upgraded from version 2.213 to 2.223.
This fixes CVE-2025-15649, CVE-2026-48961, CVE-2026-48962, and CVE-2026-48959.
Module::CoreList has been upgraded from version 5.20260329_42 to 5.20260802_42.
Socket has been upgraded from version 2.038 to 2.041.
This fixes CVE-2026-12087.
Storable has been upgraded from version 3.37 to 3.37_01.
This fixes CVE-2026-57433.
To generate a diff of this commit:
cvs rdiff -u -r1.294.2.1 -r1.294.2.2 pkgsrc/lang/perl5/Makefile
cvs rdiff -u -r1.53 -r1.53.2.1 pkgsrc/lang/perl5/Makefile.common
cvs rdiff -u -r1.199.2.1 -r1.199.2.2 pkgsrc/lang/perl5/distinfo
cvs rdiff -u -r1.1 -r1.1.4.1 \
pkgsrc/lang/perl5/patches/patch-cpan_Archive-Tar_lib_Archive_Tar.pm
cvs rdiff -u -r1.3 -r1.3.2.1 \
pkgsrc/lang/perl5/patches/patch-cpan_Socket_Socket.xs
cvs rdiff -u -r1.2.2.2 -r1.2.2.3 \
pkgsrc/lang/perl5/patches/patch-dist_Storable_Storable.xs \
pkgsrc/lang/perl5/patches/patch-pp__pack.c
cvs rdiff -u -r1.1.4.1 -r1.1.4.2 \
pkgsrc/lang/perl5/patches/patch-regcomp__study.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: pkgsrc/lang/perl5/Makefile
diff -u pkgsrc/lang/perl5/Makefile:1.294.2.1 pkgsrc/lang/perl5/Makefile:1.294.2.2
--- pkgsrc/lang/perl5/Makefile:1.294.2.1 Thu Jul 16 21:08:19 2026
+++ pkgsrc/lang/perl5/Makefile Sun Aug 9 19:00:14 2026
@@ -1,10 +1,9 @@
-# $NetBSD: Makefile,v 1.294.2.1 2026/07/16 21:08:19 maya Exp $
+# $NetBSD: Makefile,v 1.294.2.2 2026/08/09 19:00:14 bsiegert Exp $
.include "license.mk"
.include "Makefile.common"
COMMENT= Practical Extraction and Report Language
-PKGREVISION= 4
CONFLICTS+= perl-base-[0-9]* perl-thread-[0-9]*
Index: pkgsrc/lang/perl5/Makefile.common
diff -u pkgsrc/lang/perl5/Makefile.common:1.53 pkgsrc/lang/perl5/Makefile.common:1.53.2.1
--- pkgsrc/lang/perl5/Makefile.common:1.53 Mon Mar 30 08:57:15 2026
+++ pkgsrc/lang/perl5/Makefile.common Sun Aug 9 19:00:14 2026
@@ -1,9 +1,9 @@
-# $NetBSD: Makefile.common,v 1.53 2026/03/30 08:57:15 wiz Exp $
+# $NetBSD: Makefile.common,v 1.53.2.1 2026/08/09 19:00:14 bsiegert Exp $
#
# used by lang/perl5/Makefile
# used by databases/p5-gdbm/Makefile
-DISTNAME= perl-5.42.2
+DISTNAME= perl-5.42.3
CATEGORIES= lang devel perl5
MASTER_SITES= ${MASTER_SITE_PERL_CPAN:=../../authors/id/S/SH/SHAY/}
DISTFILES+= ${DISTNAME}${EXTRACT_SUFX}
Index: pkgsrc/lang/perl5/distinfo
diff -u pkgsrc/lang/perl5/distinfo:1.199.2.1 pkgsrc/lang/perl5/distinfo:1.199.2.2
--- pkgsrc/lang/perl5/distinfo:1.199.2.1 Thu Jul 16 21:08:19 2026
+++ pkgsrc/lang/perl5/distinfo Sun Aug 9 19:00:14 2026
@@ -1,20 +1,15 @@
-$NetBSD: distinfo,v 1.199.2.1 2026/07/16 21:08:19 maya Exp $
+$NetBSD: distinfo,v 1.199.2.2 2026/08/09 19:00:14 bsiegert Exp $
-BLAKE2s (perl-5.42.2.tar.gz) = a2e271ef18aa3cadeed75cf6bf48cfc30b8a9f6675053194f285cd13d97e0791
-SHA512 (perl-5.42.2.tar.gz) = c17925b1146270310fbefd82a98bd94532b499a547f5be005ece204918bfc0034e473a97df643925625a940209f81a65acdd99857b3b18911461571230262c0f
-Size (perl-5.42.2.tar.gz) = 20609653 bytes
+BLAKE2s (perl-5.42.3.tar.gz) = 6461575e459c71899bbe8176e689925098d28cdb22df113a54d058421d360bdb
+SHA512 (perl-5.42.3.tar.gz) = 13f969fae53deb47abacbb49b6d7440eabe696bfd81ed33bb797077db72be1e8c2e9a03c68f5dc9a1551783f35131b52773725800fd67f0160ccd318ba1360ba
+Size (perl-5.42.3.tar.gz) = 20619668 bytes
SHA1 (patch-Configure) = 7e04b70aefcb66399679582a2f2e95306cf1e47b
SHA1 (patch-Makefile.SH) = 56203aea57c429a94760f039a978463b8859b0a9
-SHA1 (patch-cpan_Archive-Tar_lib_Archive_Tar.pm) = af896b3c8770d03c851fe1022ed1348857b1b4cc
SHA1 (patch-cpan_ExtUtils-MakeMaker_lib_ExtUtils_MM__BeOS.pm) = 79e5aeccfa272ca5ec08bffc616d8053ae90ac51
SHA1 (patch-cpan_ExtUtils-MakeMaker_lib_ExtUtils_MM__Unix.pm) = 996556f221eb0c75c316315462bf6cea6746e030
SHA1 (patch-cpan_ExtUtils-MakeMaker_t_MM__BeOS.t) = 9b0e7ab85fdab4887b1754599a8879bd7d9f36cc
-SHA1 (patch-cpan_Socket_Socket.xs) = 50613ed2966eb389a6816504d339a2a26276b90f
-SHA1 (patch-dist_Storable_Storable.xs) = 0bc5f182965fe58b91e085119a89ec8ca7b45994
SHA1 (patch-hints_cygwin.sh) = 5e2e7179336c9bc085bd2e83d22755a235ea1a4a
SHA1 (patch-hints_linux.sh) = 4baa8f80695687abb53d4f4e1830cf86db5b2bf7
SHA1 (patch-hints_netbsd.sh) = cb498170c18f1f429eed9be245cd1df24c7ad628
SHA1 (patch-hints_solaris__2.sh) = 83b20650435ea3b62314af6059f3d82c3dd6b0a2
SHA1 (patch-installperl) = b129d64cc17b898b44fe6282b8b1df36e342d0ef
-SHA1 (patch-pp__pack.c) = 7217920ed766b126ee3db7f928bdbb889c83d363
-SHA1 (patch-regcomp__study.c) = d9705946924b1f941c6e25c095f54824cee01155
Index: pkgsrc/lang/perl5/patches/patch-cpan_Archive-Tar_lib_Archive_Tar.pm
diff -u pkgsrc/lang/perl5/patches/patch-cpan_Archive-Tar_lib_Archive_Tar.pm:1.1 pkgsrc/lang/perl5/patches/patch-cpan_Archive-Tar_lib_Archive_Tar.pm:1.1.4.1
--- pkgsrc/lang/perl5/patches/patch-cpan_Archive-Tar_lib_Archive_Tar.pm:1.1 Wed May 27 22:35:30 2026
+++ pkgsrc/lang/perl5/patches/patch-cpan_Archive-Tar_lib_Archive_Tar.pm Sun Aug 9 19:00:15 2026
@@ -1,54 +0,0 @@
-$NetBSD: patch-cpan_Archive-Tar_lib_Archive_Tar.pm,v 1.1 2026/05/27 22:35:30 wiz Exp $
-
-Archive::Tar versions before 3.10 for Perl allow memory exhaustion via
-attacker controlled entry size field in tar header.
-https://github.com/jib/archive-tar-new/commit/f9af01426038e29d9578825a0cd3626946ab08c7.patch
-
---- cpan/Archive-Tar/lib/Archive/Tar.pm.orig 2026-01-18 16:32:21.000000000 +0000
-+++ cpan/Archive-Tar/lib/Archive/Tar.pm
-@@ -24,7 +24,7 @@ use vars qw[$DEBUG $error $VERSION $WARN $FOLLOW_SYMLI
- use vars qw[$DEBUG $error $VERSION $WARN $FOLLOW_SYMLINK $CHOWN $CHMOD
- $DO_NOT_USE_PREFIX $HAS_PERLIO $HAS_IO_STRING $SAME_PERMISSIONS
- $INSECURE_EXTRACT_MODE $ZERO_PAD_NUMBERS @ISA @EXPORT $RESOLVE_SYMLINK
-- $EXTRACT_BLOCK_SIZE
-+ $EXTRACT_BLOCK_SIZE $MAX_FILE_SIZE
- ];
-
- @ISA = qw[Exporter];
-@@ -41,6 +41,7 @@ $EXTRACT_BLOCK_SIZE = 1024 * 1024 * 1024;
- $ZERO_PAD_NUMBERS = 0;
- $RESOLVE_SYMLINK = $ENV{'PERL5_AT_RESOLVE_SYMLINK'} || 'speed';
- $EXTRACT_BLOCK_SIZE = 1024 * 1024 * 1024;
-+$MAX_FILE_SIZE = 1024 * 1024 * 1024;
-
- BEGIN {
- use Config;
-@@ -444,6 +445,14 @@ sub _read_tar {
-
- my $block = BLOCK_SIZE->( $entry->size );
-
-+ if ( $MAX_FILE_SIZE && $entry->size > $MAX_FILE_SIZE ) {
-+ $self->_error( qq[Entry '] . $entry->full_path .
-+ qq[' declared size ] . $entry->size .
-+ qq[ bytes exceeds \$Archive::Tar::MAX_FILE_SIZE ] .
-+ qq[($MAX_FILE_SIZE); refusing to allocate] );
-+ next LOOP;
-+ }
-+
- $data = $entry->get_content_by_ref;
-
- my $skip = 0;
-@@ -2186,6 +2195,13 @@ extraction may fail with an error.
- cannot be arbitrarily large since some operating systems limit the number of
- bytes that can be written in one call to C<write(2)>, so if this is too large,
- extraction may fail with an error.
-+
-+=head2 $Archive::Tar::MAX_FILE_SIZE
-+
-+This variable holds an upper bound on the per-entry declared size that
-+C<Archive::Tar> will accept when reading an archive. Entries whose header
-+claims a larger size are refused with an error before any read allocation.
-+Defaults to 1 GiB. Set to 0 to disable the cap.
-
- =cut
-
Index: pkgsrc/lang/perl5/patches/patch-cpan_Socket_Socket.xs
diff -u pkgsrc/lang/perl5/patches/patch-cpan_Socket_Socket.xs:1.3 pkgsrc/lang/perl5/patches/patch-cpan_Socket_Socket.xs:1.3.2.1
--- pkgsrc/lang/perl5/patches/patch-cpan_Socket_Socket.xs:1.3 Tue Jun 16 07:12:10 2026
+++ pkgsrc/lang/perl5/patches/patch-cpan_Socket_Socket.xs Sun Aug 9 19:00:15 2026
@@ -1,144 +0,0 @@
-$NetBSD: patch-cpan_Socket_Socket.xs,v 1.3 2026/06/16 07:12:10 wiz Exp $
-
-Pull security fix from 2.041
-
-[BUGFIXES]
-* Fix reuse of `STRLEN len` variable in pack_ip_mreq_source()
-
-https://github.com/Perl/perl5/commit/de19a0b0ad1900fef976c5c1400bd8f11ec6c6cb.patch
-
---- cpan/Socket/Socket.xs.orig 2026-01-18 17:50:03.000000000 +0000
-+++ cpan/Socket/Socket.xs
-@@ -1272,26 +1272,35 @@ pack_ip_mreq(multiaddr, interface=&PL_sv_undef)
- struct ip_mreq mreq;
- char * multiaddrbytes;
- char * interfacebytes;
-- STRLEN len;
-- if (DO_UTF8(multiaddr) && !sv_utf8_downgrade(multiaddr, 1))
-- croak("Wide character in %s", "Socket::pack_ip_mreq");
-- multiaddrbytes = SvPVbyte(multiaddr, len);
-- if (len != sizeof(mreq.imr_multiaddr))
-- croak("Bad arg length %s, length is %" UVuf ", should be %" UVuf,
-- "Socket::pack_ip_mreq", (UV)len, (UV)sizeof(mreq.imr_multiaddr));
-+
-+ {
-+ if (DO_UTF8(multiaddr) && !sv_utf8_downgrade(multiaddr, 1))
-+ croak("Wide character in %s", "Socket::pack_ip_mreq");
-+
-+ STRLEN len;
-+ multiaddrbytes = SvPVbyte(multiaddr, len);
-+ if (len != sizeof(mreq.imr_multiaddr))
-+ croak("Bad arg length %s, length is %" UVuf ", should be %" UVuf,
-+ "Socket::pack_ip_mreq", (UV)len, (UV)sizeof(mreq.imr_multiaddr));
-+ }
-+
- Zero(&mreq, sizeof(mreq), char);
- Copy(multiaddrbytes, &mreq.imr_multiaddr, sizeof(mreq.imr_multiaddr), char);
- if(SvOK(interface)) {
- if (DO_UTF8(interface) && !sv_utf8_downgrade(interface, 1))
- croak("Wide character in %s", "Socket::pack_ip_mreq");
-+
-+ STRLEN len;
- interfacebytes = SvPVbyte(interface, len);
- if (len != sizeof(mreq.imr_interface))
- croak("Bad arg length %s, length is %" UVuf ", should be %" UVuf,
- "Socket::pack_ip_mreq", (UV)len, (UV)sizeof(mreq.imr_interface));
-+
- Copy(interfacebytes, &mreq.imr_interface, sizeof(mreq.imr_interface), char);
- }
- else
- mreq.imr_interface.s_addr = INADDR_ANY;
-+
- ST(0) = sv_2mortal(newSVpvn((char *)&mreq, sizeof(mreq)));
- #else
- not_here("pack_ip_mreq");
-@@ -1331,25 +1340,38 @@ pack_ip_mreq_source(multiaddr, source, interface=&PL_s
- char * multiaddrbytes;
- char * sourcebytes;
- char * interfacebytes;
-- STRLEN len;
-- if (DO_UTF8(multiaddr) && !sv_utf8_downgrade(multiaddr, 1))
-- croak("Wide character in %s", "Socket::pack_ip_mreq_source");
-- multiaddrbytes = SvPVbyte(multiaddr, len);
-- if (len != sizeof(mreq.imr_multiaddr))
-- croak("Bad arg length %s, length is %" UVuf ", should be %" UVuf,
-- "Socket::pack_ip_mreq", (UV)len, (UV)sizeof(mreq.imr_multiaddr));
-- if (DO_UTF8(source) && !sv_utf8_downgrade(source, 1))
-- croak("Wide character in %s", "Socket::pack_ip_mreq_source");
-- if (len != sizeof(mreq.imr_sourceaddr))
-- croak("Bad arg length %s, length is %" UVuf ", should be %" UVuf,
-- "Socket::pack_ip_mreq", (UV)len, (UV)sizeof(mreq.imr_sourceaddr));
-- sourcebytes = SvPVbyte(source, len);
-+
-+ {
-+ if (DO_UTF8(multiaddr) && !sv_utf8_downgrade(multiaddr, 1))
-+ croak("Wide character in %s", "Socket::pack_ip_mreq_source");
-+
-+ STRLEN len;
-+ multiaddrbytes = SvPVbyte(multiaddr, len);
-+ if (len != sizeof(mreq.imr_multiaddr))
-+ croak("Bad arg length %s, length is %" UVuf ", should be %" UVuf,
-+ "Socket::pack_ip_mreq", (UV)len, (UV)sizeof(mreq.imr_multiaddr));
-+ }
-+
-+ {
-+ if (DO_UTF8(source) && !sv_utf8_downgrade(source, 1))
-+ croak("Wide character in %s", "Socket::pack_ip_mreq_source");
-+
-+ STRLEN len;
-+ sourcebytes = SvPVbyte(source, len);
-+ if (len != sizeof(mreq.imr_sourceaddr))
-+ croak("Bad arg length %s, length is %" UVuf ", should be %" UVuf,
-+ "Socket::pack_ip_mreq", (UV)len, (UV)sizeof(mreq.imr_sourceaddr));
-+ }
-+
- Zero(&mreq, sizeof(mreq), char);
- Copy(multiaddrbytes, &mreq.imr_multiaddr, sizeof(mreq.imr_multiaddr), char);
- Copy(sourcebytes, &mreq.imr_sourceaddr, sizeof(mreq.imr_sourceaddr), char);
-+
- if(SvOK(interface)) {
- if (DO_UTF8(interface) && !sv_utf8_downgrade(interface, 1))
- croak("Wide character in %s", "Socket::pack_ip_mreq");
-+
-+ STRLEN len;
- interfacebytes = SvPVbyte(interface, len);
- if (len != sizeof(mreq.imr_interface))
- croak("Bad arg length %s, length is %" UVuf ", should be %" UVuf,
-@@ -1358,6 +1380,7 @@ pack_ip_mreq_source(multiaddr, source, interface=&PL_s
- }
- else
- mreq.imr_interface.s_addr = INADDR_ANY;
-+
- ST(0) = sv_2mortal(newSVpvn((char *)&mreq, sizeof(mreq)));
- #else
- PERL_UNUSED_VAR(multiaddr);
-@@ -1398,16 +1421,22 @@ pack_ipv6_mreq(multiaddr, ifindex)
- #ifdef HAS_IPV6_MREQ
- struct ipv6_mreq mreq;
- char * multiaddrbytes;
-- STRLEN len;
-- if (DO_UTF8(multiaddr) && !sv_utf8_downgrade(multiaddr, 1))
-- croak("Wide character in %s", "Socket::pack_ipv6_mreq");
-- multiaddrbytes = SvPVbyte(multiaddr, len);
-- if (len != sizeof(mreq.ipv6mr_multiaddr))
-- croak("Bad arg length %s, length is %" UVuf ", should be %" UVuf,
-- "Socket::pack_ipv6_mreq", (UV)len, (UV)sizeof(mreq.ipv6mr_multiaddr));
-+
-+ {
-+ if (DO_UTF8(multiaddr) && !sv_utf8_downgrade(multiaddr, 1))
-+ croak("Wide character in %s", "Socket::pack_ipv6_mreq");
-+
-+ STRLEN len;
-+ multiaddrbytes = SvPVbyte(multiaddr, len);
-+ if (len != sizeof(mreq.ipv6mr_multiaddr))
-+ croak("Bad arg length %s, length is %" UVuf ", should be %" UVuf,
-+ "Socket::pack_ipv6_mreq", (UV)len, (UV)sizeof(mreq.ipv6mr_multiaddr));
-+ }
-+
- Zero(&mreq, sizeof(mreq), char);
- Copy(multiaddrbytes, &mreq.ipv6mr_multiaddr, sizeof(mreq.ipv6mr_multiaddr), char);
- mreq.ipv6mr_interface = ifindex;
-+
- ST(0) = sv_2mortal(newSVpvn((char *)&mreq, sizeof(mreq)));
- #else
- PERL_UNUSED_VAR(multiaddr);
Index: pkgsrc/lang/perl5/patches/patch-dist_Storable_Storable.xs
diff -u pkgsrc/lang/perl5/patches/patch-dist_Storable_Storable.xs:1.2.2.2 pkgsrc/lang/perl5/patches/patch-dist_Storable_Storable.xs:1.2.2.3
--- pkgsrc/lang/perl5/patches/patch-dist_Storable_Storable.xs:1.2.2.2 Thu Jul 16 21:08:19 2026
+++ pkgsrc/lang/perl5/patches/patch-dist_Storable_Storable.xs Sun Aug 9 19:00:15 2026
@@ -1,20 +0,0 @@
-$NetBSD: patch-dist_Storable_Storable.xs,v 1.2.2.2 2026/07/16 21:08:19 maya Exp $
-
-Storable versions before 3.41 for Perl have a signed integer overflow
-when deserializing a crafted SX_HOOK record
-https://github.com/Perl/perl5/commit/e4f681784bcdeaa91ff02a2fa4cdcae5c46779d7.patch
-
---- dist/Storable/Storable.xs.orig 2026-01-18 17:50:04.000000000 +0000
-+++ dist/Storable/Storable.xs
-@@ -5035,7 +5035,10 @@ static SV *retrieve_hook_common(pTHX_ stcxt_t *cxt, co
- }
- else
- GETMARK(len3);
-- if (len3) {
-+ if (len3 == I32_MAX)
-+ /* If len3 is exactly I32_MAX it will upset av_extend below */
-+ CROAK(("Invalid count of hook data items"));
-+ else if (len3) {
- av = newAV();
- av_extend(av, len3 + 1); /* Leave room for [0] */
- AvFILLp(av) = len3; /* About to be filled anyway */
Index: pkgsrc/lang/perl5/patches/patch-pp__pack.c
diff -u pkgsrc/lang/perl5/patches/patch-pp__pack.c:1.2.2.2 pkgsrc/lang/perl5/patches/patch-pp__pack.c:1.2.2.3
--- pkgsrc/lang/perl5/patches/patch-pp__pack.c:1.2.2.2 Thu Jul 16 21:08:19 2026
+++ pkgsrc/lang/perl5/patches/patch-pp__pack.c Sun Aug 9 19:00:15 2026
@@ -1,36 +0,0 @@
-$NetBSD: patch-pp__pack.c,v 1.2.2.2 2026/07/16 21:08:19 maya Exp $
-
-Perl versions through 5.43.10 have an integer overflow in
-S_measure_struct leading to an out-of-bounds heap read in pack and
-unpack
-https://github.com/Perl/perl5/commit/40754edc72dd3e513d758153c0e2f0215897740e.patch
-https://github.com/Perl/perl5/commit/5f7eb6bbbe0510964e3fb1d6bb691e5445913e55.patch
-
---- pp_pack.c.orig 2026-01-18 17:50:04.000000000 +0000
-+++ pp_pack.c
-@@ -513,12 +513,12 @@ S_measure_struct(pTHX_ tempsym_t* symptr)
- break;
- case 'B':
- case 'b':
-- len = (len + 7)/8;
-+ len = (len / 8) + !!(len % 8);
- size = 1;
- break;
- case 'H':
- case 'h':
-- len = (len + 1)/2;
-+ len = (len / 2) + !!(len % 2);
- size = 1;
- break;
-
-@@ -528,6 +528,10 @@ S_measure_struct(pTHX_ tempsym_t* symptr)
- break;
- }
- }
-+ if ((size > 0) &&
-+ ((len > SSize_t_MAX / size) || /* detect overflow of len * size */
-+ (len * size > SSize_t_MAX - total))) /* detect overflow of total + len * size */
-+ croak("Pack template structure size is too large");
- total += len * size;
- }
- return total;
Index: pkgsrc/lang/perl5/patches/patch-regcomp__study.c
diff -u pkgsrc/lang/perl5/patches/patch-regcomp__study.c:1.1.4.1 pkgsrc/lang/perl5/patches/patch-regcomp__study.c:1.1.4.2
--- pkgsrc/lang/perl5/patches/patch-regcomp__study.c:1.1.4.1 Thu Jul 16 21:08:19 2026
+++ pkgsrc/lang/perl5/patches/patch-regcomp__study.c Sun Aug 9 19:00:15 2026
@@ -1,43 +0,0 @@
-$NetBSD: patch-regcomp__study.c,v 1.1.4.1 2026/07/16 21:08:19 maya Exp $
-
-Perl versions through 5.43.9 produce silently incorrect regular
-expression matches when an alternation of more than 65535 fixed string
-branches is compiled into a trie in Perl_study_chunk
-https://github.com/Perl/perl5/commit/03f74bbbd3a68350d926ee93d56ee4808c28c4c7.patch
-
-Perl/perl-security#147: test against the actual character lengths
-https://github.com/Perl/perl5/commit/5e7f119eb2bb1181be908701f22bf7068e722f1c
-
---- regcomp_study.c.orig 2026-01-18 17:50:04.000000000 +0000
-+++ regcomp_study.c
-@@ -1841,6 +1841,16 @@ Perl_study_chunk(pTHX_
- tail = regnext( tail );
- }
-
-+ /* The code below currently saves the difference from
-+ * start to finish in a 16-bit field, causing
-+ * GH #23388. This defeats the design of batching
-+ * tries into chunks that each fit. khw thinks it is
-+ * too late in the 5.44 cycle to relook at the design,
-+ * so for now anyway, don't make a trie that would
-+ * overflow */
-+ if (tail - startbranch >= U16_MAX) {
-+ continue;
-+ }
-
- DEBUG_TRIE_COMPILE_r({
- regprop(RExC_rx, RExC_mysv, tail, NULL, pRExC_state);
-@@ -2770,6 +2780,13 @@ Perl_study_chunk(pTHX_
- (U8 *) SvEND(data->last_found))
- - (U8*)s;
- l -= old;
-+
-+ if (l > 0 &&
-+ (mincount >= SSize_t_MAX / (SSize_t)l
-+ || old > SSize_t_MAX - mincount * (SSize_t)l)) {
-+ FAIL("Regexp out of space");
-+ }
-+
- /* Get the added string: */
- last_str = newSVpvn_utf8(s + old, l, UTF);
- last_chrs = UTF ? utf8_length((U8*)(s + old),
Home |
Main Index |
Thread Index |
Old Index