summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorK.Takata <kentkt@csc.jp>2019-07-29 20:15:26 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2026-01-12 20:01:43 +0900
commitf0b31a5898ae8101286dc47085139c56ba0bda54 (patch)
tree117369cb1eb0817684e261b44f7b16473a4be024
parent496e74d0ccedd513eca9a156b207a36ed88e484f (diff)
[k-takata/Onigmo] Fix SEGV in onig_error_code_to_str() (Fix
https://github.com/k-takata/Onigmo/pull/132) When onig_new(ONIG_SYNTAX_PERL) fails with ONIGERR_INVALID_GROUP_NAME, onig_error_code_to_str() crashes. onig_scan_env_set_error_string() should have been used when returning ONIGERR_INVALID_GROUP_NAME. https://github.com/k-takata/Onigmo/commit/00cc7e28a3
-rw-r--r--regparse.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/regparse.c b/regparse.c
index c61a8b28a2..1772196bcd 100644
--- a/regparse.c
+++ b/regparse.c
@@ -4043,7 +4043,11 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
if (c == 'R' || c == '0') {
PINC; /* skip 'R' / '0' */
- if (!PPEEK_IS(')')) return ONIGERR_INVALID_GROUP_NAME;
+ if (!PPEEK_IS(')')) {
+ r = ONIGERR_INVALID_GROUP_NAME;
+ onig_scan_env_set_error_string(env, r, p - 1, p + 1);
+ return r;
+ }
PINC; /* skip ')' */
name_end = name = p;
gnum = 0;