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