Skip to content

Commit 8c3cda6

Browse files
committed
[MERGE chakra-core#4433 @mattzeunert] Return invalid date when parsing out of range date/month value
Merge pull request chakra-core#4433 from mattzeunert:fix-invalid-month Re-opening chakra-core#4378 as a new PR as the signing tool wasn't picking up the old one. Fixes chakra-core#4329 regarding how invalid dates are parsed. For example, new Date('13/40/2000') was previously parsed as Feb 09 2001 instead of Invalid Date.
2 parents d81df87 + 5114145 commit 8c3cda6

3 files changed

Lines changed: 23 additions & 1 deletion

File tree

lib/Runtime/Library/DateImplementation.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1484,7 +1484,9 @@ namespace Js {
14841484
continue;
14851485
}
14861486

1487-
if (lwNil == lwYear || lwNil == lwMonth || lwNil == lwDate)
1487+
if (lwNil == lwYear ||
1488+
lwNil == lwMonth || lwMonth > 11 ||
1489+
lwNil == lwDate || lwDate > 31)
14881490
{
14891491
goto LError;
14901492
}

test/Date/DateParse.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,3 +174,19 @@ WScript.Echo(Date.parse("2011/11-08 19:48:43"));
174174

175175
// Multiple 'T's aren't allowed
176176
WScript.Echo(Date.parse("2011-11-08TT19:48:43"));
177+
178+
// Parse dates with out of range month values
179+
180+
datestring = "13/01/2000";
181+
WScript.Echo(Date.parse(datestring));
182+
183+
datestring = "2000-13-01";
184+
WScript.Echo(Date.parse(datestring));
185+
186+
// Parse dates with out of range date values
187+
188+
datestring = "01/40/2000";
189+
WScript.Echo(Date.parse(datestring));
190+
191+
datestring = "2000-01-40";
192+
WScript.Echo(Date.parse(datestring));

test/Date/DateParse_es5.baseline

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,3 +117,7 @@ NaN
117117
1320810523000
118118
1320810523000
119119
NaN
120+
NaN
121+
NaN
122+
NaN
123+
NaN

0 commit comments

Comments
 (0)