summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2021-01-12 17:24:43 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2021-01-12 17:24:43 +0900
commit1eb8eb55c27b19e36d5bd23ce27f7ec2b9a7f521 (patch)
treebc6ee6e1558b8054a603d2e2893199521169f80a
parentb017848f8a9c907be07f51d6ae6304bff9950594 (diff)
downloadruby-1eb8eb55c27b19e36d5bd23ce27f7ec2b9a7f521.tar.gz
Convert time component strings to integers more strictly
https://bugs.ruby-lang.org/issues/17485#change-89871
-rw-r--r--test/ruby/test_time.rb1
-rw-r--r--time.c8
2 files changed, 5 insertions, 4 deletions
diff --git a/test/ruby/test_time.rb b/test/ruby/test_time.rb
index e49753e143..e5da0d6343 100644
--- a/test/ruby/test_time.rb
+++ b/test/ruby/test_time.rb
@@ -46,6 +46,7 @@ class TestTime < Test::Unit::TestCase
t = Time.new(*tm, "-12:00")
assert_equal([2001,2,28,23,59,30,-43200], [t.year, t.month, t.mday, t.hour, t.min, t.sec, t.gmt_offset], bug4090)
assert_raise(ArgumentError) { Time.new(2000,1,1, 0,0,0, "+01:60") }
+ assert_raise(ArgumentError) { Time.new(2021, 1, 1, "+09:99") }
end
def test_time_add()
diff --git a/time.c b/time.c
index a3952743da..e7a211baa5 100644
--- a/time.c
+++ b/time.c
@@ -2793,7 +2793,7 @@ static int
obj2int(VALUE obj)
{
if (RB_TYPE_P(obj, T_STRING)) {
- obj = rb_str_to_inum(obj, 10, FALSE);
+ obj = rb_str_to_inum(obj, 10, TRUE);
}
return NUM2INT(obj);
@@ -2815,7 +2815,7 @@ static VALUE
obj2vint(VALUE obj)
{
if (RB_TYPE_P(obj, T_STRING)) {
- obj = rb_str_to_inum(obj, 10, FALSE);
+ obj = rb_str_to_inum(obj, 10, TRUE);
}
else {
obj = rb_to_int(obj);
@@ -2830,7 +2830,7 @@ obj2subsecx(VALUE obj, VALUE *subsecx)
VALUE subsec;
if (RB_TYPE_P(obj, T_STRING)) {
- obj = rb_str_to_inum(obj, 10, FALSE);
+ obj = rb_str_to_inum(obj, 10, TRUE);
*subsecx = INT2FIX(0);
}
else {
@@ -2844,7 +2844,7 @@ static VALUE
usec2subsecx(VALUE obj)
{
if (RB_TYPE_P(obj, T_STRING)) {
- obj = rb_str_to_inum(obj, 10, FALSE);
+ obj = rb_str_to_inum(obj, 10, TRUE);
}
return mulquov(num_exact(obj), INT2FIX(TIME_SCALE), INT2FIX(1000000));