diff options
| author | K.Takata <kentkt@csc.jp> | 2019-01-31 19:04:02 +0900 |
|---|---|---|
| committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2026-01-12 20:01:42 +0900 |
| commit | 496e74d0ccedd513eca9a156b207a36ed88e484f (patch) | |
| tree | 62009a9056e22e6c6feef6fe5695a9e0d29e981c | |
| parent | ad150e90397ef85c1dbcf3ef54c0b1338fde4204 (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.c | 10 |
1 files changed, 6 insertions, 4 deletions
@@ -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; |
