From 3ef0710fa4f487e8887a8c16714c6443009e4a47 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Wed, 15 Sep 2004 22:49:23 +0000 Subject: r2361: Fix the appalling toktocliplist() fn. Bug found by Luis Benvenutto. Jeremy. (This used to be commit d434d8e2b47bc8553ee04bd7211f622e3fcbb7fb) --- source3/client/clitar.c | 8 +++++--- source3/lib/util_str.c | 13 ++++++++----- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/source3/client/clitar.c b/source3/client/clitar.c index 64c194b54d..4cadef558d 100644 --- a/source3/client/clitar.c +++ b/source3/client/clitar.c @@ -1345,8 +1345,9 @@ Principal command for creating / extracting int cmd_tar(void) { fstring buf; - char **argl; - int argcl; + char **argl = NULL; + int argcl = 0; + int ret; if (!next_token_nr(NULL,buf,NULL,sizeof(buf))) { DEBUG(0,("tar [IXbgan] \n")); @@ -1357,8 +1358,9 @@ int cmd_tar(void) if (!tar_parseargs(argcl, argl, buf, 0)) return 1; + ret = process_tar(); SAFE_FREE(argl); - return process_tar(); + return ret; } /**************************************************************************** diff --git a/source3/lib/util_str.c b/source3/lib/util_str.c index 6eee62c14a..65a616ad41 100644 --- a/source3/lib/util_str.c +++ b/source3/lib/util_str.c @@ -134,17 +134,20 @@ char **toktocliplist(int *ctok, const char *sep) *ctok=ictok; s=(char *)last_ptr; - if (!(ret=iret=malloc(ictok*sizeof(char *)))) + if (!(ret=iret=malloc((ictok+1)*sizeof(char *)))) return NULL; while(ictok--) { *iret++=s; - while(*s++) - ; - while(!*s) - s++; + if (ictok > 0) { + while(*s++) + ; + while(!*s) + s++; + } } + ret[*ctok] = NULL; return ret; } -- cgit