summaryrefslogtreecommitdiff
path: root/source3/libnet
diff options
context:
space:
mode:
authorIsaac Boukris <iboukris@gmail.com>2019-09-18 23:15:57 +0300
committerRalph Boehme <slow@samba.org>2019-10-25 09:21:44 +0000
commit3e65f72b141a7ee256ae581e5f48f1d930aed76a (patch)
tree6027eb13c9a66d29b8cfe26ac76a446eefbe7e2f /source3/libnet
parentb8e1264ececf38681ca9a519a51e8336044673f0 (diff)
downloadsamba-3e65f72b141a7ee256ae581e5f48f1d930aed76a.tar.gz
libnet_join_set_machine_spn: simplify adding uniq spn to array
and do not skip adding a fully qualified spn to netbios-aliases in case a short spn already existed. 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.c56
1 files changed, 23 insertions, 33 deletions
diff --git a/source3/libnet/libnet_join.c b/source3/libnet/libnet_join.c
index 43035370526..a1d8a25bbc2 100644
--- a/source3/libnet/libnet_join.c
+++ b/source3/libnet/libnet_join.c
@@ -483,6 +483,19 @@ static ADS_STATUS libnet_join_get_machine_spns(TALLOC_CTX *mem_ctx,
return status;
}
+static ADS_STATUS add_uniq_spn(TALLOC_CTX *mem_ctx, const char *spn,
+ const char ***array, size_t *num)
+{
+ bool ok = ads_element_in_array(*array, *num, spn);
+ if (!ok) {
+ ok = add_string_to_array(mem_ctx, spn, array, num);
+ if (!ok) {
+ return ADS_ERROR_LDAP(LDAP_NO_MEMORY);
+ }
+ }
+ return ADS_SUCCESS;
+}
+
/****************************************************************
Set a machines dNSHostName and servicePrincipalName attributes
****************************************************************/
@@ -497,7 +510,6 @@ static ADS_STATUS libnet_join_set_machine_spn(TALLOC_CTX *mem_ctx,
const char **spn_array = NULL;
size_t num_spns = 0;
char *spn = NULL;
- bool ok;
const char **netbios_aliases = NULL;
/* Find our DN */
@@ -527,14 +539,9 @@ static ADS_STATUS libnet_join_set_machine_spn(TALLOC_CTX *mem_ctx,
goto done;
}
- ok = ads_element_in_array(spn_array, num_spns, spn);
- if (!ok) {
- ok = add_string_to_array(frame, spn,
- &spn_array, &num_spns);
- if (!ok) {
- status = ADS_ERROR_LDAP(LDAP_NO_MEMORY);
- goto done;
- }
+ status = add_uniq_spn(frame, spn, &spn_array, &num_spns);
+ if (!ADS_ERR_OK(status)) {
+ goto done;
}
fstr_sprintf(my_fqdn, "%s.%s", r->in.machine_name, lp_dnsdomain());
@@ -550,14 +557,9 @@ static ADS_STATUS libnet_join_set_machine_spn(TALLOC_CTX *mem_ctx,
goto done;
}
- ok = ads_element_in_array(spn_array, num_spns, spn);
- if (!ok) {
- ok = add_string_to_array(frame, spn,
- &spn_array, &num_spns);
- if (!ok) {
- status = ADS_ERROR_LDAP(LDAP_NO_MEMORY);
- goto done;
- }
+ status = add_uniq_spn(frame, spn, &spn_array, &num_spns);
+ if (!ADS_ERR_OK(status)) {
+ goto done;
}
for (netbios_aliases = lp_netbios_aliases();
@@ -576,14 +578,8 @@ static ADS_STATUS libnet_join_set_machine_spn(TALLOC_CTX *mem_ctx,
goto done;
}
- ok = ads_element_in_array(spn_array, num_spns, spn);
- if (ok) {
- continue;
- }
- ok = add_string_to_array(spn_array, spn,
- &spn_array, &num_spns);
- if (!ok) {
- status = ADS_ERROR_LDAP(LDAP_NO_MEMORY);
+ status = add_uniq_spn(frame, spn, &spn_array, &num_spns);
+ if (!ADS_ERR_OK(status)) {
goto done;
}
@@ -600,14 +596,8 @@ static ADS_STATUS libnet_join_set_machine_spn(TALLOC_CTX *mem_ctx,
goto done;
}
- ok = ads_element_in_array(spn_array, num_spns, spn);
- if (ok) {
- continue;
- }
- ok = add_string_to_array(spn_array, spn,
- &spn_array, &num_spns);
- if (!ok) {
- status = ADS_ERROR_LDAP(LDAP_NO_MEMORY);
+ status = add_uniq_spn(frame, spn, &spn_array, &num_spns);
+ if (!ADS_ERR_OK(status)) {
goto done;
}
}