summaryrefslogtreecommitdiff
path: root/source4/dns_server/dnsserver_common.c
diff options
context:
space:
mode:
authorBob Campbell <bobcampbell@catalyst.net.nz>2016-12-07 15:33:06 +1300
committerGarming Sam <garming@samba.org>2016-12-12 05:00:19 +0100
commiteacba34a276397df4d5de09d741d0d7390e84020 (patch)
tree9d0d975699fde98d69be7b453618e0cb02726524 /source4/dns_server/dnsserver_common.c
parentd57147621d5989e2a50278fbf02487aa979a1933 (diff)
downloadsamba-eacba34a276397df4d5de09d741d0d7390e84020.tar.gz
dnsserver_common: Add name check in name2dn
Fills in the missing TODO. Note that this may also prevent deletion of existing corrupted records, but should be resolvable through RPC, or at worst LDAP. Signed-off-by: Bob Campbell <bobcampbell@catalyst.net.nz> Pair-programmed-with: Garming Sam <garming@catalyst.net.nz> Reviewed-by: Garming Sam <garming@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org>
Diffstat (limited to 'source4/dns_server/dnsserver_common.c')
-rw-r--r--source4/dns_server/dnsserver_common.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/source4/dns_server/dnsserver_common.c b/source4/dns_server/dnsserver_common.c
index 4982d3a37b1..7aac7e22855 100644
--- a/source4/dns_server/dnsserver_common.c
+++ b/source4/dns_server/dnsserver_common.c
@@ -491,13 +491,12 @@ WERROR dns_common_name2dn(struct ldb_context *samdb,
struct ldb_dn *dn;
const struct dns_server_zone *z;
size_t host_part_len = 0;
+ WERROR werr;
if (name == NULL) {
return DNS_ERR(FORMAT_ERROR);
}
- /*TODO: Check if 'name' is a valid DNS name */
-
if (strcmp(name, "") == 0) {
base = ldb_get_default_basedn(samdb);
dn = ldb_dn_copy(mem_ctx, base);
@@ -506,6 +505,12 @@ WERROR dns_common_name2dn(struct ldb_context *samdb,
return WERR_OK;
}
+ /* Check non-empty names */
+ werr = dns_name_check(mem_ctx, strlen(name), name);
+ if (!W_ERROR_IS_OK(werr)) {
+ return werr;
+ }
+
for (z = zones; z != NULL; z = z->next) {
bool match;