svn commit: samba r21608 - in branches: SAMBA_3_0/source/libads SAMBA_3_0/source/passdb SAMBA_3_0/source/utils SAMBA_3_0_25/source/libads SAMBA_3_0_25/source/passdb SAMBA_3_0_25/source/utils

jra at samba.org jra at samba.org
Thu Mar 1 01:17:38 GMT 2007


Author: jra
Date: 2007-03-01 01:17:36 +0000 (Thu, 01 Mar 2007)
New Revision: 21608

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

Log:
Fix a couple of memleaks in error code paths before
Coverity finds them :-)
Jeremy.

Modified:
   branches/SAMBA_3_0/source/libads/ldap.c
   branches/SAMBA_3_0/source/passdb/pdb_ldap.c
   branches/SAMBA_3_0/source/utils/net_ads.c
   branches/SAMBA_3_0_25/source/libads/ldap.c
   branches/SAMBA_3_0_25/source/passdb/pdb_ldap.c
   branches/SAMBA_3_0_25/source/utils/net_ads.c


Changeset:
Modified: branches/SAMBA_3_0/source/libads/ldap.c
===================================================================
--- branches/SAMBA_3_0/source/libads/ldap.c	2007-03-01 00:50:56 UTC (rev 21607)
+++ branches/SAMBA_3_0/source/libads/ldap.c	2007-03-01 01:17:36 UTC (rev 21608)
@@ -1635,7 +1635,7 @@
 	char *samAccountName, *controlstr;
 	TALLOC_CTX *ctx;
 	ADS_MODLIST mods;
-	char *machine_escaped;
+	char *machine_escaped = NULL;
 	char *new_dn;
 	const char *objectClass[] = {"top", "person", "organizationalPerson",
 				     "user", "computer", NULL};
@@ -1681,6 +1681,7 @@
 	ret = ads_gen_add(ads, new_dn, mods);
 
 done:
+	SAFE_FREE(machine_escaped);
 	ads_msgfree(ads, res);
 	talloc_destroy(ctx);
 	

Modified: branches/SAMBA_3_0/source/passdb/pdb_ldap.c
===================================================================
--- branches/SAMBA_3_0/source/passdb/pdb_ldap.c	2007-03-01 00:50:56 UTC (rev 21607)
+++ branches/SAMBA_3_0/source/passdb/pdb_ldap.c	2007-03-01 01:17:36 UTC (rev 21608)
@@ -2436,6 +2436,7 @@
 			
 			filter = talloc_asprintf_append(filter, "(uid=%s)", escape_memberuid);
 			if (filter == NULL) {
+				SAFE_FREE(escape_memberuid);
 				ret = NT_STATUS_NO_MEMORY;
 				goto done;
 			}

Modified: branches/SAMBA_3_0/source/utils/net_ads.c
===================================================================
--- branches/SAMBA_3_0/source/utils/net_ads.c	2007-03-01 00:50:56 UTC (rev 21607)
+++ branches/SAMBA_3_0/source/utils/net_ads.c	2007-03-01 01:17:36 UTC (rev 21608)
@@ -1819,7 +1819,7 @@
 	TALLOC_CTX *mem_ctx = talloc_init("net_ads_printer_publish");
 	ADS_MODLIST mods = ads_init_mods(mem_ctx);
 	char *prt_dn, *srv_dn, **srv_cn;
