summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorK.Takata <kentkt@csc.jp>2019-01-31 19:04:02 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2026-01-12 20:01:42 +0900
commit496e74d0ccedd513eca9a156b207a36ed88e484f (patch)
tree62009a9056e22e6c6feef6fe5695a9e0d29e981c
parentad150e90397ef85c1dbcf3ef54c0b1338fde4204 (diff)
[k-takata/Onigmo] Fix that onig_new() may crash
When onig_reg_init() returns an error, onig_free_body() which is called via onig_new() may crash because some members are not properly initialized. Fix it. https://github.com/k-takata/Onigmo/commit/d2a090a57e
-rw-r--r--regcomp.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/regcomp.c b/regcomp.c
index 71e57c8e39..9dfdb21e85 100644
--- a/regcomp.c
+++ b/regcomp.c
@@ -5919,6 +5919,12 @@ onig_reg_init(regex_t* reg, OnigOptionType option,
if (IS_NULL(reg))
return ONIGERR_INVALID_ARGUMENT;
+ (reg)->exact = (UChar* )NULL;
+ (reg)->chain = (regex_t* )NULL;
+ (reg)->p = (UChar* )NULL;
+ (reg)->name_table = (void* )NULL;
+ (reg)->repeat_range = (OnigRepeatRange* )NULL;
+
if (ONIGENC_IS_UNDEF(enc))
return ONIGERR_DEFAULT_ENCODING_IS_NOT_SET;
@@ -5938,13 +5944,9 @@ onig_reg_init(regex_t* reg, OnigOptionType option,
(reg)->options = option;
(reg)->syntax = syntax;
(reg)->optimize = 0;
- (reg)->exact = (UChar* )NULL;
- (reg)->chain = (regex_t* )NULL;
- (reg)->p = (UChar* )NULL;
(reg)->alloc = 0;
(reg)->used = 0;
- (reg)->name_table = (void* )NULL;
(reg)->case_fold_flag = case_fold_flag;