Add range check for server port in redis-cli/benchmark (#9854)

Validating inputs ahead of time, to give the end user a slightly more useful error.
This commit is contained in:
Binbin 2022-07-13 11:32:14 +08:00 committed by GitHub
parent 8a4e3bcd8d
commit 20af95a99f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 0 deletions

View File

@ -1446,6 +1446,10 @@ int parseOptions(int argc, char **argv) {
} else if (!strcmp(argv[i],"-p")) {
if (lastarg) goto invalid;
config.conn_info.hostport = atoi(argv[++i]);
if (config.conn_info.hostport < 0 || config.conn_info.hostport > 65535) {
fprintf(stderr, "Invalid server port.\n");
exit(1);
}
} else if (!strcmp(argv[i],"-s")) {
if (lastarg) goto invalid;
config.hostsocket = strdup(argv[++i]);
@ -1459,6 +1463,10 @@ int parseOptions(int argc, char **argv) {
config.conn_info.user = sdsnew(argv[++i]);
} else if (!strcmp(argv[i],"-u") && !lastarg) {
parseRedisUri(argv[++i],"redis-benchmark",&config.conn_info,&config.tls);
if (config.conn_info.hostport < 0 || config.conn_info.hostport > 65535) {
fprintf(stderr, "Invalid server port.\n");
exit(1);
}
config.input_dbnumstr = sdsfromlonglong(config.conn_info.input_dbnum);
} else if (!strcmp(argv[i],"-3")) {
config.resp3 = 1;

View File

@ -1961,6 +1961,10 @@ static int parseOptions(int argc, char **argv) {
config.stdin_tag_name = argv[++i];
} else if (!strcmp(argv[i],"-p") && !lastarg) {
config.conn_info.hostport = atoi(argv[++i]);
if (config.conn_info.hostport < 0 || config.conn_info.hostport > 65535) {
fprintf(stderr, "Invalid server port.\n");
exit(1);
}
} else if (!strcmp(argv[i],"-s") && !lastarg) {
config.hostsocket = argv[++i];
} else if (!strcmp(argv[i],"-r") && !lastarg) {
@ -1982,6 +1986,10 @@ static int parseOptions(int argc, char **argv) {
config.conn_info.user = sdsnew(argv[++i]);
} else if (!strcmp(argv[i],"-u") && !lastarg) {
parseRedisUri(argv[++i],"redis-cli",&config.conn_info,&config.tls);
if (config.conn_info.hostport < 0 || config.conn_info.hostport > 65535) {
fprintf(stderr, "Invalid server port.\n");
exit(1);
}
} else if (!strcmp(argv[i],"--raw")) {
config.output = OUTPUT_RAW;
} else if (!strcmp(argv[i],"--no-raw")) {