From e94bc257290a94607cfe1ca98cfbd46d39056908 Mon Sep 17 00:00:00 2001 From: yugui Date: Sun, 16 Jan 2011 12:34:45 +0000 Subject: merges r30467 from trunk into ruby_1_9_2. -- * ext/stringio/stringio.c (get_strio, strio_set_string) (strio_reopen): check if frozen. [ruby-core:33648] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_2@30565 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ ext/stringio/stringio.c | 6 +++--- test/stringio/test_stringio.rb | 9 +++++++++ version.h | 2 +- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index fb78e0cefe..81ec666c39 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Thu Jan 6 05:14:41 2011 Nobuyoshi Nakada + + * ext/stringio/stringio.c (get_strio, strio_set_string) + (strio_reopen): check if frozen. [ruby-core:33648] + Wed Jan 5 13:56:54 2011 Akinori MUSHA * lib/net/http.rb (Net::HTTP#get): A header hash given should not diff --git a/ext/stringio/stringio.c b/ext/stringio/stringio.c index cfc1001d35..6ee9599619 100644 --- a/ext/stringio/stringio.c +++ b/ext/stringio/stringio.c @@ -83,7 +83,7 @@ static const rb_data_type_t strio_data_type = { static struct StringIO* get_strio(VALUE self) { - struct StringIO *ptr = check_strio(self); + struct StringIO *ptr = check_strio(rb_io_taint_check(self)); if (!ptr) { rb_raise(rb_eIOError, "uninitialized stream"); @@ -310,7 +310,7 @@ strio_set_string(VALUE self, VALUE string) { struct StringIO *ptr = StringIO(self); - if (!OBJ_TAINTED(self)) rb_secure(4); + rb_io_taint_check(self); ptr->flags &= ~FMODE_READWRITE; StringValue(string); ptr->flags = OBJ_FROZEN(string) ? FMODE_READABLE : FMODE_READWRITE; @@ -502,7 +502,7 @@ strio_set_lineno(VALUE self, VALUE lineno) static VALUE strio_reopen(int argc, VALUE *argv, VALUE self) { - if (!OBJ_TAINTED(self)) rb_secure(4); + rb_io_taint_check(self); if (argc == 1 && TYPE(*argv) != T_STRING) { return strio_copy(self, *argv); } diff --git a/test/stringio/test_stringio.rb b/test/stringio/test_stringio.rb index b7327adced..78718a2d86 100644 --- a/test/stringio/test_stringio.rb +++ b/test/stringio/test_stringio.rb @@ -471,4 +471,13 @@ class TestStringIO < Test::Unit::TestCase expected_pos += 1 end end + + def test_frozen + s = StringIO.new + s.freeze + bug = '[ruby-core:33648]' + assert_raise(RuntimeError, bug) {s.puts("foo")} + assert_raise(RuntimeError, bug) {s.string = "foo"} + assert_raise(RuntimeError, bug) {s.reopen("")} + end end diff --git a/version.h b/version.h index b8e5ab45ea..2ae40d4d50 100644 --- a/version.h +++ b/version.h @@ -1,5 +1,5 @@ #define RUBY_VERSION "1.9.2" -#define RUBY_PATCHLEVEL 145 +#define RUBY_PATCHLEVEL 146 #define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MINOR 9 #define RUBY_VERSION_TEENY 1 -- cgit v1.2.3