regcomp.c: Don't read outside array bound
authorKarl Williamson <khw@cpan.org>
Fri, 1 Aug 2014 17:19:06 +0000 (11:19 -0600)
committerKarl Williamson <khw@cpan.org>
Fri, 1 Aug 2014 17:22:19 +0000 (11:22 -0600)
This code is only in DEBUGGING builds had an off-by-one error
that would read beyond the end of the array.  This commit also removes
a redundant test

regcomp.c

index 8075010..6530068 100644 (file)
--- a/regcomp.c
+++ b/regcomp.c
@@ -16678,12 +16678,12 @@ S_put_latin1_charclass_innards(pTHX_ SV *sv, char *bitmap)
     PERL_ARGS_ASSERT_PUT_LATIN1_CHARCLASS_INNARDS;
 
     for (i = 0; i < 256; i++) {
-        if (i < 256 && BITMAP_TEST((U8 *) bitmap,i)) {
+        if (BITMAP_TEST((U8 *) bitmap,i)) {
 
             /* The character at index i should be output.  Find the next
              * character that should NOT be output */
             int j;
-            for (j = i + 1; j <= 256; j++) {
+            for (j = i + 1; j < 256; j++) {
                 if (! BITMAP_TEST((U8 *) bitmap, j)) {
                     break;
                 }