Fix two minor bugs (MIGRATE key args and getKeysUsingCommandTable) (#9455)
1. MIGRATE has a potnetial key arg in argv[3]. It should be reflected in the command table. 2. getKeysUsingCommandTable should never free getKeysResult, it is always freed by the caller) The reason we never encountered this double-free bug is that almost always getKeysResult uses the statis buffer and doesn't allocate a new one. (cherry picked from commit 6aa2285e32a6bc16fe2938bfb40d833db7d3752d)
This commit is contained in:
parent
694a869e78
commit
c936f801c0
1
src/db.c
1
src/db.c
@ -1623,7 +1623,6 @@ int getKeysUsingCommandTable(struct redisCommand *cmd,robj **argv, int argc, get
|
|||||||
* return no keys and expect the command implementation to report
|
* return no keys and expect the command implementation to report
|
||||||
* an arity or syntax error. */
|
* an arity or syntax error. */
|
||||||
if (cmd->flags & CMD_MODULE || cmd->arity < 0) {
|
if (cmd->flags & CMD_MODULE || cmd->arity < 0) {
|
||||||
getKeysFreeResult(result);
|
|
||||||
result->numkeys = 0;
|
result->numkeys = 0;
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
|
@ -870,7 +870,7 @@ struct redisCommand redisCommandTable[] = {
|
|||||||
|
|
||||||
{"migrate",migrateCommand,-6,
|
{"migrate",migrateCommand,-6,
|
||||||
"write random @keyspace @dangerous",
|
"write random @keyspace @dangerous",
|
||||||
0,migrateGetKeys,0,0,0,0,0,0},
|
0,migrateGetKeys,3,3,1,0,0,0},
|
||||||
|
|
||||||
{"asking",askingCommand,1,
|
{"asking",askingCommand,1,
|
||||||
"fast @keyspace",
|
"fast @keyspace",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user