From 3194ad2838bedee3eff60c767552d8a801b5eb70 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Thu, 28 May 2009 01:02:40 +0200 Subject: [PATCH] Add smbldap_pull_sid --- source3/include/smbldap.h | 2 ++ source3/lib/smbldap.c | 20 ++++++++++++++++++++ source3/libads/ldap.c | 14 +------------- 3 files changed, 23 insertions(+), 13 deletions(-) diff --git a/source3/include/smbldap.h b/source3/include/smbldap.h index 3ac770a548b..c28d43d53ba 100644 --- a/source3/include/smbldap.h +++ b/source3/include/smbldap.h @@ -214,6 +214,8 @@ char * smbldap_talloc_single_attribute(LDAP *ldap_struct, LDAPMessage *entry, char * smbldap_talloc_smallest_attribute(LDAP *ldap_struct, LDAPMessage *entry, const char *attribute, TALLOC_CTX *mem_ctx); +bool smbldap_pull_sid(LDAP *ld, LDAPMessage *msg, const char *attrib, + struct dom_sid *sid); void talloc_autofree_ldapmsg(TALLOC_CTX *mem_ctx, LDAPMessage *result); void talloc_autofree_ldapmod(TALLOC_CTX *mem_ctx, LDAPMod **mod); char *smbldap_talloc_dn(TALLOC_CTX *mem_ctx, LDAP *ld, diff --git a/source3/lib/smbldap.c b/source3/lib/smbldap.c index 4360d3ab578..b6921c329c0 100644 --- a/source3/lib/smbldap.c +++ b/source3/lib/smbldap.c @@ -389,6 +389,26 @@ ATTRIB_MAP_ENTRY sidmap_attr_list[] = { 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; diff --git a/source3/libads/ldap.c b/source3/libads/ldap.c index 588c0a131c3..3e5764a598b 100644 --- a/source3/libads/ldap.c +++ b/source3/libads/ldap.c @@ -2619,19 +2619,7 @@ int ads_count_replies(ADS_STRUCT *ads, void *res) bool ads_pull_sid(ADS_STRUCT *ads, LDAPMessage *msg, const char *field, DOM_SID *sid) { - struct berval **values; - bool ret = False; - - values = ldap_get_values_len(ads->ldap.ld, msg, field); - - if (!values) - return False; - - if (values[0]) - ret = sid_parse(values[0]->bv_val, values[0]->bv_len, sid); - - ldap_value_free_len(values); - return ret; + return smbldap_pull_sid(ads->ldap.ld, msg, field, sid); } /** -- 2.34.1