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:
parent
bd1e853c19
commit
abafc0d887
@ -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;
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user