From 6c60006de5cfd75f10a1b4a3d822e2de41d22db6 Mon Sep 17 00:00:00 2001 From: Jeremy Evans Date: Fri, 10 Feb 2023 10:33:53 -0800 Subject: Raise ArgumentError if IO.read is provided negative offset Fixes [Bug #19380] --- io.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'io.c') diff --git a/io.c b/io.c index a3dfa027d4..a023039209 100644 --- a/io.c +++ b/io.c @@ -12125,9 +12125,13 @@ static VALUE rb_io_s_read(int argc, VALUE *argv, VALUE io) { VALUE opt, offset; + long off; struct foreach_arg arg; argc = rb_scan_args(argc, argv, "13:", NULL, NULL, &offset, NULL, &opt); + if (!NIL_P(offset) && (off = NUM2LONG(offset)) < 0) { + rb_raise(rb_eArgError, "negative offset %ld given", off); + } open_key_args(io, argc, argv, opt, &arg); if (NIL_P(arg.io)) return Qnil; if (!NIL_P(offset)) { -- cgit v1.2.1