diff options
author | Günther Deschner <gd@samba.org> | 2014-07-07 17:14:37 +0200 |
---|---|---|
committer | Günther Deschner <gd@samba.org> | 2014-07-15 16:00:40 +0200 |
commit | cf0ae511ebe2a9dc3bd11d5adf60459e545157f7 (patch) | |
tree | 0116877232903a196dcf4c4558b1d89ecae7a36d | |
parent | c735823f68ab3e0553e982ac3e5e90a7cc43db16 (diff) | |
download | samba-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>
-rw-r--r-- | source3/winbindd/winbindd_cache.c | 34 | ||||
-rw-r--r-- | source3/winbindd/winbindd_proto.h | 4 |
2 files changed, 38 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, diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h index e1b32b7799..42fffc0656 100644 --- a/source3/winbindd/winbindd_proto.h +++ b/source3/winbindd/winbindd_proto.h @@ -104,6 +104,10 @@ NTSTATUS wcache_query_user(struct winbindd_domain *domain, TALLOC_CTX *mem_ctx, const struct dom_sid *user_sid, struct wbint_userinfo *info); +NTSTATUS wcache_query_user_fullname(struct winbindd_domain *domain, + TALLOC_CTX *mem_ctx, + const struct dom_sid *user_sid, + const char **full_name); NTSTATUS wcache_lookup_useraliases(struct winbindd_domain *domain, TALLOC_CTX *mem_ctx, uint32 num_sids, const struct dom_sid *sids, |