}
else if (isDIGIT(*pat)) {
len = *pat++ - '0';
- while (isDIGIT(*pat))
+ while (isDIGIT(*pat)) {
len = (len * 10) + (*pat++ - '0');
+ if (len < 0)
+ Perl_croak(aTHX_ "Repeat count in unpack overflows");
+ }
}
else
len = (datumtype != '@');
}
else if (isDIGIT(*pat)) {
len = *pat++ - '0';
- while (isDIGIT(*pat))
+ while (isDIGIT(*pat)) {
len = (len * 10) + (*pat++ - '0');
+ if (len < 0)
+ Perl_croak(aTHX_ "Repeat count in pack overflows");
+ }
}
else
len = 1;
else if (rx->prelen == 1 && *rx->precomp == '^') {
if (!(pm->op_pmflags & PMf_MULTILINE)
&& !(pm->op_pmregexp->reganch & ROPT_WARNED)) {
- if (ckWARN_d(WARN_DEPRECATED))
+ if (ckWARN(WARN_DEPRECATED))
Perl_warner(aTHX_ WARN_DEPRECATED,
"split /^/ better written as split /^/m");
pm->op_pmregexp->reganch |= ROPT_WARNED;