mirror of
https://github.com/samba-team/samba.git
synced 2024-12-22 13:34:15 +03:00
s4: dns: Ensure variable initialization with NULL.
Ensure no use after free. Based on patches from Francis Brosnan Blázquez <francis@aspl.es> and Jeremy Allison <jra@samba.org> BUG: https://bugzilla.samba.org/show_bug.cgi?id=12795 Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz> Reviewed-by: Jeremy Allison <jra@samba.org>
This commit is contained in:
parent
ccaf661f7c
commit
7afe449e72
@ -1759,15 +1759,17 @@ static WERROR dnsserver_enumerate_records(struct dnsserver_state *dsstate,
|
||||
TALLOC_CTX *tmp_ctx;
|
||||
char *name;
|
||||
const char * const attrs[] = { "name", "dnsRecord", NULL };
|
||||
struct ldb_result *res;
|
||||
struct DNS_RPC_RECORDS_ARRAY *recs;
|
||||
struct ldb_result *res = NULL;
|
||||
struct DNS_RPC_RECORDS_ARRAY *recs = NULL;
|
||||
char **add_names = NULL;
|
||||
char *rname;
|
||||
char *rname = NULL;
|
||||
const char *preference_name = NULL;
|
||||
int add_count = 0;
|
||||
int i, ret, len;
|
||||
WERROR status;
|
||||
struct dns_tree *tree, *base, *node;
|
||||
struct dns_tree *tree = NULL;
|
||||
struct dns_tree *base = NULL;
|
||||
struct dns_tree *node = NULL;
|
||||
|
||||
tmp_ctx = talloc_new(mem_ctx);
|
||||
W_ERROR_HAVE_NO_MEMORY(tmp_ctx);
|
||||
@ -1850,9 +1852,9 @@ static WERROR dnsserver_enumerate_records(struct dnsserver_state *dsstate,
|
||||
}
|
||||
}
|
||||
|
||||
talloc_free(res);
|
||||
talloc_free(tree);
|
||||
talloc_free(name);
|
||||
TALLOC_FREE(res);
|
||||
TALLOC_FREE(tree);
|
||||
TALLOC_FREE(name);
|
||||
|
||||
/* Add any additional records */
|
||||
if (select_flag & DNS_RPC_VIEW_ADDITIONAL_DATA) {
|
||||
@ -1870,14 +1872,14 @@ static WERROR dnsserver_enumerate_records(struct dnsserver_state *dsstate,
|
||||
LDB_SCOPE_ONELEVEL, attrs,
|
||||
"(&(objectClass=dnsNode)(name=%s)(!(dNSTombstoned=TRUE)))",
|
||||
encoded_name);
|
||||
talloc_free(name);
|
||||
TALLOC_FREE(name);
|
||||
if (ret != LDB_SUCCESS) {
|
||||
continue;
|
||||
}
|
||||
if (res->count == 1) {
|
||||
break;
|
||||
} else {
|
||||
talloc_free(res);
|
||||
TALLOC_FREE(res);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
@ -1892,8 +1894,8 @@ static WERROR dnsserver_enumerate_records(struct dnsserver_state *dsstate,
|
||||
select_flag, rname,
|
||||
res->msgs[0], 0, recs,
|
||||
NULL, NULL);
|
||||
talloc_free(rname);
|
||||
talloc_free(res);
|
||||
TALLOC_FREE(rname);
|
||||
TALLOC_FREE(res);
|
||||
if (!W_ERROR_IS_OK(status)) {
|
||||
talloc_free(tmp_ctx);
|
||||
return status;
|
||||
|
Loading…
Reference in New Issue
Block a user