diff options
author | Gary Lockyer <gary@catalyst.net.nz> | 2018-07-18 15:29:21 +1200 |
---|---|---|
committer | Karolin Seeger <kseeger@samba.org> | 2018-07-31 12:36:25 +0200 |
commit | 14963928ffb908ff49e0261915c7d651ba9b7b97 (patch) | |
tree | 1a0a9f0f9973c78cec3ec649e6ecc9ad2523c443 /python | |
parent | 9ad7af6899c2fd7b9498a0f0db8189a6c2f59015 (diff) | |
download | samba-14963928ffb908ff49e0261915c7d651ba9b7b97.tar.gz |
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@catalyst.net.nz>
Reviewed-by: Jeremy Allison <jra@samba.org>
(cherry picked from commit 0d3aec18679a2637430263a55de5e210a9201e21)
Diffstat (limited to 'python')
-rw-r--r-- | python/samba/tests/dns_wildcard.py | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/python/samba/tests/dns_wildcard.py b/python/samba/tests/dns_wildcard.py index ca8426a6f14..01e06b8e262 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. |