blob: af94eec29cf4195b9caefcaa5e1ec862369311e9 [file]
From fd23f4370d24d00352d1cc09b16687f16da6ae5b Mon Sep 17 00:00:00 2001
From: Tony Cook <tony@develop-help.com>
Date: Tue, 12 May 2026 14:47:31 +1000
Subject: [PATCH 1/2] perl/perl-security#147: test cases
The suggested case from the ticket and an alternative.
(cherry picked from commit e842efdafe7c51a687a4907e4887988fe6a025ef)
CVE: CVE-2026-8376
Upstream-Status: Backport [https://github.com/Perl/perl5/commit/e842efdafe7c51a687a4907e4887988fe6a025ef]
Signed-off-by: Theo Gaige (Schneider Electric) <tgaige.opensource@witekio.com>
---
t/re/pat_psycho.t | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/t/re/pat_psycho.t b/t/re/pat_psycho.t
index 336039521d..73a7992372 100644
--- a/t/re/pat_psycho.t
+++ b/t/re/pat_psycho.t
@@ -10,7 +10,7 @@
use strict;
use warnings;
use 5.010;
-
+use Config;
sub run_tests;
@@ -31,7 +31,7 @@ BEGIN {
skip_all('$PERL_SKIP_PSYCHO_TEST set') if $ENV{PERL_SKIP_PSYCHO_TEST};
-plan tests => 15; # Update this when adding/deleting tests.
+plan tests => 17; # Update this when adding/deleting tests.
run_tests() unless caller;
@@ -211,6 +211,20 @@ EOF
}
+
+ SKIP:
+ { # sec #147
+ $Config{ptrsize} == 4
+ or skip "these only fail on x32 and use too much memory on x64", 2;
+ local $::TODO = "This crashes";
+ # original case
+ fresh_perl_like('/\x{10000}{1073741824}/',
+ qr/Regexp out of space/, {}, "ssize_t overflow");
+
+ # synthesized but similar case
+ fresh_perl_like('/(?:\x{10001}\x{10000}){536870912}/',
+ qr/Regexp out of space/, {}, "ssize_t overflow again");
+ }
} # End of sub run_tests
1;
--
2.43.0