BUG/MINOR: cli: Issue an error when too many args are passed for a command
When a command is parsed to split it in an array of arguments, by default, at most 64 arguments are supported. But no warning was emitted when there were too many arguments. Instead, the arguments above the limit were silently ignored. It could be an issue for some commands, like "add server", because there was no way to know some arguments were ignored. Now an error is issued when too many arguments are passed and the command is not executed. This patch should be backported to all stable versions.
This commit is contained in:
parent
4e14889587
commit
3479f230e0
10
src/cli.c
10
src/cli.c
@ -806,6 +806,16 @@ static int cli_parse_request(struct appctx *appctx)
|
||||
}
|
||||
/* fill unused slots */
|
||||
p = b_tail(&appctx->inbuf);
|
||||
|
||||
/* throw an error if too many args are provided */
|
||||
if (*p && i == MAX_CLI_ARGS) {
|
||||
char *err = NULL;
|
||||
|
||||
cli_err(appctx, memprintf(&err, "Too many arguments. Commands must have at most %d arguments.\n", MAX_CLI_ARGS));
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
for (; i < MAX_CLI_ARGS + 1; i++)
|
||||
args[i] = p;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user