nss_winbind: Solaris 64-bit fix and...
authorSATOH Fumiyasu <fumiyas@osstech.jp>
Tue, 16 Dec 2008 15:59:07 +0000 (16:59 +0100)
committerVolker Lendecke <vl@samba.org>
Tue, 16 Dec 2008 16:04:02 +0000 (17:04 +0100)
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
nsswitch/winbind_nss_solaris.h

index 4c85bd3621b57275300e7551090348ffac520024..5fb37643ce2c92cfe55a87d96f9bf114f4fba954 100644 (file)
@@ -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
index c6cadefc38a81c9c3d01ed01d502386aa5191888..f805542f7535265ea5c861f2cf207c65f064d5db 100644 (file)
@@ -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 */