aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRubin Xu <rubinxu@google.com>2021-01-07 12:58:08 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-01-07 12:58:08 +0000
commita2bf5cb802412e7c24b6350791914c6b517f0317 (patch)
treef44b850fee8d1b2f44b02c6351fb971fae1fbfad
parent0100d69c5c26173eec1bd1bea394c8305f3a3d0b (diff)
parente4e4ca007b16acdf73102b2fa1a3a195add698ae (diff)
downloadv8-a2bf5cb802412e7c24b6350791914c6b517f0317.tar.gz
[parser] Fix off-by-one in parameter count check am: 089e85f552 am: e3963822c3 am: e4e4ca007b
Original change: https://googleplex-android-review.googlesource.com/c/platform/external/v8/+/13120352 MUST ONLY BE SUBMITTED BY AUTOMERGER Change-Id: I8229fd4239acce29146881de34a845449a93575f
-rw-r--r--src/messages.h2
-rw-r--r--src/parsing/parser-base.h3
2 files changed, 3 insertions, 2 deletions
diff --git a/src/messages.h b/src/messages.h
index 030fc0b9..e94ce16e 100644
--- a/src/messages.h
+++ b/src/messages.h
@@ -695,7 +695,7 @@ class ErrorUtils : public AllStatic {
T(TooManyArguments, \
"Too many arguments in function call (only 65535 allowed)") \
T(TooManyParameters, \
- "Too many parameters in function definition (only 65535 allowed)") \
+ "Too many parameters in function definition (only 65534 allowed)") \
T(TooManySpreads, \
"Literal containing too many nested spreads (up to 65534 allowed)") \
T(TooManyVariables, "Too many variables declared (only 4194303 allowed)") \
diff --git a/src/parsing/parser-base.h b/src/parsing/parser-base.h
index 9d13724f..60d5e11f 100644
--- a/src/parsing/parser-base.h
+++ b/src/parsing/parser-base.h
@@ -3830,7 +3830,8 @@ void ParserBase<Impl>::ParseFormalParameterList(FormalParametersT* parameters,
if (peek() != Token::RPAREN) {
while (true) {
- if (parameters->arity > Code::kMaxArguments) {
+ // Add one since we're going to be adding a parameter.
+ if (parameters->arity + 1 > Code::kMaxArguments) {
ReportMessage(MessageTemplate::kTooManyParameters);
*ok = false;
return;