[SCM] Samba Shared Repository - branch master updated
Jeremy Allison
jra at samba.org
Fri Jul 20 02:41:04 UTC 2018
The branch, master has been updated
via cef1b31 dns wildcards: fix BUG 13536
via 0d3aec1 dns wildcards: tests to confirm BUG 13536
from 359e521 ctdb-tests: Loosen match against pstree output in simple test
https://git.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit cef1b31cd1f33074e8ab6de52aa0fb74e9b57a9f
Author: Gary Lockyer <gary at catalyst.net.nz>
Date: Wed Jul 18 15:33:26 2018 +1200
dns wildcards: fix BUG 13536
The current position in the dns name was not advanced past the '.'
character
Signed-off-by: Gary Lockyer <gary at catalyst.net.nz>
Reviewed-by: Jeremy Allison <jra at samba.org>
Autobuild-User(master): Jeremy Allison <jra at samba.org>
Autobuild-Date(master): Fri Jul 20 04:40:31 CEST 2018 on sn-devel-144
commit 0d3aec18679a2637430263a55de5e210a9201e21
Author: Gary Lockyer <gary at catalyst.net.nz>
Date: Wed Jul 18 15:29:21 2018 +1200
dns wildcards: tests to confirm BUG 13536
DNS wildcard matching failing if more than one label to the left of the
wildcard. This commits adds tests to confirm the bug.
Wildcard entry: *.example.org
bar.example.com matches
foo.bar.example.com does not, but it it should.
Signed-off-by: Gary Lockyer <gary at catalyst.net.nz>
Reviewed-by: Jeremy Allison <jra at samba.org>
-----------------------------------------------------------------------
Summary of changes:
python/samba/tests/dns_wildcard.py | 48 +++++++++++++++++++++++++++++++++++
source4/dns_server/dnsserver_common.c | 1 +
2 files changed, 49 insertions(+)
Changeset truncated at 500 lines:
diff --git a/python/samba/tests/dns_wildcard.py b/python/samba/tests/dns_wildcard.py
index ca8426a..01e06b8 100644
--- a/python/samba/tests/dns_wildcard.py
+++ b/python/samba/tests/dns_wildcard.py
@@ -172,6 +172,30 @@ class TestWildCardQueries(DNSTest):
self.assertEquals(response.answers[0].rr_type, dns.DNS_QTYPE_A)
self.assertEquals(response.answers[0].rdata, WILDCARD_IP)
+ def test_one_a_query_match_wildcard_2_labels(self):
+ """ Query an A record, should match the wild card entry
+ have two labels to the left of the wild card target.
+ """
+
+ p = self.make_name_packet(dns.DNS_OPCODE_QUERY)
+ questions = []
+
+ # Check the record
+ name = "label2.label1.wildcardtest.%s" % self.get_dns_domain()
+ q = self.make_name_question(name,
+ dns.DNS_QTYPE_A,
+ dns.DNS_QCLASS_IN)
+ questions.append(q)
+
+ self.finish_name_packet(p, questions)
+ (response, response_packet) =\
+ self.dns_transaction_udp(p, host=self.server_ip)
+ self.assert_dns_rcode_equals(response, dns.DNS_RCODE_OK)
+ self.assert_dns_opcode_equals(response, dns.DNS_OPCODE_QUERY)
+ self.assertEquals(response.ancount, 1)
+ self.assertEquals(response.answers[0].rr_type, dns.DNS_QTYPE_A)
+ self.assertEquals(response.answers[0].rdata, WILDCARD_IP)
+
def test_one_a_query_wildcard_entry(self):
"Query the wildcard entry"
@@ -239,6 +263,30 @@ class TestWildCardQueries(DNSTest):
self.assertEquals(response.answers[0].rr_type, dns.DNS_QTYPE_A)
self.assertEquals(response.answers[0].rdata, LEVEL2_WILDCARD_IP)
+ def test_one_a_query_match_wildcard_l2_2_labels(self):
+ """Query an A record, should match the level 2 wild card entry
+ have two labels to the left of the wild card target
+ """
+
+ p = self.make_name_packet(dns.DNS_OPCODE_QUERY)
+ questions = []
+
+ # Check the record
+ name = "label1.label2.level2.wildcardtest.%s" % self.get_dns_domain()
+ q = self.make_name_question(name,
+ dns.DNS_QTYPE_A,
+ dns.DNS_QCLASS_IN)
+ questions.append(q)
+
+ self.finish_name_packet(p, questions)
+ (response, response_packet) =\
+ self.dns_transaction_udp(p, host=self.server_ip)
+ self.assert_dns_rcode_equals(response, dns.DNS_RCODE_OK)
+ self.assert_dns_opcode_equals(response, dns.DNS_OPCODE_QUERY)
+ self.assertEquals(response.ancount, 1)
+ self.assertEquals(response.answers[0].rr_type, dns.DNS_QTYPE_A)
+ self.assertEquals(response.answers[0].rdata, LEVEL2_WILDCARD_IP)
+
def test_one_a_query_exact_match_l2(self):
"""Query an entry that matches the wild card but has an exact match as
well.
diff --git a/source4/dns_server/dnsserver_common.c b/source4/dns_server/dnsserver_common.c
index 2a49370..bbbfe92 100644
--- a/source4/dns_server/dnsserver_common.c
+++ b/source4/dns_server/dnsserver_common.c
@@ -380,6 +380,7 @@ static struct ldb_parse_tree *build_wildcard_query(
wildcard_query->u.list.elements[l] = el;
/* skip to the start of the next label */
+ x++;
for (;x < name->length && name->data[x] != '.'; x++);
}
--
Samba Shared Repository
More information about the samba-cvs
mailing list