Reviewers: rossberg,
Message:
Please take a look.
Description:
Return an error when parsing invalid dates where a number immediately
follows a
word.
BUG=53209,126448
TEST=mjsunit/date-parse.js
[email protected]
Please review this at https://chromiumcodereview.appspot.com/10541138/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files:
M src/dateparser-inl.h
M test/mjsunit/date-parse.js
Index: src/dateparser-inl.h
diff --git a/src/dateparser-inl.h b/src/dateparser-inl.h
index
32f0f9ea8f521b122c5d9c035183a5e06e95f9cc..a5c7143bdd37743a0b334696ec6e83ecd181b96e
100644
--- a/src/dateparser-inl.h
+++ b/src/dateparser-inl.h
@@ -148,6 +148,9 @@ bool DateParser::Parse(Vector<Char> str,
} else {
// Garbage words are illegal if a number has been read.
if (has_read_number) return false;
+ // The first number has to be separated from garbage words by
+ // whitespace or other separators.
+ if (scanner.Peek().IsNumber()) return false;
}
} else if (token.IsAsciiSign() && (tz.IsUTC() || !time.IsEmpty())) {
// Parse UTC offset (only after UTC or time).
Index: test/mjsunit/date-parse.js
diff --git a/test/mjsunit/date-parse.js b/test/mjsunit/date-parse.js
index
b46e39ab6131ad6e3b4df32492ea49d2e9d06fc8..cb4a951c7adf0d8305f26f71d42a49d593cb7756
100644
--- a/test/mjsunit/date-parse.js
+++ b/test/mjsunit/date-parse.js
@@ -287,6 +287,9 @@ for (var i = 0; i < 24 * 365 * 100; i += 150) {
var testCasesNegative = [
'May 25 2008 1:30 (PM)) UTC', // Bad unmatched ')' after number.
'May 25 2008 1:30( )AM (PM)', //
+ 'a1', // Issue 126448, 53209.
+ 'nasfdjklsfjoaifg1',
+ 'x_2',
'May 25 2008 AAA (GMT)']; // Unknown word after number.
testCasesNegative.forEach(function (s) {
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev