From: Gary Lockyer Date: Wed, 13 Feb 2019 21:53:37 +0000 (+1300) Subject: s4 dsdb util: samdb_client_site_name clean up X-Git-Tag: ldb-1.6.1~132 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ea2de21dd8a2f8dffbb09c635fb34f22d9e344f9;p=thirdparty%2Fsamba.git s4 dsdb util: samdb_client_site_name clean up * Initialise pointers to NULL * replace talloc_free with TALLOC_FREE * add goto exit to ensure memory deallocated correctly Signed-off-by: Gary Lockyer Reviewed-by: Andrew Bartlett Autobuild-User(master): Andrew Bartlett Autobuild-Date(master): Thu Feb 14 06:53:14 CET 2019 on sn-devel-144 --- diff --git a/source4/dsdb/common/util.c b/source4/dsdb/common/util.c index 92ad11c8372..fc7055d800a 100644 --- a/source4/dsdb/common/util.c +++ b/source4/dsdb/common/util.c @@ -1873,10 +1873,13 @@ const char *samdb_client_site_name(struct ldb_context *ldb, TALLOC_CTX *mem_ctx, bool fallback) { const char *attrs[] = { "cn", "siteObject", NULL }; - struct ldb_dn *sites_container_dn, *subnets_dn, *sites_dn; - struct ldb_result *res; - const struct ldb_val *val; - const char *site_name = NULL, *l_subnet_name = NULL; + struct ldb_dn *sites_container_dn = NULL; + struct ldb_dn *subnets_dn = NULL; + struct ldb_dn *sites_dn = NULL; + struct ldb_result *res = NULL; + const struct ldb_val *val = NULL; + const char *site_name = NULL; + const char *l_subnet_name = NULL; const char *allow_list[2] = { NULL, NULL }; unsigned int i, count; int ret; @@ -1891,14 +1894,12 @@ const char *samdb_client_site_name(struct ldb_context *ldb, TALLOC_CTX *mem_ctx, sites_container_dn = samdb_sites_dn(ldb, mem_ctx); if (sites_container_dn == NULL) { - return NULL; + goto exit; } subnets_dn = ldb_dn_copy(mem_ctx, sites_container_dn); if ( ! ldb_dn_add_child_fmt(subnets_dn, "CN=Subnets")) { - talloc_free(sites_container_dn); - talloc_free(subnets_dn); - return NULL; + goto exit; } ret = ldb_search(ldb, mem_ctx, &res, subnets_dn, LDB_SCOPE_ONELEVEL, @@ -1906,9 +1907,7 @@ const char *samdb_client_site_name(struct ldb_context *ldb, TALLOC_CTX *mem_ctx, if (ret == LDB_ERR_NO_SUCH_OBJECT) { count = 0; } else if (ret != LDB_SUCCESS) { - talloc_free(sites_container_dn); - talloc_free(subnets_dn); - return NULL; + goto exit; } else { count = res->count; } @@ -1933,7 +1932,7 @@ const char *samdb_client_site_name(struct ldb_context *ldb, TALLOC_CTX *mem_ctx, site_name = talloc_strdup(mem_ctx, (const char *) val->data); - talloc_free(sites_dn); + TALLOC_FREE(sites_dn); break; } @@ -1954,7 +1953,6 @@ const char *samdb_client_site_name(struct ldb_context *ldb, TALLOC_CTX *mem_ctx, LDB_SCOPE_SUBTREE, "(objectClass=site)"); if (ret != LDB_SUCCESS) { - site_name = NULL; goto exit; } if (cnt == 1) { @@ -1970,9 +1968,9 @@ const char *samdb_client_site_name(struct ldb_context *ldb, TALLOC_CTX *mem_ctx, } exit: - talloc_free(sites_container_dn); - talloc_free(subnets_dn); - talloc_free(res); + TALLOC_FREE(sites_container_dn); + TALLOC_FREE(subnets_dn); + TALLOC_FREE(res); return site_name; }