[SCM] Samba Shared Repository - branch v3-2-test updated - initial-v3-2-unstable-876-g49cfe2b

Michael Adam obnox at samba.org
Mon Dec 24 00:07:56 GMT 2007


The branch, v3-2-test has been updated
       via  49cfe2b9ebe03d5985187890445b775047f8a2f4 (commit)
       via  a657b1c9f17d3cebc86b596f1f2d244750d70a6d (commit)
       via  45e3e2451adc1490b62d39d486c169ad53e1d3f3 (commit)
       via  2983aba9d092e6ede43f6eb521c17fe3f304d041 (commit)
       via  7e8451f2f03b246801783aaf4b3d54465292f8f7 (commit)
       via  09e62c765401102480d39a483bfffaf5a054babc (commit)
      from  0fe095e85ca981e5660a67f3fb7d7965ae62c667 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test


- Log -----------------------------------------------------------------
commit 49cfe2b9ebe03d5985187890445b775047f8a2f4
Author: Michael Adam <obnox at samba.org>
Date:   Mon Dec 24 01:03:14 2007 +0100

    Do not leak memory in libnet_smbconf_delparm().
    
    Michael

commit a657b1c9f17d3cebc86b596f1f2d244750d70a6d
Author: Michael Adam <obnox at samba.org>
Date:   Mon Dec 24 01:00:46 2007 +0100

    Do not leak memory in libnet_smbconf_setparm().
    
    Michael

commit 45e3e2451adc1490b62d39d486c169ad53e1d3f3
Author: Michael Adam <obnox at samba.org>
Date:   Mon Dec 24 00:57:04 2007 +0100

    Use the appropriate boolean constants.
    
    Michael

commit 2983aba9d092e6ede43f6eb521c17fe3f304d041
Author: Michael Adam <obnox at samba.org>
Date:   Mon Dec 24 00:56:24 2007 +0100

    Make libnet_smbconf_value_exists() use talloc_stackframe().
    
    And not pass a talloc context.
    
    Michael

commit 7e8451f2f03b246801783aaf4b3d54465292f8f7
Author: Michael Adam <obnox at samba.org>
Date:   Mon Dec 24 00:53:22 2007 +0100

    Make libnet_smbconf_key_exists() use talloc_stackframe().
    
    And not pass a talloc context.
    
    Michael

commit 09e62c765401102480d39a483bfffaf5a054babc
Author: Michael Adam <obnox at samba.org>
Date:   Mon Dec 24 00:47:43 2007 +0100

    Don't leak memory in libnet_smbconf_getparm().
    
    Michael

-----------------------------------------------------------------------

Summary of changes:
 source/libnet/libnet_conf.c |   63 ++++++++++++++++++++++++------------------
 source/utils/net_conf.c     |    4 +-
 2 files changed, 38 insertions(+), 29 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/libnet/libnet_conf.c b/source/libnet/libnet_conf.c
index 3a64c3d..a371915 100644
--- a/source/libnet/libnet_conf.c
+++ b/source/libnet/libnet_conf.c
@@ -62,42 +62,36 @@ done:
 /*
  * check if a subkey of KEY_SMBCONF of a given name exists
  */
-bool libnet_smbconf_key_exists(TALLOC_CTX *ctx, const char *subkeyname)
+bool libnet_smbconf_key_exists(const char *subkeyname)
 {
-	bool ret = False;
+	bool ret = false;
 	WERROR werr = WERR_OK;
-	TALLOC_CTX *mem_ctx;
-	struct registry_key *key;
-
-	if (!(mem_ctx = talloc_new(ctx))) {
-		d_fprintf(stderr, "ERROR: Out of memory...!\n");
-		goto done;
-	}
+	TALLOC_CTX *mem_ctx = talloc_stackframe();
+	struct registry_key *key = NULL;
 
 	werr = libnet_smbconf_open_path_q(mem_ctx, subkeyname, REG_KEY_READ, &key);
 	if (W_ERROR_IS_OK(werr)) {
-		ret = True;
+		ret = true;
 	}
 
-done:
 	TALLOC_FREE(mem_ctx);
 	return ret;
 }
 
