Sumit Bose 461678
From bab08d90162c9146c1b4e8373f4b08209b84768c 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:44:45 +0100
Sumit Bose 461678
Subject: [PATCH 10/23] library: add _adcli_ldap_parse_sid()
Sumit Bose 461678
Sumit Bose 461678
Get a binary SID from a LDAP message and return it in the string
Sumit Bose 461678
representation.
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/adldap.c    | 24 ++++++++++++++++++++++++
Sumit Bose 461678
 library/adprivate.h |  4 ++++
Sumit Bose 461678
 2 files changed, 28 insertions(+)
Sumit Bose 461678
Sumit Bose 461678
diff --git a/library/adldap.c b/library/adldap.c
Sumit Bose 461678
index 7c7a01b..07dc373 100644
Sumit Bose 461678
--- a/library/adldap.c
Sumit Bose 461678
+++ b/library/adldap.c
Sumit Bose 461678
@@ -67,6 +67,30 @@ _adcli_ldap_handle_failure (LDAP *ldap,
Sumit Bose 461678
 	return defres;
Sumit Bose 461678
 }
Sumit Bose 461678
 
Sumit Bose 461678
+char *
Sumit Bose 461678
+_adcli_ldap_parse_sid (LDAP *ldap,
Sumit Bose 461678
+                         LDAPMessage *results,
Sumit Bose 461678
+                         const char *attr_name)
Sumit Bose 461678
+{
Sumit Bose 461678
+	LDAPMessage *entry;
Sumit Bose 461678
+	struct berval **bvs;
Sumit Bose 461678
+	char *val = NULL;
Sumit Bose 461678
+
Sumit Bose 461678
+	entry = ldap_first_entry (ldap, results);
Sumit Bose 461678
+	if (entry != NULL) {
Sumit Bose 461678
+		bvs = ldap_get_values_len (ldap, entry, attr_name);
Sumit Bose 461678
+		if (bvs != NULL) {
Sumit Bose 461678
+			if (bvs[0]) {
Sumit Bose 461678
+				val = _adcli_bin_sid_to_str ( (uint8_t *) bvs[0]->bv_val,
Sumit Bose 461678
+				                              bvs[0]->bv_len);
Sumit Bose 461678
+				return_val_if_fail (val != NULL, NULL);
Sumit Bose 461678
+			}
Sumit Bose 461678
+			ldap_value_free_len (bvs);
Sumit Bose 461678
+		}
Sumit Bose 461678
+	}
Sumit Bose 461678
+
Sumit Bose 461678
+	return val;
Sumit Bose 461678
+}
Sumit Bose 461678
 
Sumit Bose 461678
 char *
Sumit Bose 461678
 _adcli_ldap_parse_value (LDAP *ldap,
Sumit Bose 461678
diff --git a/library/adprivate.h b/library/adprivate.h
Sumit Bose 461678
index 7257c93..83a88f6 100644
Sumit Bose 461678
--- a/library/adprivate.h
Sumit Bose 461678
+++ b/library/adprivate.h
Sumit Bose 461678
@@ -174,6 +174,10 @@ adcli_result  _adcli_ldap_handle_failure     (LDAP *ldap,
Sumit Bose 461678
                                               const char *desc,
Sumit Bose 461678
                                               ...) GNUC_PRINTF(3, 4);
Sumit Bose 461678
 
Sumit Bose 461678
+char *         _adcli_ldap_parse_sid         (LDAP *ldap,
Sumit Bose 461678
+                                              LDAPMessage *results,
Sumit Bose 461678
+                                              const char *attr_name);
Sumit Bose 461678
+
Sumit Bose 461678
 char *        _adcli_ldap_parse_value        (LDAP *ldap,
Sumit Bose 461678
                                               LDAPMessage *results,
Sumit Bose 461678
                                               const char *attr_name);
Sumit Bose 461678
-- 
Sumit Bose 461678
2.14.4
Sumit Bose 461678