diff options
author | shugo <shugo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-08-13 07:25:05 +0000 |
---|---|---|
committer | shugo <shugo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-08-13 07:25:05 +0000 |
commit | f433d710d0ab3b367cc4a851cdfb81c5405bb7f8 (patch) | |
tree | 5d6a14de43873b9ddaec533051b942cf89c201ce /vm_method.c | |
parent | 55c141c6247a4d8c052c0d57f59ddaa29e3e523a (diff) |
* object.c (rb_obj_untrusted): new method Object#untrusted?.
(rb_obj_untrust): new method Object#untrust.
(rb_obj_trust): new method Object#trust.
* array.c, debug.c, time.c, include/ruby/ruby.h, re.c, variable.c,
string.c, io.c, dir.c, vm_method.c, struct.c, class.c, hash.c,
ruby.c, marshal.c: fixes for Object#untrusted?.
* test/ruby/test_module.rb, test/ruby/test_array.rb,
test/ruby/test_object.rb, test/ruby/test_string.rb,
test/ruby/test_marshal.rb, test/ruby/test_hash.rb: added tests for
Object#untrusted?.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18568 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'vm_method.c')
-rw-r--r-- | vm_method.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/vm_method.c b/vm_method.c index b9940a7230..d3f38d7945 100644 --- a/vm_method.c +++ b/vm_method.c @@ -108,7 +108,8 @@ rb_add_method(VALUE klass, ID mid, NODE * node, int noex) if (NIL_P(klass)) { klass = rb_cObject; } - if (rb_safe_level() >= 4 && (klass == rb_cObject || !OBJ_TAINTED(klass))) { + if (rb_safe_level() >= 4 && + (klass == rb_cObject || !OBJ_UNTRUSTED(klass))) { rb_raise(rb_eSecurityError, "Insecure: can't define method"); } if (!FL_TEST(klass, FL_SINGLETON) && @@ -307,7 +308,7 @@ remove_method(VALUE klass, ID mid) if (klass == rb_cObject) { rb_secure(4); } - if (rb_safe_level() >= 4 && !OBJ_TAINTED(klass)) { + if (rb_safe_level() >= 4 && !OBJ_UNTRUSTED(klass)) { rb_raise(rb_eSecurityError, "Insecure: can't remove method"); } if (OBJ_FROZEN(klass)) @@ -474,7 +475,7 @@ rb_undef(VALUE klass, ID id) if (rb_vm_cbase() == rb_cObject && klass == rb_cObject) { rb_secure(4); } - if (rb_safe_level() >= 4 && !OBJ_TAINTED(klass)) { + if (rb_safe_level() >= 4 && !OBJ_UNTRUSTED(klass)) { rb_raise(rb_eSecurityError, "Insecure: can't undef `%s'", rb_id2name(id)); } @@ -810,7 +811,7 @@ rb_mod_alias_method(VALUE mod, VALUE newname, VALUE oldname) static void secure_visibility(VALUE self) { - if (rb_safe_level() >= 4 && !OBJ_TAINTED(self)) { + if (rb_safe_level() >= 4 && !OBJ_UNTRUSTED(self)) { rb_raise(rb_eSecurityError, "Insecure: can't change method visibility"); } |