@@ -3064,7 +3064,7 @@ fetch_token_in_cc(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
3064
3064
PUNFETCH ;
3065
3065
prev = p ;
3066
3066
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 ;
3068
3068
if (p == prev ) { /* can't read nothing. */
3069
3069
num = 0 ; /* but, it's not error */
3070
3070
}
@@ -3436,7 +3436,7 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
3436
3436
if (IS_SYNTAX_OP (syn , ONIG_SYN_OP_ESC_OCTAL3 )) {
3437
3437
prev = p ;
3438
3438
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 ;
3440
3440
if (p == prev ) { /* can't read nothing. */
3441
3441
num = 0 ; /* but, it's not error */
3442
3442
}
@@ -4084,7 +4084,11 @@ next_state_val(CClassNode* cc, OnigCodePoint *vs, OnigCodePoint v,
4084
4084
switch (* state ) {
4085
4085
case CCS_VALUE :
4086
4086
if (* type == CCV_SB )
4087
+ {
4088
+ if (* vs > 0xff )
4089
+ return ONIGERR_INVALID_CODE_POINT_VALUE ;
4087
4090
BITSET_SET_BIT (cc -> bs , (int )(* vs ));
4091
+ }
4088
4092
else if (* type == CCV_CODE_POINT ) {
4089
4093
r = add_code_range (& (cc -> mbuf ), env , * vs , * vs );
4090
4094
if (r < 0 ) return r ;
0 commit comments