mirror of
https://github.com/fluencelabs/redis
synced 2025-06-15 18:21:21 +00:00
Merge pull request #4857 from youjiali1995/fix-command-getkeys
Fix core dump when using some commands with wrong arguments.
This commit is contained in:
15
src/server.c
15
src/server.c
@ -2854,7 +2854,10 @@ NULL
|
||||
int *keys, numkeys, j;
|
||||
|
||||
if (!cmd) {
|
||||
addReplyErrorFormat(c,"Invalid command specified");
|
||||
addReplyError(c,"Invalid command specified");
|
||||
return;
|
||||
} else if (cmd->getkeys_proc == NULL && cmd->firstkey == 0) {
|
||||
addReplyError(c,"The command has no key arguments");
|
||||
return;
|
||||
} else if ((cmd->arity > 0 && cmd->arity != c->argc-2) ||
|
||||
((c->argc-2) < -cmd->arity))
|
||||
@ -2864,9 +2867,13 @@ NULL
|
||||
}
|
||||
|
||||
keys = getKeysFromCommand(cmd,c->argv+2,c->argc-2,&numkeys);
|
||||
addReplyMultiBulkLen(c,numkeys);
|
||||
for (j = 0; j < numkeys; j++) addReplyBulk(c,c->argv[keys[j]+2]);
|
||||
getKeysFreeResult(keys);
|
||||
if (!keys) {
|
||||
addReplyError(c,"Invalid arguments specified for command");
|
||||
} else {
|
||||
addReplyMultiBulkLen(c,numkeys);
|
||||
for (j = 0; j < numkeys; j++) addReplyBulk(c,c->argv[keys[j]+2]);
|
||||
getKeysFreeResult(keys);
|
||||
}
|
||||
} else {
|
||||
addReplyErrorFormat(c, "Unknown subcommand or wrong number of arguments for '%s'. Try COMMAND HELP", (char*)c->argv[1]->ptr);
|
||||
}
|
||||
|
Reference in New Issue
Block a user