-	char *srv_cn_escaped, *printername_escaped;
+	char *srv_cn_escaped = NULL, *printername_escaped = NULL;
 	LDAPMessage *res = NULL;
 
 	if (!ADS_ERR_OK(ads_startup(True, &ads))) {
@@ -1874,6 +1874,8 @@
 	srv_cn_escaped = escape_rdn_val_string_alloc(srv_cn[0]);
 	printername_escaped = escape_rdn_val_string_alloc(printername);
 	if (!srv_cn_escaped || !printername_escaped) {
+		SAFE_FREE(srv_cn_escaped);
+		SAFE_FREE(printername_escaped);
 		d_fprintf(stderr, "Internal error, out of memory!");
 		ads_destroy(&ads);
 		return -1;
@@ -1881,16 +1883,21 @@
 
 	asprintf(&prt_dn, "cn=%s-%s,%s", srv_cn_escaped, printername_escaped, srv_dn);
 
+	SAFE_FREE(srv_cn_escaped);
+	SAFE_FREE(printername_escaped);
+
 	pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_SPOOLSS, &nt_status);
 	if (!pipe_hnd) {
 		d_fprintf(stderr, "Unable to open a connnection to the spoolss pipe on %s\n",
 			 servername);
+		SAFE_FREE(prt_dn);
 		ads_destroy(&ads);
 		return -1;
 	}
 
 	if (!W_ERROR_IS_OK(get_remote_printer_publishing_data(pipe_hnd, mem_ctx, &mods,
 							      printername))) {
+		SAFE_FREE(prt_dn);
 		ads_destroy(&ads);
 		return -1;
 	}
@@ -1898,11 +1905,13 @@
         rc = ads_add_printer_entry(ads, prt_dn, mem_ctx, &mods);
         if (!ADS_ERR_OK(rc)) {
                 d_fprintf(stderr, "ads_publish_printer: %s\n", ads_errstr(rc));
+		SAFE_FREE(prt_dn);
 		ads_destroy(&ads);
                 return -1;
         }
  
         d_printf("published printer\n");
+	SAFE_FREE(prt_dn);
 	ads_destroy(&ads);
  
 	return 0;

Modified: branches/SAMBA_3_0_25/source/libads/ldap.c
===================================================================
--- branches/SAMBA_3_0_25/source/libads/ldap.c	2007-03-01 00:50:56 UTC (rev 21607)
+++ branches/SAMBA_3_0_25/source/libads/ldap.c	2007-03-01 01:17:36 UTC (rev 21608)
@@ -1635,7 +1635,7 @@
 	char *samAccountName, *controlstr;
 	TALLOC_CTX *ctx;
 	ADS_MODLIST mods;
-	char *machine_escaped;
+	char *machine_escaped = NULL;
 	char *new_dn;
 	const char *objectClass[] = {"top", "person", "organizationalPerson",
 				     "user", "computer", NULL};
@@ -1681,6 +1681,7 @@
 	ret = ads_gen_add(ads, new_dn, mods);
 
 done:
+	SAFE_FREE(machine_escaped);
 	ads_msgfree(ads, res);
 	talloc_destroy(ctx);
 	

Modified: branches/SAMBA_3_0_25/source/passdb/pdb_ldap.c
===================================================================
--- branches/SAMBA_3_0_25/source/passdb/pdb_ldap.c	2007-03-01 00:50:56 UTC (rev 21607)
+++ branches/SAMBA_3_0_25/source/passdb/pdb_ldap.c	2007-03-01 01:17:36 UTC (rev 21608)
@@ -2436,6 +2436,7 @@
 			
 			filter = talloc_asprintf_append(filter, "(uid=%s)", escape_memberuid);
 			if (filter == NULL) {
+				SAFE_FREE(escape_memberuid);
 				ret = NT_STATUS_NO_MEMORY;
 				goto done;
 			}

Modified: branches/SAMBA_3_0_25/source/utils/net_ads.c
===================================================================
--- branches/SAMBA_3_0_25/source/utils/net_ads.c	2007-03-01 00:50:56 UTC (rev 21607)
+++ branches/SAMBA_3_0_25/source/utils/net_ads.c	2007-03-01 01:17:36 UTC (rev 21608)
@@ -1819,7 +1819,7 @@
 	TALLOC_CTX *mem_ctx = talloc_init("net_ads_printer_publish");
 	ADS_MODLIST mods = ads_init_mods(mem_ctx);
 	char *prt_dn, *srv_dn, **srv_cn;
-	char *srv_cn_escaped, *printername_escaped;
+	char *srv_cn_escaped = NULL, *printername_escaped = NULL;
 	LDAPMessage *res = NULL;
 
 	if (!ADS_ERR_OK(ads_startup(True, &ads))) {
@@ -1874,6 +1874,8 @@
 	srv_cn_escaped = escape_rdn_val_string_alloc(srv_cn[0]);
 	printername_escaped = escape_rdn_val_string_alloc(printername);
 	if (!srv_cn_escaped || !printername_escaped) {
+		SAFE_FREE(srv_cn_escaped);
+		SAFE_FREE(printername_escaped);
 		d_fprintf(stderr, "Internal error, out of memory!");
 		ads_destroy(&ads);
 		return -1;
@@ -1881,16 +1883,21 @@
 
 	asprintf(&prt_dn, "cn=%s-%s,%s", srv_cn_escaped, printername_escaped, srv_dn);
 
+	SAFE_FREE(srv_cn_escaped);
+	SAFE_FREE(printername_escaped);
+
 	pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_SPOOLSS, &nt_status);
 	if (!pipe_hnd) {
 		d_fprintf(stderr, "Unable to open a connnection to the spoolss pipe on %s\n",
 			 servername);
+		SAFE_FREE(prt_dn);
 		ads_destroy(&ads);
 		return -1;
 	}
 
 	if (!W_ERROR_IS_OK(get_remote_printer_publishing_data(pipe_hnd, mem_ctx, &mods,
 							      printername))) {
+		SAFE_FREE(prt_dn);
 		ads_destroy(&ads);
 		return -1;
 	}
@@ -1898,11 +1905,13 @@
         rc = ads_add_printer_entry(ads, prt_dn, mem_ctx, &mods);
         if (!ADS_ERR_OK(rc)) {
                 d_fprintf(stderr, "ads_publish_printer: %s\n", ads_errstr(rc));
+		SAFE_FREE(prt_dn);
 		ads_destroy(&ads);
                 return -1;
         }
  
         d_printf("published printer\n");
+	SAFE_FREE(prt_dn);
 	ads_destroy(&ads);
  
 	return 0;



More information about the samba-cvs mailing list