diff options
-rw-r--r-- | src/command.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/command.c b/src/command.c index 6ebcb977c..882d968d3 100644 --- a/src/command.c +++ b/src/command.c @@ -1422,16 +1422,19 @@ static CommandEntry *getCommandEntryAndCheckArgcAndPermission(struct client *cli static CommandEntry *getCommandEntryFromString(char *string, int permission) { - CommandEntry *cmd; + CommandEntry *cmd = NULL; char *argv[COMMAND_ARGV_MAX] = { NULL }; - int argc = buffer2array(string, argv, COMMAND_ARGV_MAX); + char *duplicated = xstrdup(string); + int argc = buffer2array(duplicated, argv, COMMAND_ARGV_MAX); if (0 == argc) - return NULL; + goto out; cmd = getCommandEntryAndCheckArgcAndPermission(0, permission, argc, argv); +out: + free(duplicated); return cmd; } |