From dcd6d809aad8498cccd4e00963776f6bc5f8dd7e Mon Sep 17 00:00:00 2001 From: John Sully Date: Wed, 21 Oct 2020 21:16:08 +0000 Subject: [PATCH] Remove leak warning with ASAN in the CLI Former-commit-id: 05cd92f7661ba1a96cdcac278720b7da0b6ba60e --- src/redis-cli.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/redis-cli.c b/src/redis-cli.c index 5dfcd6fad..412760278 100644 --- a/src/redis-cli.c +++ b/src/redis-cli.c @@ -1878,14 +1878,15 @@ static void repl(void) { exit(0); } -static int noninteractive(int argc, char **argv) { +static int noninteractive(int argc, char ***argv) { int retval = 0; if (config.stdinarg) { - argv = zrealloc(argv, (argc+1)*sizeof(char*), MALLOC_LOCAL); - argv[argc] = readArgFromStdin(); - retval = issueCommand(argc+1, argv); + *argv = zrealloc(*argv, (argc+1)*sizeof(char*), MALLOC_LOCAL); + (*argv)[argc] = readArgFromStdin(); + retval = issueCommand(argc+1, *argv); + sdsfree((*argv)[argc]); } else { - retval = issueCommand(argc, argv); + retval = issueCommand(argc, *argv); } return retval; } @@ -7134,6 +7135,11 @@ int main(int argc, char **argv) { if (config.eval) { return evalMode(argc,argv); } else { - return noninteractive(argc,convertToSds(argc,argv)); + sds *sdsArgs = convertToSds(argc,argv); + int rval = noninteractive(argc,&sdsArgs); + for (int i = 0; i < argc; ++i) + sdsfree(sdsArgs[i]); + zfree(sdsArgs); + return rval; } }