diff options
author | Volker Lendecke <vl@samba.org> | 2009-05-28 01:02:40 +0200 |
---|---|---|
committer | Volker Lendecke <vl@samba.org> | 2009-05-28 10:52:04 +0200 |
commit | 3194ad2838bedee3eff60c767552d8a801b5eb70 (patch) | |
tree | 1faa5425f5ff86d935ed5de803fb324ed53fd13a /source3 | |
parent | 7a5475f098c6a20f867adc081ca455e6c393755b (diff) | |
download | samba-3194ad2838bedee3eff60c767552d8a801b5eb70.tar.gz samba-3194ad2838bedee3eff60c767552d8a801b5eb70.tar.bz2 samba-3194ad2838bedee3eff60c767552d8a801b5eb70.zip |
Add smbldap_pull_sid
Diffstat (limited to 'source3')
-rw-r--r-- | source3/include/smbldap.h | 2 | ||||
-rw-r--r-- | source3/lib/smbldap.c | 20 | ||||
-rw-r--r-- | 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 3ac770a548..c28d43d53b 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 4360d3ab57..b6921c329c 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 588c0a131c..3e5764a598 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); } /** |