Blame 0003-Do-not-add-service-principals-twice.patch

8fc58f6
From f05adc23d5cc9f1dfa5638e31949dcd81d632df9 Mon Sep 17 00:00:00 2001
8fc58f6
From: Sumit Bose <sbose@redhat.com>
8fc58f6
Date: Mon, 13 Aug 2018 17:32:24 +0200
8fc58f6
Subject: [PATCH 3/4] Do not add service principals twice
8fc58f6
8fc58f6
---
8fc58f6
 library/adenroll.c | 23 +++++++++++++++++++----
8fc58f6
 1 file changed, 19 insertions(+), 4 deletions(-)
8fc58f6
8fc58f6
diff --git a/library/adenroll.c b/library/adenroll.c
8fc58f6
index c4ba537..bb50365 100644
8fc58f6
--- a/library/adenroll.c
8fc58f6
+++ b/library/adenroll.c
8fc58f6
@@ -313,6 +313,7 @@ add_service_names_to_service_principals (adcli_enroll *enroll)
8fc58f6
 	char *name;
8fc58f6
 	int length = 0;
8fc58f6
 	int i;
8fc58f6
+	size_t c;
8fc58f6
 
8fc58f6
 	if (enroll->service_principals != NULL) {
8fc58f6
 		length = seq_count (enroll->service_principals);
8fc58f6
@@ -321,14 +322,28 @@ add_service_names_to_service_principals (adcli_enroll *enroll)
8fc58f6
 	for (i = 0; enroll->service_names[i] != NULL; i++) {
8fc58f6
 		if (asprintf (&name, "%s/%s", enroll->service_names[i], enroll->computer_name) < 0)
8fc58f6
 			return_unexpected_if_reached ();
8fc58f6
-		enroll->service_principals = _adcli_strv_add (enroll->service_principals,
8fc58f6
-			                                      name, &length);
8fc58f6
+		for (c = 0; enroll->service_principals != NULL && enroll->service_principals[c] != NULL; c++) {
8fc58f6
+			if (strcmp (name, enroll->service_principals[c]) == 0) {
8fc58f6
+				break;
8fc58f6
+			}
8fc58f6
+		}
8fc58f6
+		if (enroll->service_principals == NULL || enroll->service_principals[c] == NULL) {
8fc58f6
+			enroll->service_principals = _adcli_strv_add (enroll->service_principals,
8fc58f6
+				                                      name, &length);
8fc58f6
+		}
8fc58f6
 
8fc58f6
 		if (enroll->host_fqdn) {
8fc58f6
 			if (asprintf (&name, "%s/%s", enroll->service_names[i], enroll->host_fqdn) < 0)
8fc58f6
 				return_unexpected_if_reached ();
8fc58f6
-			enroll->service_principals = _adcli_strv_add (enroll->service_principals,
8fc58f6
-				                                      name, &length);
8fc58f6
+			for (c = 0; enroll->service_principals != NULL && enroll->service_principals[c] != NULL; c++) {
8fc58f6
+				if (strcmp (name, enroll->service_principals[c]) == 0) {
8fc58f6
+					break;
8fc58f6
+				}
8fc58f6
+			}
8fc58f6
+			if (enroll->service_principals == NULL || enroll->service_principals[c] == NULL) {
8fc58f6
+				enroll->service_principals = _adcli_strv_add (enroll->service_principals,
8fc58f6
+					                                      name, &length);
8fc58f6
+			}
8fc58f6
 		}
8fc58f6
 	}
8fc58f6
 
8fc58f6
-- 
8fc58f6
2.17.1
8fc58f6