From 8f96b1bf0f03e05fbf2ded0856a03bd522549d7b Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Mon, 13 Mar 2006 22:49:56 +0000 Subject: r14351: Ensure we use the minimum of PATH_MAX and sizeof(pstring). Fix Coverity #59. Jeremy. (This used to be commit d793e1550cc8c79a2764609cddec082470d226e4) --- source3/client/client.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'source3') diff --git a/source3/client/client.c b/source3/client/client.c index 0126e17c5bd..1d42fd2995a 100644 --- a/source3/client/client.c +++ b/source3/client/client.c @@ -2919,16 +2919,22 @@ static char **remote_completion(const char *text, int len) info.text = text; info.len = len; - if (len >= PATH_MAX) + if (len >= MIN(PATH_MAX,sizeof(pstring))) { return(NULL); + } info.matches = SMB_MALLOC_ARRAY(char *,MAX_COMPLETIONS); - if (!info.matches) return NULL; + if (!info.matches) { + return NULL; + } info.matches[0] = NULL; - for (i = len-1; i >= 0; i--) - if ((text[i] == '/') || (text[i] == '\\')) + for (i = len-1; i >= 0; i--) { + if ((text[i] == '/') || (text[i] == '\\')) { break; + } + } + info.text = text+i+1; info.samelen = info.len = len-i-1; @@ -2936,8 +2942,9 @@ static char **remote_completion(const char *text, int len) strncpy(info.dirmask, text, i+1); info.dirmask[i+1] = 0; pstr_sprintf(dirmask, "%s%*s*", cur_dir, i-1, text); - } else + } else { pstr_sprintf(dirmask, "%s*", cur_dir); + } if (cli_list(cli, dirmask, aDIR | aSYSTEM | aHIDDEN, completion_remote_filter, &info) < 0) goto cleanup; -- cgit