diff --git a/Userland/Libraries/LibJS/Parser.cpp b/Userland/Libraries/LibJS/Parser.cpp index 06ee18cefc..7af6cd93e7 100644 --- a/Userland/Libraries/LibJS/Parser.cpp +++ b/Userland/Libraries/LibJS/Parser.cpp @@ -3174,6 +3174,9 @@ NonnullRefPtr Parser::parse_optional_chain(NonnullRefPtr { + expect(`#n`).not.toEval(); + expect(`obj.#n`).not.toEval(); + expect(`this.#n`).not.toEval(); + expect(`if (#n) 1;`).not.toEval(); + expect(`1?.#n`).not.toEval(); + expect(`1?.n.#n`).not.toEval(); +}); + +// OSS-FUZZ Issue 53363: top level unknown private names seg faults +expect(() => eval(`#n`)).toThrowWithMessage( + SyntaxError, + "Reference to undeclared private field or method '#n'" +); +expect(() => eval(`obj.#n`)).toThrowWithMessage( + SyntaxError, + "Reference to undeclared private field or method '#n'" +); +expect(() => eval(`this.#n`)).toThrowWithMessage( + SyntaxError, + "Reference to undeclared private field or method '#n'" +); +expect(() => eval(`if (#n) 1;`)).toThrowWithMessage( + SyntaxError, + "Reference to undeclared private field or method '#n'" +); +expect(() => eval(`1?.#n`)).toThrowWithMessage( + SyntaxError, + "Reference to undeclared private field or method '#n'" +); +expect(() => eval(`1?.n.#n`)).toThrowWithMessage( + SyntaxError, + "Reference to undeclared private field or method '#n'" +);