|
| 1 | +Backport ruby/ruby#16801 |
| 2 | +https://github.com/ruby/ruby/commit/493d26dcdea8b2f0ac5d28e057b401bc809e7fae |
| 3 | + |
| 4 | +--- a/include/ruby/onigmo.h |
| 5 | ++++ b/include/ruby/onigmo.h |
| 6 | +@@ -687,6 +687,8 @@ |
| 7 | + #define ONIGERR_NEVER_ENDING_RECURSION -221 |
| 8 | + #define ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY -222 |
| 9 | + #define ONIGERR_INVALID_CHAR_PROPERTY_NAME -223 |
| 10 | ++#define ONIGERR_TOO_MANY_RANGE_REPEAT -224 |
| 11 | ++#define ONIGERR_TOO_MANY_NULL_CHECK -225 |
| 12 | + #define ONIGERR_INVALID_CODE_POINT_VALUE -400 |
| 13 | + #define ONIGERR_INVALID_WIDE_CHAR_VALUE -400 |
| 14 | + #define ONIGERR_TOO_BIG_WIDE_CHAR_VALUE -401 |
| 15 | +--- a/regcomp.c |
| 16 | ++++ b/regcomp.c |
| 17 | +@@ -394,6 +394,7 @@ |
| 18 | + r = add_mem_num(reg, reg->num_null_check); /* NULL CHECK ID */ |
| 19 | + if (r) return r; |
| 20 | + reg->num_null_check++; |
| 21 | ++ if ((MemNumType)reg->num_null_check <= 0) return ONIGERR_TOO_MANY_NULL_CHECK; |
| 22 | + } |
| 23 | + |
| 24 | + r = compile_tree(node, reg); |
| 25 | +@@ -703,6 +704,7 @@ |
| 26 | + if (r) return r; |
| 27 | + r = add_mem_num(reg, num_repeat); /* OP_REPEAT ID */ |
| 28 | + reg->num_repeat++; |
| 29 | ++ if ((MemNumType)reg->num_repeat <= 0) return ONIGERR_TOO_MANY_RANGE_REPEAT; |
| 30 | + if (r) return r; |
| 31 | + r = add_rel_addr(reg, target_len + SIZE_OP_REPEAT_INC); |
| 32 | + if (r) return r; |
| 33 | +--- a/regerror.c |
| 34 | ++++ b/regerror.c |
| 35 | +@@ -165,6 +165,10 @@ |
| 36 | + p = "group number is too big for capture history"; break; |
| 37 | + case ONIGERR_INVALID_CHAR_PROPERTY_NAME: |
| 38 | + p = "invalid character property name {%n}"; break; |
| 39 | ++ case ONIGERR_TOO_MANY_RANGE_REPEAT: |
| 40 | ++ p = "too many range repeat"; break; |
| 41 | ++ case ONIGERR_TOO_MANY_NULL_CHECK: |
| 42 | ++ p = "too many null check"; break; |
| 43 | + case ONIGERR_TOO_MANY_CAPTURE_GROUPS: |
| 44 | + p = "too many capture groups are specified"; break; |
| 45 | + case ONIGERR_INVALID_CODE_POINT_VALUE: |
0 commit comments