Sumit Bose 461678
From 3fa854b1439c039a2250cb24efadae6a66b0e9da Mon Sep 17 00:00:00 2001
Sumit Bose 461678
From: Sumit Bose <sbose@redhat.com>
Sumit Bose 461678
Date: Tue, 30 Jan 2018 14:40:46 +0100
Sumit Bose 461678
Subject: [PATCH 11/23] library: add lookup_domain_sid()
Sumit Bose 461678
Sumit Bose 461678
Read the domain SID from the default naming context AD object and store
Sumit Bose 461678
it in adcli_conn.
Sumit Bose 461678
Sumit Bose 461678
https://bugs.freedesktop.org/show_bug.cgi?id=100118
Sumit Bose 461678
Sumit Bose 461678
Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
Sumit Bose 461678
---
Sumit Bose 461678
 library/adconn.c | 28 ++++++++++++++++++++++++++++
Sumit Bose 461678
 1 file changed, 28 insertions(+)
Sumit Bose 461678
Sumit Bose 461678
diff --git a/library/adconn.c b/library/adconn.c
Sumit Bose 461678
index 67bdfd9..6b84b88 100644
Sumit Bose 461678
--- a/library/adconn.c
Sumit Bose 461678
+++ b/library/adconn.c
Sumit Bose 461678
@@ -72,6 +72,7 @@ struct _adcli_conn_ctx {
Sumit Bose 461678
 	char *domain_controller;
Sumit Bose 461678
 	char *canonical_host;
Sumit Bose 461678
 	char *domain_short;
Sumit Bose 461678
+	char *domain_sid;
Sumit Bose 461678
 	adcli_disco *domain_disco;
Sumit Bose 461678
 	char *default_naming_context;
Sumit Bose 461678
 	char *configuration_naming_context;
Sumit Bose 461678
@@ -1068,6 +1069,32 @@ lookup_short_name (adcli_conn *conn)
Sumit Bose 461678
 	}
Sumit Bose 461678
 }
Sumit Bose 461678
 
Sumit Bose 461678
+static void
Sumit Bose 461678
+lookup_domain_sid (adcli_conn *conn)
Sumit Bose 461678
+{
Sumit Bose 461678
+	char *attrs[] = { "objectSid", NULL, };
Sumit Bose 461678
+	LDAPMessage *results;
Sumit Bose 461678
+	int ret;
Sumit Bose 461678
+
Sumit Bose 461678
+	free (conn->domain_sid);
Sumit Bose 461678
+	conn->domain_sid = NULL;
Sumit Bose 461678
+
Sumit Bose 461678
+	ret = ldap_search_ext_s (conn->ldap, conn->default_naming_context, LDAP_SCOPE_BASE,
Sumit Bose 461678
+	                         NULL, attrs, 0, NULL, NULL, NULL, -1, &results);
Sumit Bose 461678
+	if (ret == LDAP_SUCCESS) {
Sumit Bose 461678
+		conn->domain_sid = _adcli_ldap_parse_sid (conn->ldap, results, "objectSid");
Sumit Bose 461678
+		ldap_msgfree (results);
Sumit Bose 461678
+
Sumit Bose 461678
+		if (conn->domain_sid)
Sumit Bose 461678
+			_adcli_info ("Looked up domain SID: %s", conn->domain_sid);
Sumit Bose 461678
+		else
Sumit Bose 461678
+			_adcli_err ("No domain SID found");
Sumit Bose 461678
+	} else {
Sumit Bose 461678
+		_adcli_ldap_handle_failure (conn->ldap, ADCLI_ERR_DIRECTORY,
Sumit Bose 461678
+		                            "Couldn't lookup domain SID");
Sumit Bose 461678
+	}
Sumit Bose 461678
+}
Sumit Bose 461678
+
Sumit Bose 461678
 static void
Sumit Bose 461678
 conn_clear_state (adcli_conn *conn)
Sumit Bose 461678
 {
Sumit Bose 461678
@@ -1148,6 +1175,7 @@ adcli_conn_connect (adcli_conn *conn)
Sumit Bose 461678
 		return res;
Sumit Bose 461678
 
Sumit Bose 461678
 	lookup_short_name (conn);
Sumit Bose 461678
+	lookup_domain_sid (conn);
Sumit Bose 461678
 	return ADCLI_SUCCESS;
Sumit Bose 461678
 }
Sumit Bose 461678
 
Sumit Bose 461678
-- 
Sumit Bose 461678
2.14.4
Sumit Bose 461678