summaryrefslogtreecommitdiffstats
path: root/source3/lib
diff options
context:
space:
mode:
authorAndreas Schneider <asn@samba.org>2013-12-16 12:57:20 +0100
committerAndrew Bartlett <abartlet@samba.org>2014-02-05 11:41:25 +1300
commit241e98d8ee099f9cc5feb835085b4abd2b1ee663 (patch)
tree4e51b23e227e69391546d4af08bcdc9a961a65b6 /source3/lib
parent55cf6889495056c50be5a29a8c79eefa44db3261 (diff)
downloadsamba-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.c34
-rw-r--r--source3/lib/winbind_util.h4
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__ */