From 12c244d347b6620ea14e06c9f60c164dce7427ef Mon Sep 17 00:00:00 2001 From: nobu Date: Sun, 8 Nov 2015 08:32:51 +0000 Subject: hash.c: fix oob access * hash.c (rb_hash_default): do not access argv when no arguments is given. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52496 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- hash.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'hash.c') diff --git a/hash.c b/hash.c index 974ac53888..c179ff4ce1 100644 --- a/hash.c +++ b/hash.c @@ -902,14 +902,15 @@ rb_hash_fetch(VALUE hash, VALUE key) static VALUE rb_hash_default(int argc, VALUE *argv, VALUE hash) { - VALUE key, ifnone; + VALUE args[2], ifnone; rb_check_arity(argc, 0, 1); - key = argv[0]; ifnone = RHASH_IFNONE(hash); if (FL_TEST(hash, HASH_PROC_DEFAULT)) { if (argc == 0) return Qnil; - return rb_funcall(ifnone, id_yield, 2, hash, key); + args[0] = hash; + args[1] = argv[0]; + return rb_funcallv(ifnone, id_yield, 2, args); } return ifnone; } -- cgit v1.2.3