From 9cf2c45aa7e3880909277ac5c083675adf48cfb3 Mon Sep 17 00:00:00 2001 From: SATOH Fumiyasu Date: Tue, 16 Dec 2008 16:59:07 +0100 Subject: [PATCH] nss_winbind: Solaris 64-bit fix and... PATCH 1: Fix gmem->numgids and gmem->maxgids breakage on Solaris 64-bit because sizeof(int) != sizeof(long int). PATCH 2: This patch fixes a compile-time warning "warning: implicit function declaration: _nss_winbind_initgroups_dyn". (cherry picked from commit cb036772d09227f870c2fec3ecd8c3f53787dfbc) --- nsswitch/winbind_nss_solaris.c | 9 +++++++-- nsswitch/winbind_nss_solaris.h | 3 +++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/nsswitch/winbind_nss_solaris.c b/nsswitch/winbind_nss_solaris.c index 4c85bd3621b..5fb37643ce2 100644 --- a/nsswitch/winbind_nss_solaris.c +++ b/nsswitch/winbind_nss_solaris.c @@ -281,17 +281,22 @@ _nss_winbind_getgroupsbymember_solwrap(nss_backend_t* be, void* args) { int errnop; struct nss_groupsbymem *gmem = (struct nss_groupsbymem *)args; + long int numgids = gmem->numgids; + long int maxgids = gmem->maxgids; NSS_DEBUG("_nss_winbind_getgroupsbymember"); _nss_winbind_initgroups_dyn(gmem->username, gmem->gid_array[0], /* Primary Group */ - &gmem->numgids, - &gmem->maxgids, + &numgids, + &maxgids, &gmem->gid_array, gmem->maxgids, &errnop); + gmem->numgids = numgids; + gmem->maxgids = maxgids; + /* * If the maximum number of gids have been found, return * SUCCESS so the switch engine will stop searching. Otherwise diff --git a/nsswitch/winbind_nss_solaris.h b/nsswitch/winbind_nss_solaris.h index c6cadefc38a..f805542f753 100644 --- a/nsswitch/winbind_nss_solaris.h +++ b/nsswitch/winbind_nss_solaris.h @@ -81,5 +81,8 @@ NSS_STATUS _nss_winbind_getgrnam_r(const char *name, NSS_STATUS _nss_winbind_getgrgid_r(gid_t gid, struct group *result, char *buffer, size_t buflen, int *errnop); +NSS_STATUS _nss_winbind_initgroups_dyn(char *user, gid_t group, long int *start, + long int *size, gid_t **groups, + long int limit, int *errnop); #endif /* _WINBIND_NSS_SOLARIS_H */ -- 2.34.1