Author: jra Date: 2006-03-13 19:40:55 +0000 (Mon, 13 Mar 2006) New Revision: 14341
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=14341 Log: Fix coverity #78, resource leak in error path. Jeremy. Modified: trunk/source/rpcclient/rpcclient.c Changeset: Modified: trunk/source/rpcclient/rpcclient.c =================================================================== --- trunk/source/rpcclient/rpcclient.c 2006-03-13 19:40:51 UTC (rev 14340) +++ trunk/source/rpcclient/rpcclient.c 2006-03-13 19:40:55 UTC (rev 14341) @@ -58,35 +58,43 @@ #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; }
