mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* error.c (rb_check_trusted): new function to check an object is
trusted. * struct.c (rb_struct_modify), time.c (time_modify): check by the above function to show proper class names. [Bug #5036] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32569 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
18f0a65018
commit
e2fd80b3d3
8 changed files with 79 additions and 5 deletions
|
@ -1,5 +1,6 @@
|
|||
require 'test/unit'
|
||||
require 'timeout'
|
||||
require_relative 'envutil'
|
||||
|
||||
class TestStruct < Test::Unit::TestCase
|
||||
def test_struct
|
||||
|
@ -249,4 +250,17 @@ class TestStruct < Test::Unit::TestCase
|
|||
assert !x.eql?(z)
|
||||
}
|
||||
end
|
||||
|
||||
def test_struct_subclass
|
||||
bug5036 = '[ruby-dev:44122]'
|
||||
st = Class.new(Struct)
|
||||
s = st.new("S", :m).new
|
||||
error = assert_raise(SecurityError) do
|
||||
proc do
|
||||
$SAFE = 4
|
||||
s.m = 1
|
||||
end.call
|
||||
end
|
||||
assert_equal("Insecure: can't modify #{st}::S", error.message, bug5036)
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue