[前][次][番号順一覧][スレッド一覧]

ruby-changes:70395

From: Samuel <ko1@a...>
Date: Tue, 21 Dec 2021 08:26:06 +0900 (JST)
Subject: [ruby-changes:70395] 9de5c4ec76 (master): Fix mapping invalid non-file object.

https://git.ruby-lang.org/ruby.git/commit/?id=9de5c4ec76

From 9de5c4ec761aad3edc50b38d9824b40665d18911 Mon Sep 17 00:00:00 2001
From: Samuel Williams <samuel.williams@o...>
Date: Mon, 20 Dec 2021 09:03:52 +1300
Subject: Fix mapping invalid non-file object.

---
 io_buffer.c                 |  3 +++
 test/ruby/test_io_buffer.rb | 14 ++++++++++----
 2 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/io_buffer.c b/io_buffer.c
index 524756e041f..a97c687239d 100644
--- a/io_buffer.c
+++ b/io_buffer.c
@@ -322,6 +322,9 @@ io_buffer_map(int argc, VALUE *argv, VALUE klass) https://github.com/ruby/ruby/blob/trunk/io_buffer.c#L322
     }
 
     VALUE io = argv[0];
+    if (!RB_TYPE_P(io, T_FILE)) {
+        rb_raise(rb_eArgError, "Must be file/io!");
+    }
 
     size_t size;
     if (argc >= 2) {
diff --git a/test/ruby/test_io_buffer.rb b/test/ruby/test_io_buffer.rb
index afc39a8c8ee..385a133421d 100644
--- a/test/ruby/test_io_buffer.rb
+++ b/test/ruby/test_io_buffer.rb
@@ -9,10 +9,6 @@ class TestIOBuffer < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/ruby/test_io_buffer.rb#L9
     Warning[:experimental] = experimental
   end
 
-  def test_default_size
-    assert_equal IO::Buffer::DEFAULT_SIZE, IO::Buffer.new.size
-  end
-
   def assert_negative(value)
     assert(value < 0, "Expected #{value} to be negative!")
   end
@@ -40,6 +36,10 @@ class TestIOBuffer < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/ruby/test_io_buffer.rb#L36
     assert_include [IO::Buffer::LITTLE_ENDIAN, IO::Buffer::BIG_ENDIAN], IO::Buffer::HOST_ENDIAN
   end
 
+  def test_default_size
+    assert_equal IO::Buffer::DEFAULT_SIZE, IO::Buffer.new.size
+  end
+
   def test_new_internal
     buffer = IO::Buffer.new(1024, IO::Buffer::INTERNAL)
     assert_equal 1024, buffer.size
@@ -74,6 +74,12 @@ class TestIOBuffer < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/ruby/test_io_buffer.rb#L74
     assert_include buffer.to_str, "Hello World"
   end
 
+  def test_file_mapped_invalid
+    assert_raise ArgumentError do
+      IO::Buffer.map("foobar")
+    end
+  end
+
   def test_string_mapped
     string = "Hello World"
     buffer = IO::Buffer.for(string)
-- 
cgit v1.2.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]