From 07639b502382a3c708350bdf4ca19d9437e0beaa Mon Sep 17 00:00:00 2001 From: Amitay Isaacs Date: Thu, 15 Dec 2011 19:45:22 +1100 Subject: [PATCH] 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. --- source4/rpc_server/dnsserver/dnsdata.c | 10 ++++++++++ 1 file changed, 10 insertions(+) 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) { -- 2.34.1