summaryrefslogtreecommitdiffhomepage
path: root/src/class.c
diff options
context:
space:
mode:
authorKeita Obo <[email protected]>2014-03-21 21:41:04 +0900
committerKeita Obo <[email protected]>2014-03-21 21:41:04 +0900
commit3faa76851d99f9547b7038da03317acf64e35d72 (patch)
tree11db2c90240e5b87fe55c759d3746f9b1a8d59b1 /src/class.c
parent07bd65ae65ba1092191f5a702ce3c15aaca2ab5f (diff)
downloadmruby-3faa76851d99f9547b7038da03317acf64e35d72.tar.gz
mruby-3faa76851d99f9547b7038da03317acf64e35d72.zip
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
Diffstat (limited to 'src/class.c')
-rw-r--r--src/class.c3
1 files changed, 3 insertions, 0 deletions
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;