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/