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

