svn commit: samba r12274 - in trunk/source: libsmb rpc_client

jra at samba.org jra at samba.org
Fri Dec 16 00:10:59 GMT 2005


Author: jra
Date: 2005-12-16 00:10:57 +0000 (Fri, 16 Dec 2005)
New Revision: 12274

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=12274

Log:
Fix memory leak found by Mikhail Kshevetskiy <kl at laska.dorms.spbu.ru>
and followed up by derrell at samba.org.
Jeremy.

Modified:
   trunk/source/libsmb/clilist.c
   trunk/source/rpc_client/cli_pipe.c


Changeset:
Modified: trunk/source/libsmb/clilist.c
===================================================================
--- trunk/source/libsmb/clilist.c	2005-12-16 00:01:15 UTC (rev 12273)
+++ trunk/source/libsmb/clilist.c	2005-12-16 00:10:57 UTC (rev 12274)
@@ -271,6 +271,10 @@
 			   it gives ERRSRV/ERRerror temprarily */
 			uint8 eclass;
 			uint32 ecode;
+
+			SAFE_FREE(rdata);
+			SAFE_FREE(rparam);
+
 			cli_dos_error(cli, &eclass, &ecode);
 			if (eclass != ERRSRV || ecode != ERRerror)
 				break;
@@ -278,8 +282,11 @@
 			continue;
 		}
 
-                if (cli_is_error(cli) || !rdata || !rparam) 
+                if (cli_is_error(cli) || !rdata || !rparam) {
+			SAFE_FREE(rdata);
+			SAFE_FREE(rparam);
 			break;
+		}
 
 		if (total_received == -1)
 			total_received = 0;
@@ -297,8 +304,11 @@
 			ff_lastname = SVAL(p,6);
 		}
 
-		if (ff_searchcount == 0) 
+		if (ff_searchcount == 0) {
+			SAFE_FREE(rdata);
+			SAFE_FREE(rparam);
 			break;
+		}
 
 		/* point to the data bytes */
 		p = rdata;
@@ -332,6 +342,8 @@
 
 		if (!tdl) {
 			DEBUG(0,("cli_list_new: Failed to expand dirlist\n"));
+			SAFE_FREE(rdata);
+			SAFE_FREE(rparam);
 			break;
 		} else {
 			dirlist = tdl;

Modified: trunk/source/rpc_client/cli_pipe.c
===================================================================
--- trunk/source/rpc_client/cli_pipe.c	2005-12-16 00:01:15 UTC (rev 12273)
+++ trunk/source/rpc_client/cli_pipe.c	2005-12-16 00:10:57 UTC (rev 12274)
@@ -789,6 +789,8 @@
 			(unsigned int)cli->fnum,
 			cli_errstr(cli->cli)));
 		ret = cli_get_nt_error(cli->cli);
+		SAFE_FREE(rparam);
+		SAFE_FREE(prdata);
 		goto err;
 	}
 



More information about the samba-cvs mailing list