From 5f0ed72c489fd1f0b3c38e3608d27966e1f41f88 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Mon, 29 Sep 2008 13:18:35 +0200 Subject: command: don't clobber next list value when preparsing This only breaks "update" under list command mode and no other commands. This can be done more optimally without the extra heap allocation via xstrdup(); but is uncommon enough to not matter. --- src/command.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src/command.c') 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; } -- cgit v1.2.3