Add tested for corrupted regnode
Karl Williamson [Fri, 15 Jan 2010 00:36:46 +0000 (17:36 -0700)]
regcomp.c

index c290fbd..ff9c582 100644 (file)
--- a/regcomp.c
+++ b/regcomp.c
@@ -9866,6 +9866,10 @@ Perl_regnext(pTHX_ register regnode *p)
     if (!p)
        return(NULL);
 
+    if (OP(p) > REGNODE_MAX) {         /* regnode.type is unsigned */
+       Perl_croak(aTHX_ "Corrupted regexp opcode %d > %d", (int)OP(p), (int)REGNODE_MAX);
+    }
+
     offset = (reg_off_by_arg[OP(p)] ? ARG(p) : NEXT_OFF(p));
     if (offset == 0)
        return(NULL);