From 90982576684ca88b1f00ecb20010b9e9f7ff2db8 Mon Sep 17 00:00:00 2001 From: Idan Horowitz Date: Sat, 30 Apr 2022 20:50:17 +0300 Subject: [PATCH] LibJS: Reject -00000 as extended year in Date parsing --- Userland/Libraries/LibJS/Runtime/DateConstructor.cpp | 3 +++ Userland/Libraries/LibJS/Tests/builtins/Date/Date.parse.js | 1 + 2 files changed, 4 insertions(+) diff --git a/Userland/Libraries/LibJS/Runtime/DateConstructor.cpp b/Userland/Libraries/LibJS/Runtime/DateConstructor.cpp index fb48a87a97..9db88ebc88 100644 --- a/Userland/Libraries/LibJS/Runtime/DateConstructor.cpp +++ b/Userland/Libraries/LibJS/Runtime/DateConstructor.cpp @@ -59,6 +59,9 @@ static Value parse_simplified_iso8601(GlobalObject& global_object, String const& Optional absolute_year; if (!lex_n_digits(6, absolute_year)) return false; + // The representation of the year 0 as -000000 is invalid. + if (absolute_year.value() == 0) + return false; year = -absolute_year.value(); return true; } diff --git a/Userland/Libraries/LibJS/Tests/builtins/Date/Date.parse.js b/Userland/Libraries/LibJS/Tests/builtins/Date/Date.parse.js index 3ace60e830..bf07d6722a 100644 --- a/Userland/Libraries/LibJS/Tests/builtins/Date/Date.parse.js +++ b/Userland/Libraries/LibJS/Tests/builtins/Date/Date.parse.js @@ -30,6 +30,7 @@ test("basic functionality", () => { expect(Date.parse("1980-05-30T13:40+1:10")).toBe(NaN); expect(Date.parse("1970-06-30T13:30Zoo")).toBe(NaN); expect(Date.parse("2020T13:30.40:")).toBe(NaN); + expect(Date.parse("-000000")).toBe(NaN); }); test("time clip", () => {