diff options
author | Jeremy Evans <[email protected]> | 2020-11-23 11:03:15 -0800 |
---|---|---|
committer | Benoit Daloze <[email protected]> | 2020-11-24 16:01:30 +0100 |
commit | b26d6c70e0f08050ca23388bb0e8442f73269c73 () | |
tree | 04385765f23c92077edd5c37b35cd93344ddb1ee | |
parent | 237cb94cf5676e8cfc81ca9f5e8d29e04e61fc4d (diff) |
Detect the premature end of char property in regexp
Default to ONIGERR_INVALID_CHAR_PROPERTY_NAME in fetch_char_property_to_ctype and only set otherwise if an ending } is found. Fixes [Bug #17340]
Notes: Merged: https://.com/ruby/ruby/pull/3807
-rw-r--r-- | regparse.c | 3 | ||||
-rw-r--r-- | test/ruby/test_regexp.rb | 11 |
2 files changed, 12 insertions, 2 deletions
@@ -4348,7 +4348,7 @@ fetch_char_property_to_ctype(UChar** src, UChar* end, ScanEnv* env) OnigEncoding enc = env->enc; UChar *prev, *start, *p = *src; - r = 0; start = prev = p; while (!PEND) { @@ -4362,7 +4362,6 @@ fetch_char_property_to_ctype(UChar** src, UChar* end, ScanEnv* env) return r; } else if (c == '(' || c == ')' || c == '{' || c == '|') { - r = ONIGERR_INVALID_CHAR_PROPERTY_NAME; break; } } @@ -57,6 +57,17 @@ class TestRegexp < Test::Unit::TestCase assert_equal('Ruby', 'Ruby'.sub(/[^a-z]/i, '-')) end def test_assert_normal_exit # moved from knownbug. It caused core. Regexp.union("a", "a") |