mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
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
This commit is contained in:
parent
1803427660
commit
12c244d347
1 changed files with 4 additions and 3 deletions
7
hash.c
7
hash.c
|
@ -902,14 +902,15 @@ rb_hash_fetch(VALUE hash, VALUE key)
|
||||||
static VALUE
|
static VALUE
|
||||||
rb_hash_default(int argc, VALUE *argv, VALUE hash)
|
rb_hash_default(int argc, VALUE *argv, VALUE hash)
|
||||||
{
|
{
|
||||||
VALUE key, ifnone;
|
VALUE args[2], ifnone;
|
||||||
|
|
||||||
rb_check_arity(argc, 0, 1);
|
rb_check_arity(argc, 0, 1);
|
||||||
key = argv[0];
|
|
||||||
ifnone = RHASH_IFNONE(hash);
|
ifnone = RHASH_IFNONE(hash);
|
||||||
if (FL_TEST(hash, HASH_PROC_DEFAULT)) {
|
if (FL_TEST(hash, HASH_PROC_DEFAULT)) {
|
||||||
if (argc == 0) return Qnil;
|
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;
|
return ifnone;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue