diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2001-06-01 06:46:12 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2001-06-01 06:46:12 +0000 |
commit | d23012904ac77bff3d687e696fc00831546ac2fa (patch) | |
tree | 1fd6996816cc97c31d0bc780a81ae3a0a6d15722 /object.c | |
parent | c029880ae50e20733cb793a4b2f37e52528524cc (diff) |
* file.c (rb_file_s_unlink): should not allow if $SAFE >= 2.
* object.c (rb_obj_taint): backport from 1.7.
* object.c (rb_obj_untaint): add frozen status check (backport from 1.7).
* ruby.c (proc_options): unexpected SecurityError happens when -T4.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_6@1484 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'object.c')
-rw-r--r-- | object.c | 15 |
1 files changed, 11 insertions, 4 deletions
@@ -286,10 +286,12 @@ rb_obj_taint(obj) VALUE obj; { rb_secure(4); - if (OBJ_FROZEN(obj)) { - rb_error_frozen("object"); + if (!OBJ_TAINTED(obj)) { + if (OBJ_FROZEN(obj)) { + rb_error_frozen("object"); + } + OBJ_TAINT(obj); } - OBJ_TAINT(obj); return obj; } @@ -298,7 +300,12 @@ rb_obj_untaint(obj) VALUE obj; { rb_secure(3); - FL_UNSET(obj, FL_TAINT); + if (OBJ_TAINTED(obj)) { + if (OBJ_FROZEN(obj)) { + rb_error_frozen("object"); + } + FL_UNSET(obj, FL_TAINT); + } return obj; } |