Skip to content
Snippets Groups Projects
Select Git revision
  • 9bfc1be04bc511785568c95b4fae0b20d840c243
  • buster default protected
  • bullseye
  • master protected
4 results

0026-Do-not-add-service-principals-twice.patch

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    0026-Do-not-add-service-principals-twice.patch 2.17 KiB
    From f448aeaebb39efa300f05ef3c2bb8b2e8f18fb82 Mon Sep 17 00:00:00 2001
    From: Sumit Bose <sbose@redhat.com>
    Date: Mon, 13 Aug 2018 17:32:24 +0200
    Subject: [PATCH 26/30] Do not add service principals twice
    
    ---
     library/adenroll.c | 23 +++++++++++++++++++----
     1 file changed, 19 insertions(+), 4 deletions(-)
    
    diff --git a/library/adenroll.c b/library/adenroll.c
    index c4ba537..bb50365 100644
    --- a/library/adenroll.c
    +++ b/library/adenroll.c
    @@ -313,6 +313,7 @@ add_service_names_to_service_principals (adcli_enroll *enroll)
     	char *name;
     	int length = 0;
     	int i;
    +	size_t c;
     
     	if (enroll->service_principals != NULL) {
     		length = seq_count (enroll->service_principals);
    @@ -321,14 +322,28 @@ add_service_names_to_service_principals (adcli_enroll *enroll)
     	for (i = 0; enroll->service_names[i] != NULL; i++) {
     		if (asprintf (&name, "%s/%s", enroll->service_names[i], enroll->computer_name) < 0)
     			return_unexpected_if_reached ();
    -		enroll->service_principals = _adcli_strv_add (enroll->service_principals,
    -			                                      name, &length);
    +		for (c = 0; enroll->service_principals != NULL && enroll->service_principals[c] != NULL; c++) {
    +			if (strcmp (name, enroll->service_principals[c]) == 0) {
    +				break;
    +			}
    +		}
    +		if (enroll->service_principals == NULL || enroll->service_principals[c] == NULL) {
    +			enroll->service_principals = _adcli_strv_add (enroll->service_principals,
    +				                                      name, &length);
    +		}
     
     		if (enroll->host_fqdn) {
     			if (asprintf (&name, "%s/%s", enroll->service_names[i], enroll->host_fqdn) < 0)
     				return_unexpected_if_reached ();
    -			enroll->service_principals = _adcli_strv_add (enroll->service_principals,
    -				                                      name, &length);
    +			for (c = 0; enroll->service_principals != NULL && enroll->service_principals[c] != NULL; c++) {
    +				if (strcmp (name, enroll->service_principals[c]) == 0) {
    +					break;
    +				}
    +			}
    +			if (enroll->service_principals == NULL || enroll->service_principals[c] == NULL) {
    +				enroll->service_principals = _adcli_strv_add (enroll->service_principals,
    +					                                      name, &length);
    +			}
     		}
     	}
     
    -- 
    2.11.0