PATCH: [perl #133620] heap buffer overflow
authorKarl Williamson <khw@cpan.org>
Wed, 31 Oct 2018 16:22:03 +0000 (10:22 -0600)
committerKarl Williamson <khw@cpan.org>
Wed, 31 Oct 2018 16:49:50 +0000 (10:49 -0600)
This happens when an alternate parse string is constructed, and the
error message needs to be translated into the terms of the original one,
the error is just past the right edge.  The translation was not getting
done.  Simply use the original terms.

regcomp.c
t/re/re_tests

index 105059f..5d5f715 100644 (file)
--- a/regcomp.c
+++ b/regcomp.c
@@ -686,7 +686,7 @@ static const scan_data_t zero_scan_data = {
 #define REPORT_LOCATION_ARGS(xC)                                            \
     UTF8fARG(UTF,                                                           \
              (xI(xC) > eI) /* Don't run off end */                          \
-              ? eC - sC   /* Length before the <--HERE */                   \
+              ? eI - sI   /* Length before the <--HERE */                   \
               : ((xI_offset(xC) >= 0)                                       \
                  ? xI_offset(xC)                                            \
                  : (Perl_croak(aTHX_ "panic: %s: %d: negative offset: %"    \
index f4747f6..2959f86 100644 (file)
@@ -1999,6 +1999,7 @@ AB\s+\x{100}      AB \x{100}X     y       -       -
 (?il)\x{100}|\x{100}|\x{FE}    \xFE    y       $&      \xFE
 \A([\x00-\x7F]+)(.*)\z \007\011\012    y       $&      \007\011\012    # [perl #133311]
 (?:(?^:(?{1}))[^0-9])  :       y       $&      :       # [perl #133348]
+/[\xdf-/i      -       c       -       Invalid [] range        # [perl #133620] likely only fails under valgrind
 
 # Keep these lines at the end of the file
 # vim: softtabstop=0 noexpandtab