diff options
author | Andreas Schneider <asn@samba.org> | 2013-12-16 12:57:20 +0100 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2014-02-05 11:41:25 +1300 |
commit | 241e98d8ee099f9cc5feb835085b4abd2b1ee663 (patch) | |
tree | 4e51b23e227e69391546d4af08bcdc9a961a65b6 /source3/lib | |
parent | 55cf6889495056c50be5a29a8c79eefa44db3261 (diff) | |
download | samba-241e98d8ee099f9cc5feb835085b4abd2b1ee663.tar.gz samba-241e98d8ee099f9cc5feb835085b4abd2b1ee663.tar.xz samba-241e98d8ee099f9cc5feb835085b4abd2b1ee663.zip |
s3-lib: Add winbind_lookup_usersids().
Pair-Programmed-With: Guenther Deschner <gd@samba.org>
Signed-off-by: Guenther Deschner <gd@samba.org>
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Diffstat (limited to 'source3/lib')
-rw-r--r-- | source3/lib/winbind_util.c | 34 | ||||
-rw-r--r-- | source3/lib/winbind_util.h | 4 |
2 files changed, 38 insertions, 0 deletions
diff --git a/source3/lib/winbind_util.c b/source3/lib/winbind_util.c index b458ebe8472..f62682beee1 100644 --- a/source3/lib/winbind_util.c +++ b/source3/lib/winbind_util.c @@ -342,6 +342,40 @@ bool winbind_get_sid_aliases(TALLOC_CTX *mem_ctx, return true; } +bool winbind_lookup_usersids(TALLOC_CTX *mem_ctx, + const struct dom_sid *user_sid, + uint32_t *p_num_sids, + struct dom_sid **p_sids) +{ + wbcErr ret; + struct wbcDomainSid dom_sid; + struct wbcDomainSid *sid_list = NULL; + uint32_t num_sids; + + memcpy(&dom_sid, user_sid, sizeof(dom_sid)); + + ret = wbcLookupUserSids(&dom_sid, + false, + &num_sids, + &sid_list); + if (ret != WBC_ERR_SUCCESS) { + return false; + } + + *p_sids = talloc_array(mem_ctx, struct dom_sid, num_sids); + if (*p_sids == NULL) { + wbcFreeMemory(sid_list); + return false; + } + + memcpy(*p_sids, sid_list, sizeof(dom_sid) * num_sids); + + *p_num_sids = num_sids; + wbcFreeMemory(sid_list); + + return true; +} + #else /* WITH_WINBIND */ struct passwd * winbind_getpwnam(const char * name) diff --git a/source3/lib/winbind_util.h b/source3/lib/winbind_util.h index 541bb95f174..abbc5a93c9d 100644 --- a/source3/lib/winbind_util.h +++ b/source3/lib/winbind_util.h @@ -58,5 +58,9 @@ bool winbind_get_sid_aliases(TALLOC_CTX *mem_ctx, size_t num_members, uint32_t **pp_alias_rids, size_t *p_num_alias_rids); +bool winbind_lookup_usersids(TALLOC_CTX *mem_ctx, + const struct dom_sid *user_sid, + uint32_t *p_num_sids, + struct dom_sid **p_sids); #endif /* __LIB__WINBIND_UTIL_H__ */ |