Change 28248 by [EMAIL PROTECTED] on 2006/05/20 00:43:42

        [perl #32041] SEGV with complicated regexp and long string
        PL_reg_maxiter was wrapping to a negative value

Affected files ...

... //depot/perl/op.c#823 edit
... //depot/perl/regexec.c#423 edit

Differences ...

==== //depot/perl/regexec.c#423 (text) ====
Index: perl/regexec.c
--- perl/regexec.c#422~28206~   2006-05-16 06:14:12.000000000 -0700
+++ perl/regexec.c      2006-05-19 17:43:42.000000000 -0700
@@ -3652,6 +3652,9 @@
                        *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) {
End of Patch.

Reply via email to