[SCM] Samba Shared Repository - branch master updated
Kai Blin
kai at samba.org
Thu Dec 8 19:33:02 MST 2011
The branch, master has been updated
via c01efc1 s4 dns: Update requests with QCLASS != IN or ALL trigger NOTIMPLEMENTED errors
via 358a81e s4 dns: Add test to prove two updates in one packet are a FORMERR
via 509acc7 s4 dns: More explicitly use the first question of an update packet only
via 3fbb76c s4 dns: Get rid of const qualifier for prereqs, we do need to allocate those
from 85f8d97 Revert "Install (platform-independent) python scripts to the PYTHONDIR rather than PYTHONARCHDIR."
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit c01efc1207b097517623d71b2ed9a24bb9c255de
Author: Kai Blin <kai at samba.org>
Date: Fri Dec 9 01:26:39 2011 +0100
s4 dns: Update requests with QCLASS != IN or ALL trigger NOTIMPLEMENTED errors
Autobuild-User: Kai Blin <kai at samba.org>
Autobuild-Date: Fri Dec 9 03:32:28 CET 2011 on sn-devel-104
commit 358a81eff5279a69270964226b553fb5243ecb84
Author: Kai Blin <kai at samba.org>
Date: Fri Dec 9 01:14:35 2011 +0100
s4 dns: Add test to prove two updates in one packet are a FORMERR
commit 509acc71dd8534539021b0ec57dd83a841119793
Author: Kai Blin <kai at samba.org>
Date: Fri Dec 9 00:59:34 2011 +0100
s4 dns: More explicitly use the first question of an update packet only
commit 3fbb76c119eaa1becb2df72d54cd4685771628df
Author: Kai Blin <kai at samba.org>
Date: Fri Dec 9 00:58:32 2011 +0100
s4 dns: Get rid of const qualifier for prereqs, we do need to allocate those
-----------------------------------------------------------------------
Summary of changes:
source4/dns_server/dns_server.h | 6 ++--
source4/dns_server/dns_update.c | 13 ++++++++---
source4/scripting/python/samba/tests/dns.py | 30 +++++++++++++++++++++++++++
3 files changed, 42 insertions(+), 7 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source4/dns_server/dns_server.h b/source4/dns_server/dns_server.h
index 28351e8..d658b2a 100644
--- a/source4/dns_server/dns_server.h
+++ b/source4/dns_server/dns_server.h
@@ -49,9 +49,9 @@ WERROR dns_server_process_query(struct dns_server *dns,
WERROR dns_server_process_update(struct dns_server *dns,
TALLOC_CTX *mem_ctx,
struct dns_name_packet *in,
- const struct dns_res_rec *prereqs, uint16_t prereq_count,
- struct dns_res_rec **updates, uint16_t *update_count,
- struct dns_res_rec **additional, uint16_t *arcount);
+ struct dns_res_rec *prereqs, uint16_t prereq_count,
+ struct dns_res_rec **updates, uint16_t *update_count,
+ struct dns_res_rec **additional, uint16_t *arcount);
uint8_t werr_to_dns_err(WERROR werror);
bool dns_name_match(const char *zone, const char *name, size_t *host_part_len);
diff --git a/source4/dns_server/dns_update.c b/source4/dns_server/dns_update.c
index a9fabf6..55589d2 100644
--- a/source4/dns_server/dns_update.c
+++ b/source4/dns_server/dns_update.c
@@ -126,9 +126,9 @@ static WERROR update_prescan(const struct dns_name_question *zone,
WERROR dns_server_process_update(struct dns_server *dns,
TALLOC_CTX *mem_ctx,
struct dns_name_packet *in,
- const struct dns_res_rec *prereqs, uint16_t prereq_count,
- struct dns_res_rec **updates, uint16_t *update_count,
- struct dns_res_rec **additional, uint16_t *arcount)
+ struct dns_res_rec *prereqs, uint16_t prereq_count,
+ struct dns_res_rec **updates, uint16_t *update_count,
+ struct dns_res_rec **additional, uint16_t *arcount)
{
struct dns_name_question *zone;
const struct dns_server_zone *z;
@@ -140,7 +140,12 @@ WERROR dns_server_process_update(struct dns_server *dns,
return DNS_ERR(FORMAT_ERROR);
}
- zone = in->questions;
+ zone = &in->questions[0];
+
+ if (zone->question_class != DNS_QCLASS_IN &&
+ zone->question_class != DNS_QCLASS_ANY) {
+ return DNS_ERR(NOT_IMPLEMENTED);
+ }
if (zone->question_type != DNS_QTYPE_SOA) {
return DNS_ERR(FORMAT_ERROR);
diff --git a/source4/scripting/python/samba/tests/dns.py b/source4/scripting/python/samba/tests/dns.py
index 9f53225..60003fc 100644
--- a/source4/scripting/python/samba/tests/dns.py
+++ b/source4/scripting/python/samba/tests/dns.py
@@ -187,6 +187,36 @@ class DNSTest(TestCase):
self.assert_dns_opcode_equals(response, dns.DNS_OPCODE_QUERY)
self.assertEquals(response.ancount, 1)
+ def test_two_updates(self):
+ "create two update requests"
+ p = self.make_name_packet(dns.DNS_OPCODE_UPDATE)
+ updates = []
+
+ name = "%s.%s" % (os.getenv('DC_SERVER'), self.get_dns_domain())
+ u = self.make_name_question(name, dns.DNS_QTYPE_A, dns.DNS_QCLASS_IN)
+ updates.append(u)
+
+ name = self.get_dns_domain()
+ u = self.make_name_question(name, dns.DNS_QTYPE_A, dns.DNS_QCLASS_IN)
+ updates.append(u)
+
+ self.finish_name_packet(p, updates)
+ response = self.dns_transaction_udp(p)
+ self.assert_dns_rcode_equals(response, dns.DNS_RCODE_FORMERR)
+
+ def test_update_wrong_qclass(self):
+ "create update with DNS_QCLASS_NONE"
+ p = self.make_name_packet(dns.DNS_OPCODE_UPDATE)
+ updates = []
+
+ name = self.get_dns_domain()
+ u = self.make_name_question(name, dns.DNS_QTYPE_A, dns.DNS_QCLASS_NONE)
+ updates.append(u)
+
+ self.finish_name_packet(p, updates)
+ response = self.dns_transaction_udp(p)
+ self.assert_dns_rcode_equals(response, dns.DNS_RCODE_NOTIMP)
+
if __name__ == "__main__":
import unittest
unittest.main()
--
Samba Shared Repository
More information about the samba-cvs
mailing list