From 3faa76851d99f9547b7038da03317acf64e35d72 Mon Sep 17 00:00:00 2001 From: Keita Obo Date: Fri, 21 Mar 2014 21:41:04 +0900 Subject: Prevent accepting String value for mrb_get_args("i") Accepting String value for mrb_get_args("i") causes unintentional expression. * `"str" * "3"` => `"strstrstr"` This change prevents String->Integer conversion for mrb_get_args("i") and fixes above problem. See also: https://github.com/mruby/mruby/issues/1903 --- src/class.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/class.c b/src/class.c index 30d376648..e73a28c56 100644 --- a/src/class.c +++ b/src/class.c @@ -612,6 +612,9 @@ mrb_get_args(mrb_state *mrb, const char *format, ...) *p = (mrb_int)f; } break; + case MRB_TT_STRING: + mrb_raise(mrb, E_TYPE_ERROR, "String can't be coerced into int"); + break; default: *p = mrb_fixnum(mrb_Integer(mrb, *sp)); break; -- cgit v1.2.3