[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