-static bool libnet_smbconf_value_exists(TALLOC_CTX *ctx,
-					struct registry_key *key,
+static bool libnet_smbconf_value_exists(struct registry_key *key,
 					const char *param)
 {
-	bool ret = False;
+	bool ret = false;
 	WERROR werr = WERR_OK;
+	TALLOC_CTX *ctx = talloc_stackframe();
 	struct registry_value *value = NULL;
 
 	werr = reg_queryvalue(ctx, key, param, &value);
 	if (W_ERROR_IS_OK(werr)) {
-		ret = True;
+		ret = true;
 	}
 
-	TALLOC_FREE(value);
+	TALLOC_FREE(ctx);
 	return ret;
 }
 
@@ -257,17 +251,21 @@ WERROR libnet_smbconf_setparm(TALLOC_CTX *mem_ctx,
 	WERROR werr;
 	struct registry_key *key = NULL;
 
-	if (!libnet_smbconf_key_exists(mem_ctx, service)) {
+	if (!libnet_smbconf_key_exists(service)) {
 		werr = libnet_smbconf_reg_createkey_internal(mem_ctx, service,
 							     &key);
 	} else {
 		werr = libnet_smbconf_open_path(mem_ctx, service, REG_KEY_WRITE,
 						&key);
 	}
-	W_ERROR_NOT_OK_RETURN(werr);
+	if (!W_ERROR_IS_OK(werr)) {
+		goto done;
+	}
 
 	werr = libnet_smbconf_reg_setvalue_internal(key, param, valstr);
 
+done:
+	TALLOC_FREE(key);
 	return werr;
 }
 
@@ -279,19 +277,25 @@ WERROR libnet_smbconf_getparm(TALLOC_CTX *mem_ctx,
 	WERROR werr;
 	struct registry_key *key = NULL;
 
-	if (!libnet_smbconf_key_exists(mem_ctx, service)) {
-		return WERR_NO_SUCH_SERVICE;
+	if (!libnet_smbconf_key_exists(service)) {
+		werr = WERR_NO_SUCH_SERVICE;
+		goto done;
 	}
 
 	werr = libnet_smbconf_open_path(mem_ctx, service, REG_KEY_READ, &key);
-	W_ERROR_NOT_OK_RETURN(werr);
+	if (!W_ERROR_IS_OK(werr)) {
+		goto done;
+	}
 
-	if (!libnet_smbconf_value_exists(mem_ctx, key, param)) {
-		return WERR_INVALID_PARAM;
+	if (!libnet_smbconf_value_exists(key, param)) {
+		werr = WERR_INVALID_PARAM;
+		goto done;
 	}
 
 	werr = reg_queryvalue(mem_ctx, key, param, value);
 
+done:
+	TALLOC_FREE(key);
 	return werr;
 }
 
@@ -302,19 +306,24 @@ WERROR libnet_smbconf_delparm(TALLOC_CTX *mem_ctx,
 	struct registry_key *key = NULL;
 	WERROR werr = WERR_OK;
 
-	if (!libnet_smbconf_key_exists(mem_ctx, service)) {
+	if (!libnet_smbconf_key_exists(service)) {
 		return WERR_NO_SUCH_SERVICE;
 	}
 
 	werr = libnet_smbconf_open_path(mem_ctx, service, REG_KEY_ALL, &key);
-	W_ERROR_NOT_OK_RETURN(werr);
+	if (!W_ERROR_IS_OK(werr)) {
+		goto done;
+	}
 
-	if (!libnet_smbconf_value_exists(mem_ctx, key, param)) {
-		return WERR_INVALID_PARAM;
+	if (!libnet_smbconf_value_exists(key, param)) {
+		werr = WERR_INVALID_PARAM;
+		goto done;
 	}
 
 	werr = reg_deletevalue(key, param);
 
+done:
+	TALLOC_FREE(key);
 	return werr;
 }
 
diff --git a/source/utils/net_conf.c b/source/utils/net_conf.c
index f3f2321..d09079c 100644
--- a/source/utils/net_conf.c
+++ b/source/utils/net_conf.c
@@ -340,7 +340,7 @@ static int import_process_service(TALLOC_CTX *ctx,
 	if (opt_testmode) {
 		d_printf("[%s]\n", servicename);
 	} else {
-		if (libnet_smbconf_key_exists(tmp_ctx, servicename)) {
+		if (libnet_smbconf_key_exists(servicename)) {
 			werr = reg_delkey_internal(tmp_ctx, servicename);
 			if (!W_ERROR_IS_OK(werr)) {
 				goto done;
@@ -424,7 +424,7 @@ int net_conf_list(int argc, const char **argv)
 		goto done;
 	}
 
-	if (libnet_smbconf_key_exists(ctx, GLOBAL_NAME))  {
+	if (libnet_smbconf_key_exists(GLOBAL_NAME))  {
 		werr = reg_openkey(ctx, base_key, GLOBAL_NAME,
 				   REG_KEY_READ, &sub_key);
 		if (!W_ERROR_IS_OK(werr)) {


-- 
Samba Shared Repository


More information about the samba-cvs mailing list