diff options
author | Dave Mitchell <davem@fdisolutions.com> | 2006-05-20 00:43:42 +0000 |
---|---|---|
committer | Dave Mitchell <davem@fdisolutions.com> | 2006-05-20 00:43:42 +0000 |
commit | 66bf836d545d4a639166fad46f83811d0df5f8ce (patch) | |
tree | 780368062c26a5482cc2fb050a348bae44da5b59 /regexec.c | |
parent | 37405f9009219de703848fda95b3f821e51fda4d (diff) | |
download | perl-66bf836d545d4a639166fad46f83811d0df5f8ce.tar.gz |
[perl #32041] SEGV with complicated regexp and long string
PL_reg_maxiter was wrapping to a negative value
p4raw-id: //depot/perl@28248
Diffstat (limited to 'regexec.c')
-rw-r--r-- | regexec.c | 3 |
1 files changed, 3 insertions, 0 deletions
@@ -3652,6 +3652,9 @@ S_regmatch(pTHX_ const regmatch_info *reginfo, regnode *prog) *that* much linear. */ if (!PL_reg_maxiter) { PL_reg_maxiter = (PL_regeol - PL_bostr + 1) * (scan->flags>>4); + /* possible overflow for long strings and many CURLYX's */ + if (PL_reg_maxiter < 0) + PL_reg_maxiter = I32_MAX; PL_reg_leftiter = PL_reg_maxiter; } if (PL_reg_leftiter-- == 0) { |