dnsserver_common: Add name check in name2dn
authorBob Campbell <bobcampbell@catalyst.net.nz>
Wed, 7 Dec 2016 02:33:06 +0000 (15:33 +1300)
committerGarming Sam <garming@samba.org>
Mon, 12 Dec 2016 04:00:19 +0000 (05:00 +0100)
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>
source4/dns_server/dnsserver_common.c

index 4982d3a37b1331e928b9fcca3167d6b52d04c97b..7aac7e228559327a37fbb59c769f4ffc97f7721a 100644 (file)
@@ -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;