summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGarming Sam <garming@catalyst.net.nz>2015-12-15 17:22:32 +1300
committerKarolin Seeger <kseeger@samba.org>2016-02-24 11:43:58 +0100
commit83d94cbaceaae0bc305330dc827f31368c8e3191 (patch)
tree7c8ce82e12579f466f330c7fe5756dd0d98e9ebf
parenta76db395d06c762a5f5527944215752865af1e54 (diff)
downloadsamba-83d94cbaceaae0bc305330dc827f31368c8e3191.tar.gz
CVE-2016-0771: tests/dns: restore formerly segfaulting test
This was on the client side, due the a strlen(NULL) on the previously DOS-encoded TXT field. With a new IDL structure, this segfault no longer exists. Note that both Samba and Windows return NXRRSET instead of FORMERR. BUG: https://bugzilla.samba.org/show_bug.cgi?id=11128 BUG: https://bugzilla.samba.org/show_bug.cgi?id=11686 Signed-off-by: Garming Sam <garming@catalyst.net.nz> Reviewed-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Andrew Bartlett <abartlet@samba.org>
-rw-r--r--python/samba/tests/dns.py51
1 files changed, 25 insertions, 26 deletions
diff --git a/python/samba/tests/dns.py b/python/samba/tests/dns.py
index b6006d7070e..e6f502913f4 100644
--- a/python/samba/tests/dns.py
+++ b/python/samba/tests/dns.py
@@ -363,32 +363,31 @@ class TestDNSUpdates(DNSTest):
response = self.dns_transaction_udp(p)
self.assert_dns_rcode_equals(response, dns.DNS_RCODE_FORMERR)
-# I'd love to test this one, but it segfaults. :)
-# def test_update_prereq_with_non_null_length(self):
-# "test update with a non-null length"
-# p = self.make_name_packet(dns.DNS_OPCODE_UPDATE)
-# updates = []
-#
-# name = self.get_dns_domain()
-#
-# u = self.make_name_question(name, dns.DNS_QTYPE_SOA, dns.DNS_QCLASS_IN)
-# updates.append(u)
-# self.finish_name_packet(p, updates)
-#
-# prereqs = []
-# r = dns.res_rec()
-# r.name = "%s.%s" % (os.getenv('SERVER'), self.get_dns_domain())
-# r.rr_type = dns.DNS_QTYPE_TXT
-# r.rr_class = dns.DNS_QCLASS_ANY
-# r.ttl = 0
-# r.length = 1
-# prereqs.append(r)
-#
-# p.ancount = len(prereqs)
-# p.answers = prereqs
-#
-# response = self.dns_transaction_udp(p)
-# self.assert_dns_rcode_equals(response, dns.DNS_RCODE_FORMERR)
+ def test_update_prereq_with_non_null_length(self):
+ "test update with a non-null length"
+ p = self.make_name_packet(dns.DNS_OPCODE_UPDATE)
+ updates = []
+
+ name = self.get_dns_domain()
+
+ u = self.make_name_question(name, dns.DNS_QTYPE_SOA, dns.DNS_QCLASS_IN)
+ updates.append(u)
+ self.finish_name_packet(p, updates)
+
+ prereqs = []
+ r = dns.res_rec()
+ r.name = "%s.%s" % (os.getenv('SERVER'), self.get_dns_domain())
+ r.rr_type = dns.DNS_QTYPE_TXT
+ r.rr_class = dns.DNS_QCLASS_ANY
+ r.ttl = 0
+ r.length = 1
+ prereqs.append(r)
+
+ p.ancount = len(prereqs)
+ p.answers = prereqs
+
+ response = self.dns_transaction_udp(p)
+ self.assert_dns_rcode_equals(response, dns.DNS_RCODE_FORMERR)
def test_update_prereq_nonexisting_name(self):
"test update with a nonexisting name"