summaryrefslogtreecommitdiffstats
path: root/source3/winbindd/winbindd_cache.c
diff options
context:
space:
mode:
authorGünther Deschner <gd@samba.org>2014-07-07 17:14:37 +0200
committerGünther Deschner <gd@samba.org>2014-07-15 16:00:40 +0200
commitcf0ae511ebe2a9dc3bd11d5adf60459e545157f7 (patch)
tree0116877232903a196dcf4c4558b1d89ecae7a36d /source3/winbindd/winbindd_cache.c
parentc735823f68ab3e0553e982ac3e5e90a7cc43db16 (diff)
downloadsamba-cf0ae511ebe2a9dc3bd11d5adf60459e545157f7.tar.gz
samba-cf0ae511ebe2a9dc3bd11d5adf60459e545157f7.tar.xz
samba-cf0ae511ebe2a9dc3bd11d5adf60459e545157f7.zip
s3-winbindd: add wcache_query_user_fullname().
This helper function is used to query the full name of a cached user object (for further gecos processing). Thanks to Matt Rogers <mrogers@redhat.com>. BUG: https://bugzilla.samba.org/show_bug.cgi?id=10440 Guenther Pair-Programmed-With: Andreas Schneider <asn@samba.org> Signed-off-by: Günther Deschner <gd@samba.org> Reviewed-by: Andreas Schneider <asn@samba.org>
Diffstat (limited to 'source3/winbindd/winbindd_cache.c')
-rw-r--r--source3/winbindd/winbindd_cache.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/source3/winbindd/winbindd_cache.c b/source3/winbindd/winbindd_cache.c
index bfd78daef5..9ec46cf924 100644
--- a/source3/winbindd/winbindd_cache.c
+++ b/source3/winbindd/winbindd_cache.c
@@ -2314,6 +2314,40 @@ NTSTATUS wcache_query_user(struct winbindd_domain *domain,
return status;
}
+
+/**
+* @brief Query a fullname from the username cache (for further gecos processing)
+*
+* @param domain A pointer to the winbindd_domain struct.
+* @param mem_ctx The talloc context.
+* @param user_sid The user sid.
+* @param full_name A pointer to the full_name string.
+*
+* @return NTSTATUS code
+*/
+NTSTATUS wcache_query_user_fullname(struct winbindd_domain *domain,
+ TALLOC_CTX *mem_ctx,
+ const struct dom_sid *user_sid,
+ const char **full_name)
+{
+ NTSTATUS status;
+ struct wbint_userinfo info;
+
+ status = wcache_query_user(domain, mem_ctx, user_sid, &info);
+ if (!NT_STATUS_IS_OK(status)) {
+ return status;
+ }
+
+ if (info.full_name != NULL) {
+ *full_name = talloc_strdup(mem_ctx, info.full_name);
+ if (*full_name == NULL) {
+ return NT_STATUS_NO_MEMORY;
+ }
+ }
+
+ return NT_STATUS_OK;
+}
+
/* Lookup user information from a rid */
static NTSTATUS query_user(struct winbindd_domain *domain,
TALLOC_CTX *mem_ctx,