From 44a85e3752ceaacdcc39a6a1d0faa0ff3d3db004 Mon Sep 17 00:00:00 2001 From: Amitay Isaacs Date: Thu, 12 Jan 2012 15:10:42 +1100 Subject: s4-rpc:dnsserver: DNS names are case insensitive --- source4/rpc_server/dnsserver/dcerpc_dnsserver.c | 8 ++++---- source4/rpc_server/dnsserver/dnsdata.c | 18 +++++++++--------- source4/rpc_server/dnsserver/dnsutils.c | 8 ++++---- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/source4/rpc_server/dnsserver/dcerpc_dnsserver.c b/source4/rpc_server/dnsserver/dcerpc_dnsserver.c index fac99e1cb6..5733a51177 100644 --- a/source4/rpc_server/dnsserver/dcerpc_dnsserver.c +++ b/source4/rpc_server/dnsserver/dcerpc_dnsserver.c @@ -1433,7 +1433,7 @@ static WERROR dnsserver_complex_operate_server(struct dnsserver_state *dsstate, *typeid_out = DNSSRV_TYPEID_DP_INFO; for (p = dsstate->partitions; p; p = p->next) { - if (strcmp(p->pszDpFqdn, rin->String) == 0) { + if (strcasecmp(p->pszDpFqdn, rin->String) == 0) { dpinfo = talloc_zero(mem_ctx, struct DNS_RPC_DP_INFO); W_ERROR_HAVE_NO_MEMORY(dpinfo); @@ -1720,7 +1720,7 @@ static WERROR dnsserver_enumerate_records(struct dnsserver_state *dsstate, W_ERROR_HAVE_NO_MEMORY_AND_FREE(name, tmp_ctx); /* search all records under parent tree */ - if (strcmp(name, z->name) == 0) { + if (strcasecmp(name, z->name) == 0) { ret = ldb_search(dsstate->samdb, tmp_ctx, &res, z->zone_dn, LDB_SCOPE_ONELEVEL, attrs, "(objectClass=dnsNode)"); } else { @@ -1746,7 +1746,7 @@ static WERROR dnsserver_enumerate_records(struct dnsserver_state *dsstate, (ldb_qsort_cmp_fn_t)dns_name_compare); /* Build a tree of name components from dns name */ - if (strcmp(name, z->name) == 0) { + if (strcasecmp(name, z->name) == 0) { tree = dns_build_tree(tmp_ctx, "@", res); } else { tree = dns_build_tree(tmp_ctx, name, res); @@ -1853,7 +1853,7 @@ static WERROR dnsserver_update_record(struct dnsserver_state *dsstate, W_ERROR_HAVE_NO_MEMORY(tmp_ctx); /* If node_name is @ or zone name, dns record is @ */ - if (strcmp(node_name, "@") == 0 || strcmp(node_name, z->name) == 0) { + if (strcmp(node_name, "@") == 0 || strcasecmp(node_name, z->name) == 0) { name = talloc_strdup(tmp_ctx, "@"); } else { name = dns_split_node_name(tmp_ctx, node_name, z->name); diff --git a/source4/rpc_server/dnsserver/dnsdata.c b/source4/rpc_server/dnsserver/dnsdata.c index b2ab2d9ff5..50be4bcbf1 100644 --- a/source4/rpc_server/dnsserver/dnsdata.c +++ b/source4/rpc_server/dnsserver/dnsdata.c @@ -204,7 +204,7 @@ char *dns_split_node_name(TALLOC_CTX *tmp_ctx, const char *node_name, const char } else { match = 0; for (i=1; i<=zcount; i++) { - if (strcmp(nlist[ncount-i], zlist[zcount-i]) != 0) { + if (strcasecmp(nlist[ncount-i], zlist[zcount-i]) != 0) { break; } match++; @@ -535,7 +535,7 @@ static struct dns_tree *dns_tree_find(struct dns_tree *tree, int ncount, char ** if (strcmp(tree->name, "@") == 0) { start = 0; } else { - if (strcmp(tree->name, nlist[ncount-1]) != 0) { + if (strcasecmp(tree->name, nlist[ncount-1]) != 0) { return NULL; } start = 1; @@ -549,7 +549,7 @@ static struct dns_tree *dns_tree_find(struct dns_tree *tree, int ncount, char ** } next = NULL; for (j=0; jnum_children; j++) { - if (strcmp(nlist[(ncount-1)-i], node->children[j]->name) == 0) { + if (strcasecmp(nlist[(ncount-1)-i], node->children[j]->name) == 0) { next = node->children[j]; *match_count = i; break; @@ -601,7 +601,7 @@ struct dns_tree *dns_build_tree(TALLOC_CTX *mem_ctx, const char *name, struct ld if (strcmp(ptr, "@") == 0) { base->data = res->msgs[i]; continue; - } else if (strcmp(ptr, name) == 0) { + } else if (strcasecmp(ptr, name) == 0) { base->data = res->msgs[i]; continue; } @@ -659,7 +659,7 @@ static void _dns_add_name(TALLOC_CTX *mem_ctx, const char *name, char ***add_nam int count = *add_count; for (i=0; iname); len2 = strlen(revzone); - if (len1 > len2 && strcmp(&zone->name[len1-len2], revzone) == 0) { + if (len1 > len2 && strcasecmp(&zone->name[len1-len2], revzone) == 0) { fReverse = 1; } @@ -229,7 +229,7 @@ struct dnsserver_partition *dnsserver_find_partition(struct dnsserver_partition struct dnsserver_partition *p = NULL; for (p = partitions; p; p = p->next) { - if (strcmp(dp_fqdn, p->pszDpFqdn) == 0) { + if (strcasecmp(dp_fqdn, p->pszDpFqdn) == 0) { break; } } @@ -242,7 +242,7 @@ struct dnsserver_zone *dnsserver_find_zone(struct dnsserver_zone *zones, const c struct dnsserver_zone *z = NULL; for (z = zones; z; z = z->next) { - if (strcmp(zone_name, z->name) == 0) { + if (strcasecmp(zone_name, z->name) == 0) { break; } } @@ -259,7 +259,7 @@ struct ldb_dn *dnsserver_name_to_dn(TALLOC_CTX *mem_ctx, struct dnsserver_zone * if (dn == NULL) { return NULL; } - if (strcmp(name, z->name) == 0) { + if (strcasecmp(name, z->name) == 0) { ret = ldb_dn_add_child_fmt(dn, "DC=@"); } else { ret = ldb_dn_add_child_fmt(dn, "DC=%s", name); -- cgit