From 49af9012a20a824542cf588e55e5488895553e09 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Thu, 23 Sep 2021 16:02:44 +0900 Subject: Prohibit invalid encoding symbols [Bug #18184] --- marshal.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'marshal.c') diff --git a/marshal.c b/marshal.c index 744267afaf..26ac51401f 100644 --- a/marshal.c +++ b/marshal.c @@ -1479,7 +1479,13 @@ r_symreal(struct load_arg *arg, int ivar) idx = sym2encidx(sym, r_object(arg)); } } - if (idx > 0) rb_enc_associate_index(s, idx); + if (idx > 0) { + rb_enc_associate_index(s, idx); + if (rb_enc_str_coderange(s) == ENC_CODERANGE_BROKEN) { + rb_raise(rb_eArgError, "invalid byte sequence in %s: %+"PRIsVALUE, + rb_enc_name(rb_enc_from_index(idx)), s); + } + } return s; } -- cgit v1.2.3