summaryrefslogtreecommitdiff
path: root/source3/libnet
diff options
context:
space:
mode:
authorIsaac Boukris <iboukris@gmail.com>2019-08-30 00:22:15 +0300
committerRalph Boehme <slow@samba.org>2019-10-25 09:21:44 +0000
commit05f7e9a72a1769af9d41b1ca40fe6a14b3f069d1 (patch)
treecb353f0d00fd7ac438a0363c62665428ea28e768 /source3/libnet
parentd0f566c4ad32d69a1cf896e2dde56fc2489bb7fc (diff)
downloadsamba-05f7e9a72a1769af9d41b1ca40fe6a14b3f069d1.tar.gz
libnet_join: build dnsHostName from netbios name and lp_dnsdomain()
This make the join process much more reliable, and avoids "Constraint violation" error when the fqdn returned from getaddrinfo has already got assigned an SPN. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14116 Signed-off-by: Isaac Boukris <iboukris@redhat.com> Reviewed-by: Ralph Boehme <slow@samba.org> Reviewed-by: Alexander Bokovoy <ab@samba.org>
Diffstat (limited to 'source3/libnet')
-rw-r--r--source3/libnet/libnet_join.c31
1 files changed, 11 insertions, 20 deletions
diff --git a/source3/libnet/libnet_join.c b/source3/libnet/libnet_join.c
index 7943bef2cf6..818b3039cb9 100644
--- a/source3/libnet/libnet_join.c
+++ b/source3/libnet/libnet_join.c
@@ -533,29 +533,23 @@ static ADS_STATUS libnet_join_set_machine_spn(TALLOC_CTX *mem_ctx,
}
}
- if (!name_to_fqdn(my_fqdn, r->in.machine_name)
- || (strchr(my_fqdn, '.') == NULL)) {
- fstr_sprintf(my_fqdn, "%s.%s", r->in.machine_name,
- r->out.dns_domain_name);
- }
+ fstr_sprintf(my_fqdn, "%s.%s", r->in.machine_name, lp_dnsdomain());
if (!strlower_m(my_fqdn)) {
return ADS_ERROR_LDAP(LDAP_NO_MEMORY);
}
- if (!strequal(my_fqdn, r->in.machine_name)) {
- spn = talloc_asprintf(mem_ctx, "HOST/%s", my_fqdn);
- if (!spn) {
- return ADS_ERROR_LDAP(LDAP_NO_MEMORY);
- }
+ spn = talloc_asprintf(mem_ctx, "HOST/%s", my_fqdn);
+ if (spn == NULL) {
+ return ADS_ERROR_LDAP(LDAP_NO_MEMORY);
+ }
- ok = ads_element_in_array(spn_array, num_spns, spn);
+ ok = ads_element_in_array(spn_array, num_spns, spn);
+ if (!ok) {
+ ok = add_string_to_array(spn_array, spn,
+ &spn_array, &num_spns);
if (!ok) {
- ok = add_string_to_array(spn_array, spn,
- &spn_array, &num_spns);
- if (!ok) {
- return ADS_ERROR_LDAP(LDAP_NO_MEMORY);
- }
+ return ADS_ERROR_LDAP(LDAP_NO_MEMORY);
}
}
@@ -591,12 +585,9 @@ static ADS_STATUS libnet_join_set_machine_spn(TALLOC_CTX *mem_ctx,
/*
* Add HOST/netbiosname.domainname
*/
- if (r->out.dns_domain_name == NULL) {
- continue;
- }
fstr_sprintf(my_fqdn, "%s.%s",
*netbios_aliases,
- r->out.dns_domain_name);
+ lp_dnsdomain());
spn = talloc_asprintf(mem_ctx, "HOST/%s", my_fqdn);
if (spn == NULL) {