diff options
author | Isaac Boukris <iboukris@gmail.com> | 2019-08-30 00:22:15 +0300 |
---|---|---|
committer | Ralph Boehme <slow@samba.org> | 2019-10-25 09:21:44 +0000 |
commit | 05f7e9a72a1769af9d41b1ca40fe6a14b3f069d1 (patch) | |
tree | cb353f0d00fd7ac438a0363c62665428ea28e768 /source3/libnet | |
parent | d0f566c4ad32d69a1cf896e2dde56fc2489bb7fc (diff) | |
download | samba-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.c | 31 |
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) { |