Skip to content

Commit 324887d

Browse files
committed
Backtrace list must be an array of strings; fix #3408
1 parent 28b7b9e commit 324887d

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

src/error.c

+13
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,19 @@ exc_set_backtrace(mrb_state *mrb, mrb_value exc)
208208
mrb_value backtrace;
209209

210210
mrb_get_args(mrb, "o", &backtrace);
211+
if (!mrb_array_p(backtrace)) {
212+
type_err:
213+
mrb_raise(mrb, E_TYPE_ERROR, "backtrace must be Array of String");
214+
}
215+
else {
216+
const mrb_value *p = RARRAY_PTR(backtrace);
217+
const mrb_value *pend = p + RARRAY_LEN(backtrace);
218+
219+
while (p < pend) {
220+
if (!mrb_string_p(*p)) goto type_err;
221+
p++;
222+
}
223+
}
211224
mrb_iv_set(mrb, exc, mrb_intern_lit(mrb, "backtrace"), backtrace);
212225

213226
return backtrace;

0 commit comments

Comments
 (0)