From: Amitay Isaacs Date: Thu, 15 Dec 2011 08:45:22 +0000 (+1100) Subject: s4:rpc-dnsserver: Fix the enumeration of DNS records X-Git-Tag: tevent-0.9.15~625 X-Git-Url: http://git.samba.org/?p=ddiss%2Fsamba.git;a=commitdiff_plain;h=07639b502382a3c708350bdf4ca19d9437e0beaa s4:rpc-dnsserver: Fix the enumeration of DNS records If a node has data and children, do not return the children unless the node is the top level node. --- diff --git a/source4/rpc_server/dnsserver/dnsdata.c b/source4/rpc_server/dnsserver/dnsdata.c index 535996036d3..b2ab2d9ff51 100644 --- a/source4/rpc_server/dnsserver/dnsdata.c +++ b/source4/rpc_server/dnsserver/dnsdata.c @@ -617,6 +617,11 @@ struct dns_tree *dns_build_tree(TALLOC_CTX *mem_ctx, const char *name, struct ld goto failed; } + /* If the node is on leaf, then add record data */ + if (match_count+1 == ncount) { + tree->data = res->msgs[i]; + } + /* Add missing name components */ for (level=match_count+1; levellevel == rootcount+1) { @@ -754,6 +759,11 @@ WERROR dns_fill_records_array(TALLOC_CTX *mem_ctx, return WERR_OK; } + /* Do not return RR records, if the node has children */ + if (branch_name != NULL && num_children > 0) { + return WERR_OK; + } + ptr = ldb_msg_find_attr_as_string(msg, "name", NULL); el = ldb_msg_find_element(msg, "dnsRecord"); if (el == NULL || el->values == 0) {