From 769939b62f7557f8e7c483223d68a8b39af43e37 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Mon, 29 Sep 2008 02:06:58 -0700 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(-) diff --git a/src/command.c b/src/command.c index 616132bea..3d4e2ccd5 100644 --- a/src/command.c +++ b/src/command.c @@ -1387,16 +1387,19 @@ static CommandEntry *getCommandEntryAndCheckArgcAndPermission(int fd, 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