Browse Source

Return invalid date when parsing out of range date/month value

Resolves #4329
Matt Zeunert 8 năm trước cách đây
mục cha
commit
511414528b

+ 3 - 1
lib/Runtime/Library/DateImplementation.cpp

@@ -1484,7 +1484,9 @@ Error:
             continue;
         }
 
-        if (lwNil == lwYear || lwNil == lwMonth || lwNil == lwDate)
+        if (lwNil == lwYear ||
+            lwNil == lwMonth || lwMonth > 11 ||
+            lwNil == lwDate || lwDate > 31)
         {
             goto LError;
         }

+ 16 - 0
test/Date/DateParse.js

@@ -174,3 +174,19 @@ WScript.Echo(Date.parse("2011/11-08 19:48:43"));
 
 // Multiple 'T's aren't allowed
 WScript.Echo(Date.parse("2011-11-08TT19:48:43"));
+
+// Parse dates with out of range month values
+
+datestring = "13/01/2000";
+WScript.Echo(Date.parse(datestring));
+
+datestring = "2000-13-01";
+WScript.Echo(Date.parse(datestring));
+
+// Parse dates with out of range date values
+
+datestring = "01/40/2000";
+WScript.Echo(Date.parse(datestring));
+
+datestring = "2000-01-40";
+WScript.Echo(Date.parse(datestring));

+ 4 - 0
test/Date/DateParse_es5.baseline

@@ -117,3 +117,7 @@ NaN
 1320810523000
 1320810523000
 NaN
+NaN
+NaN
+NaN
+NaN