1
0
Fork 0
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:
nobu 2011-07-17 07:26:45 +00:00
parent 18f0a65018
commit e2fd80b3d3
8 changed files with 79 additions and 5 deletions

View file

@ -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