1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-23 17:34:34 +03:00

r14340: Fix coverity #78, resource leak in error path.

Jeremy.
(This used to be commit 76c4f2c4dc)
This commit is contained in:
Jeremy Allison 2006-03-13 19:40:51 +00:00 committed by Gerald (Jerry) Carter
parent bd1e853c19
commit abafc0d887

View File

@ -58,35 +58,43 @@ static char **completion_fn(const char *text, int start, int end)
#endif
/* make sure we have a list of valid commands */
if (!commands)
if (!commands) {
return NULL;
}
matches = SMB_MALLOC_ARRAY(char *, MAX_COMPLETIONS);
if (!matches) return NULL;
if (!matches) {
return NULL;
}
matches[count++] = SMB_STRDUP(text);
if (!matches[0]) return NULL;
if (!matches[0]) {
SAFE_FREE(matches);
return NULL;
}
while (commands && count < MAX_COMPLETIONS-1)
{
if (!commands->cmd_set)
while (commands && count < MAX_COMPLETIONS-1) {
if (!commands->cmd_set) {
break;
}
for (i=0; commands->cmd_set[i].name; i++)
{
for (i=0; commands->cmd_set[i].name; i++) {
if ((strncmp(text, commands->cmd_set[i].name, strlen(text)) == 0) &&
(( commands->cmd_set[i].returntype == RPC_RTYPE_NTSTATUS &&
commands->cmd_set[i].ntfn ) ||
( commands->cmd_set[i].returntype == RPC_RTYPE_WERROR &&
commands->cmd_set[i].wfn)))
{
commands->cmd_set[i].wfn))) {
matches[count] = SMB_STRDUP(commands->cmd_set[i].name);
if (!matches[count])
if (!matches[count]) {
for (i = 0; i < count; i++) {
SAFE_FREE(matches[count]);
}
SAFE_FREE(matches);
return NULL;
}
count++;
}
}
commands = commands->next;
}