Skip to content

Commit 4e68b2c

Browse files
committed
Patch from the upstream git
kkos/oniguruma#55 (CVE-2017-9226) b4bf968ad52afe14e60a2dc8a95d3555c543353a Modified for onig 5.9.6 f015fbdd95f76438cd86366467bb2b39870dd7c6 Modified for onig 5.9.6 Thanks to Mamoru TASAKA <mtasaka@fedoraproject.org>
1 parent f269cdc commit 4e68b2c

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

ext/mbstring/oniguruma/regparse.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3064,7 +3064,7 @@ fetch_token_in_cc(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
30643064
PUNFETCH;
30653065
prev = p;
30663066
num = scan_unsigned_octal_number(&p, end, 3, enc);
3067-
if (num < 0) return ONIGERR_TOO_BIG_NUMBER;
3067+
if (num < 0 || num >= 256) return ONIGERR_TOO_BIG_NUMBER;
30683068
if (p == prev) { /* can't read nothing. */
30693069
num = 0; /* but, it's not error */
30703070
}
@@ -3436,7 +3436,7 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
34363436
if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_OCTAL3)) {
34373437
prev = p;
34383438
num = scan_unsigned_octal_number(&p, end, (c == '0' ? 2:3), enc);
3439-
if (num < 0) return ONIGERR_TOO_BIG_NUMBER;
3439+
if (num < 0 || num >= 256) return ONIGERR_TOO_BIG_NUMBER;
34403440
if (p == prev) { /* can't read nothing. */
34413441
num = 0; /* but, it's not error */
34423442
}
@@ -4084,7 +4084,11 @@ next_state_val(CClassNode* cc, OnigCodePoint *vs, OnigCodePoint v,
40844084
switch (*state) {
40854085
case CCS_VALUE:
40864086
if (*type == CCV_SB)
4087+
{
4088+
if (*vs > 0xff)
4089+
return ONIGERR_INVALID_CODE_POINT_VALUE;
40874090
BITSET_SET_BIT(cc->bs, (int )(*vs));
4091+
}
40884092
else if (*type == CCV_CODE_POINT) {
40894093
r = add_code_range(&(cc->mbuf), env, *vs, *vs);
40904094
if (r < 0) return r;

0 commit comments

Comments
 (0)