Add smbldap_pull_sid
[ira/wip.git] / source3 / lib / smbldap.c
index 4360d3ab578008860d61d4bba291bc4047af95ea..b6921c329c0301af3edb51795d4fbf0f19271b6a 100644 (file)
@@ -389,6 +389,26 @@ ATTRIB_MAP_ENTRY sidmap_attr_list[] = {
        return result;
 }
 
        return result;
 }
 
+ bool smbldap_pull_sid(LDAP *ld, LDAPMessage *msg, const char *attrib,
+                      struct dom_sid *sid)
+{
+       struct berval **values;
+       bool ret = False;
+
+       values = ldap_get_values_len(ld, msg, attrib);
+
+       if (!values) {
+               return false;
+       }
+
+       if (values[0] != NULL) {
+               ret = sid_parse(values[0]->bv_val, values[0]->bv_len, sid);
+       }
+
+       ldap_value_free_len(values);
+       return ret;
+}
+
  static int ldapmsg_destructor(LDAPMessage **result) {
        ldap_msgfree(*result);
        return 0;
  static int ldapmsg_destructor(LDAPMessage **result) {
        ldap_msgfree(*result);
        return 0;