summaryrefslogtreecommitdiff
path: root/io_buffer.c
diff options
context:
space:
mode:
authorU.Nakamura <usa@ruby-lang.org>2023-11-06 20:18:14 +0900
committerU.Nakamura <usa@ruby-lang.org>2023-11-06 20:18:14 +0900
commit4f7b595815bd75706c276b03c8d445748e869f2e (patch)
tree70391cfa4ef7ed0d27f3f3a6af8d2c8ee1686b72 /io_buffer.c
parentd494cf4ddababb80660381e963f910ccacc3f7bc (diff)
merge revision(s) 19346c2336053b351673da030b00c704138252d8: [Backport #19754]
[Bug #19754] Make `IO::Buffer#get_string` check `offset` range (#8016) --- io_buffer.c | 3 +++ test/ruby/test_io_buffer.rb | 8 ++++++++ 2 files changed, 11 insertions(+)
Diffstat (limited to 'io_buffer.c')
-rw-r--r--io_buffer.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/io_buffer.c b/io_buffer.c
index 4b806906f2..7d4fa8d330 100644
--- a/io_buffer.c
+++ b/io_buffer.c
@@ -1063,8 +1063,11 @@ rb_io_buffer_free(VALUE self)
static inline void
io_buffer_validate_range(struct rb_io_buffer *data, size_t offset, size_t length)
{
+ if (offset > data->size) {
+ rb_raise(rb_eArgError, "Specified offset exceeds buffer size!");
+ }
if (offset + length > data->size) {
- rb_raise(rb_eArgError, "Specified offset+length exceeds data size!");
+ rb_raise(rb_eArgError, "Specified offset+length exceeds buffer size!");
}
}