From a095740fed2a05a04806a1d3827bcaba02e45720 Mon Sep 17 00:00:00 2001 From: Samuel Williams Date: Thu, 14 Sep 2023 20:37:43 +1200 Subject: Fix `io_buffer_get_string` default length computation. (#8427) * Fix `io_buffer_get_string` default length computation. When an offset bigger than the size is given, the resulting length will be computed incorrectly. Raise an argument error in this case. * Validate all arguments. --- test/ruby/test_io_buffer.rb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'test/ruby') diff --git a/test/ruby/test_io_buffer.rb b/test/ruby/test_io_buffer.rb index c3ab09f27e..d5ba3266c7 100644 --- a/test/ruby/test_io_buffer.rb +++ b/test/ruby/test_io_buffer.rb @@ -252,13 +252,17 @@ class TestIOBuffer < Test::Unit::TestCase chunk = buffer.get_string(0, message.bytesize, Encoding::BINARY) assert_equal Encoding::BINARY, chunk.encoding - assert_raise_with_message(ArgumentError, /exceeds buffer size/) do + assert_raise_with_message(ArgumentError, /bigger than the buffer size/) do buffer.get_string(0, 129) end - assert_raise_with_message(ArgumentError, /exceeds buffer size/) do + assert_raise_with_message(ArgumentError, /bigger than the buffer size/) do buffer.get_string(129) end + + assert_raise_with_message(ArgumentError, /Offset can't be negative/) do + buffer.get_string(-1) + end end # We check that values are correctly round tripped. -- cgit v1.2.3