ruby-changes:1854
From: ko1@a...
Date: 5 Sep 2007 22:36:41 +0900
Subject: [ruby-changes:1854] matz - Ruby:r13345 (ruby_1_8): * array.c (rb_ary_subseq): need integer overflow check.
matz 2007-09-05 22:36:28 +0900 (Wed, 05 Sep 2007) New Revision: 13345 Modified files: branches/ruby_1_8/ChangeLog branches/ruby_1_8/array.c Log: * array.c (rb_ary_subseq): need integer overflow check. [ruby-dev:31736] * array.c (rb_ary_splice): ditto. [ruby-dev:31737] * array.c (rb_ary_fill): ditto. [ruby-dev:31738] http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/ChangeLog?r1=13345&r2=13344 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/array.c?r1=13345&r2=13344 Index: ruby_1_8/array.c =================================================================== --- ruby_1_8/array.c (revision 13344) +++ ruby_1_8/array.c (revision 13345) @@ -606,7 +606,7 @@ if (beg > RARRAY(ary)->len) return Qnil; if (beg < 0 || len < 0) return Qnil; - if (beg + len > RARRAY(ary)->len) { + if (RARRAY(ary)->len < len || RARRAY(ary)->len < beg + len) { len = RARRAY(ary)->len - beg; if (len < 0) len = 0; @@ -959,7 +959,7 @@ rb_raise(rb_eIndexError, "index %ld out of array", beg); } } - if (beg + len > RARRAY(ary)->len) { + if (RARRAY(ary)->len < len || RARRAY(ary)->len < beg + len) { len = RARRAY(ary)->len - beg; } Index: ruby_1_8/ChangeLog =================================================================== --- ruby_1_8/ChangeLog (revision 13344) +++ ruby_1_8/ChangeLog (revision 13345) @@ -1,8 +1,12 @@ Wed Sep 5 22:02:27 2007 Yukihiro Matsumoto <matz@r...> - * array.c (rb_ary_fill): need integer overflow check. - [ruby-dev:31738] + * array.c (rb_ary_subseq): need integer overflow check. + [ruby-dev:31736] + * array.c (rb_ary_splice): ditto. [ruby-dev:31737] + + * array.c (rb_ary_fill): ditto. [ruby-dev:31738] + * string.c (rb_str_splice): integer overflow for length. [ruby-dev:31739] -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml