summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authornagachika <nagachika@ruby-lang.org>2023-03-25 11:04:33 +0900
committernagachika <nagachika@ruby-lang.org>2023-03-25 11:04:33 +0900
commit810ae06c06312908fc1a7284773d8a9101ee145b (patch)
tree5b9dd70da37a85caac30c80e71b5dbc4efd08665 /test
parent8c99882dad0b6fedbd656889829a3780366bd8b6 (diff)
merge revision(s) 2e7e153a2af1456515d43b6381e38534b069b1c2: [Backport #19242]
[Bug #19242] Prohibit circular causes to be loaded --- error.c | 4 ++++ eval.c | 4 ++++ eval_error.c | 11 +++++++++++ test/ruby/test_exception.rb | 12 ++++++++++++ 4 files changed, 31 insertions(+)
Diffstat (limited to 'test')
-rw-r--r--test/ruby/test_exception.rb12
1 files changed, 12 insertions, 0 deletions
diff --git a/test/ruby/test_exception.rb b/test/ruby/test_exception.rb
index f99bb230a3..ffca877f1e 100644
--- a/test/ruby/test_exception.rb
+++ b/test/ruby/test_exception.rb
@@ -1412,6 +1412,18 @@ $stderr = $stdout; raise "\x82\xa0"') do |outs, errs, status|
end;
end
+ def test_marshal_circular_cause
+ begin
+ raise RuntimeError, "err", [], cause: Exception.new
+ rescue => e
+ end
+ dump = Marshal.dump(e).sub(/o:\x0EException\x08;.0;.0;.0/, "@\x05")
+ assert_raise_with_message(ArgumentError, /circular cause/, ->{dump.inspect}) do
+ e = Marshal.load(dump)
+ assert_same(e, e.cause)
+ end
+ end
+
def test_super_in_method_missing
assert_separately([], "#{<<~"begin;"}\n#{<<~'end;'}")
begin;