summaryrefslogtreecommitdiff
path: root/object.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-06-01 06:46:12 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-06-01 06:46:12 +0000
commitd23012904ac77bff3d687e696fc00831546ac2fa (patch)
tree1fd6996816cc97c31d0bc780a81ae3a0a6d15722 /object.c
parentc029880ae50e20733cb793a4b2f37e52528524cc (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.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/object.c b/object.c
index 3591feb2a4..1656bd319c 100644
--- a/object.c
+++ b/object.c
@@ -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;
}