svn commit: samba r14341 - in trunk/source/rpcclient: .

jra at samba.org jra at samba.org
Mon Mar 13 19:40:57 GMT 2006


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;
 		
 	}



More information about the samba-cvs mailing list