From d0932798885381b1160614cdc2562a084f043d67 Mon Sep 17 00:00:00 2001 From: matz Date: Mon, 31 Mar 2003 02:06:23 +0000 Subject: * hash.c (env_reject_bang): untaint key string. * hash.c (env_delete_m): execute block only if deleting key does not exist. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3637 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- hash.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'hash.c') diff --git a/hash.c b/hash.c index 1bb4c93bf6..a2fa1fdcdf 100644 --- a/hash.c +++ b/hash.c @@ -1002,8 +1002,10 @@ static VALUE env_delete_m(obj, name) VALUE obj, name; { - VALUE val = env_delete(obj, name); - if (rb_block_given_p()) rb_yield(name); + VALUE val; + + val = env_delete(obj, name); + if (NIL_P(val) && rb_block_given_p()) rb_yield(name); return val; } @@ -1342,6 +1344,7 @@ env_reject_bang() VALUE val = rb_f_getenv(Qnil, *ptr); if (!NIL_P(val)) { if (RTEST(rb_yield(rb_assoc_new(*ptr, val)))) { + FL_UNSET(*ptr, FL_TAINT); env_delete(Qnil, *ptr); del++; } -- cgit v1.2.1