diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-08-05 09:36:16 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-08-05 09:36:16 +0000 |
commit | 5274f892015b2a41dc64c63a4ce1c843f4fb0a66 (patch) | |
tree | cc9c9cec201b0695bf0284cce027902448a11b4e | |
parent | 359d53787821dc287d0411565801d54791f0a9c6 (diff) | |
download | ruby-5274f892015b2a41dc64c63a4ce1c843f4fb0a66.tar.gz |
* complex.c (nucomp_marshal_load): should check the argument.
[ruby-core:31622]
* rational.c (nurat_marshal_load): ditto
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28869 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | complex.c | 1 | ||||
-rw-r--r-- | rational.c | 1 | ||||
-rw-r--r-- | test/ruby/test_complex.rb | 5 | ||||
-rw-r--r-- | test/ruby/test_rand.rb | 7 | ||||
-rw-r--r-- | test/ruby/test_rational.rb | 5 |
6 files changed, 25 insertions, 1 deletions
@@ -1,4 +1,9 @@ -Thu Aug 5 18:25:33 2010 Nobuyoshi Nakada <nobu@ruby-lang.org> +Thu Aug 5 18:36:11 2010 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * complex.c (nucomp_marshal_load): should check the argument. + [ruby-core:31622] + + * rational.c (nurat_marshal_load): ditto * marshal.c (w_float): should not append a dot if no fractal part exists. [ruby-dev:41936] @@ -1247,6 +1247,7 @@ static VALUE nucomp_marshal_load(VALUE self, VALUE a) { get_dat1(self); + Check_Type(a, T_ARRAY); dat->real = RARRAY_PTR(a)[0]; dat->imag = RARRAY_PTR(a)[1]; rb_copy_generic_ivar(self, a); diff --git a/rational.c b/rational.c index 3965144b61..6e3b39639d 100644 --- a/rational.c +++ b/rational.c @@ -1602,6 +1602,7 @@ static VALUE nurat_marshal_load(VALUE self, VALUE a) { get_dat1(self); + Check_Type(a, T_ARRAY); dat->num = RARRAY_PTR(a)[0]; dat->den = RARRAY_PTR(a)[1]; rb_copy_generic_ivar(self, a); diff --git a/test/ruby/test_complex.rb b/test/ruby/test_complex.rb index f6d65de6de..b2894610f7 100644 --- a/test/ruby/test_complex.rb +++ b/test/ruby/test_complex.rb @@ -633,6 +633,11 @@ class Complex_Test < Test::Unit::TestCase assert_equal(c, c2) assert_instance_of(Complex, c2) end + + bug3656 = '[ruby-core:31622]' + assert_raise(TypeError, bug3656) { + Complex(1,2).marshal_load(0) + } end def test_parse diff --git a/test/ruby/test_rand.rb b/test/ruby/test_rand.rb index 8ef360bd49..40b291f959 100644 --- a/test/ruby/test_rand.rb +++ b/test/ruby/test_rand.rb @@ -427,4 +427,11 @@ END assert_equal(x0, x2) end end + + def test_marshal + bug3656 = '[ruby-core:31622]' + assert_raise(TypeError, bug3656) { + Random.new.marshal_load(0) + } + end end diff --git a/test/ruby/test_rational.rb b/test/ruby/test_rational.rb index 02d8bd61ed..2f33ec2039 100644 --- a/test/ruby/test_rational.rb +++ b/test/ruby/test_rational.rb @@ -797,6 +797,11 @@ class Rational_Test < Test::Unit::TestCase assert_raise(ZeroDivisionError){ Marshal.load("\x04\bU:\rRational[\ai\x06i\x05") } + + bug3656 = '[ruby-core:31622]' + assert_raise(TypeError, bug3656) { + Rational(1,2).marshal_load(0) + } end def test_parse |