summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNobuyoshi Nakada <[email protected]>2021-07-09 07:21:27 +0900
committergit <[email protected]>2022-02-25 19:52:31 +0900
commitb5c2a0840f4dd8b44e0f82cda7a7f225d0a816ef (patch)
tree3b8548b45120c8092d903660a44d8823b637d456
parent1758eade579c91f9ad000943994fccf30c7bf8a0 (diff)
[ruby/date] Anchor at beginning of numbers
https://hackerone.com/reports/1254844 https://github.com/ruby/date/commit/2f7814cc22
-rw-r--r--ext/date/date_parse.c2
-rw-r--r--test/date/test_date_parse.rb5
2 files changed, 6 insertions, 1 deletions
diff --git a/ext/date/date_parse.c b/ext/date/date_parse.c
index 9511bedf47..95274d5baa 100644
--- a/ext/date/date_parse.c
+++ b/ext/date/date_parse.c
@@ -980,7 +980,7 @@ parse_iso(VALUE str, VALUE hash)
{
static const char pat_source[] =
#ifndef TIGHT_PARSER
- "('?[-+]?\\d+)-(\\d+)-('?-?\\d+)"
+ "('?[-+]?" NUMBER "+)-(\\d+)-('?-?\\d+)"
#else
BOS
FPW_COM FPT_COM
diff --git a/test/date/test_date_parse.rb b/test/date/test_date_parse.rb
index a87b165080..8876104f11 100644
--- a/test/date/test_date_parse.rb
+++ b/test/date/test_date_parse.rb
@@ -590,6 +590,11 @@ class TestDateParse < Test::Unit::TestCase
h = Timeout.timeout(1) {Date._parse(str)}
assert_equal(100_000, Math.log10(h[:year]))
assert_equal(1, h[:mon])
+
+ str = "Jan - 1" + "0" * 100_000
+ h = Timeout.timeout(1) {Date._parse(str)}
+ assert_equal(1, h[:mon])
+ assert_not_include(h, :year)
end
require 'time'