diff options
author | Bob Campbell <bobcampbell@catalyst.net.nz> | 2016-12-07 15:33:06 +1300 |
---|---|---|
committer | Garming Sam <garming@samba.org> | 2016-12-12 05:00:19 +0100 |
commit | eacba34a276397df4d5de09d741d0d7390e84020 (patch) | |
tree | 9d0d975699fde98d69be7b453618e0cb02726524 /source4/dns_server | |
parent | d57147621d5989e2a50278fbf02487aa979a1933 (diff) | |
download | samba-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')
-rw-r--r-- | source4/dns_server/dnsserver_common.c | 9 |
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; |