32-bit pam_winbind and 64-bit winbindd patch
Pim Zandbergen
P.Zandbergen at macroscoop.nl
Tue Aug 14 12:34:08 GMT 2007
Is this still supposed to work?
I'm trying to to have VMware Server authenticate against winbind.
VMware Server uses pam, but it's a 32-bit application, so it uses
32-bit pam modules.
This works fine with pam_winbind.so on a 32-bit Samba server,
but on a 64-bit machine I'm getting
winbindd[19076]: [2007/08/14 13:52:12, 0]
nsswitch/winbindd.c:request_len_recv(544)
winbindd[19076]: request_len_recv: Invalid request size received: 2084
and authentication fails.
Was this patch ever meant to make 32-bit pam_winbind.so work against a
64-bit winbindd?
Thanks,
Pim
Gerald (Jerry) Carter wrote on April 11, 2006:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Jeremy,
>
> How do you feel about these changes? I can get a 32-bit
> version of `wbinfo -t` working against a 64-bit winbindd.
>
>
>
>
>
> cheers, jerry
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.2 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
>
> iD8DBQFEPCxRIR7qMdg1EfYRAlrwAJ9QL2Cj8WH6S9+HiTpBD4FEQAJ2vACcDX/F
> N/3/5XWKcXV5I44Z0wwjzrM=
> =GmFm
> -----END PGP SIGNATURE-----
> -------------- next part --------------
> Index: configure.in
> ===================================================================
> --- configure.in (revision 15036)
> +++ configure.in (working copy)
> @@ -914,6 +914,7 @@
>
> AC_CHECK_SIZEOF(int,cross)
> AC_CHECK_SIZEOF(long,cross)
> +AC_CHECK_SIZEOF(long long,cross)
> AC_CHECK_SIZEOF(short,cross)
>
> AC_C_CONST
> Index: include/includes.h
> ===================================================================
> --- include/includes.h (revision 15036)
> +++ include/includes.h (working copy)
> @@ -643,6 +643,19 @@
> #endif
>
> /*
> + * check for 8 byte long long
> + */
> +
> +#if !defined(uint64)
> +#if (SIZEOF_LONG == 8)
> +#define uint64 unsigned long
> +#elif (SIZEOF_LONG_LONG == 8)
> +#define uint64 unsigned long long
> +#endif /* don't lie. If we don't have it, then don't use it */
> +#endif
> +
> +
> +/*
> * Types for devices, inodes and offsets.
> */
>
> Index: nsswitch/winbindd_nss.h
> ===================================================================
> --- nsswitch/winbindd_nss.h (revision 15036)
> +++ nsswitch/winbindd_nss.h (working copy)
> @@ -155,8 +155,8 @@
> fstring gr_name;
> fstring gr_passwd;
> gid_t gr_gid;
> - size_t num_gr_mem;
> - size_t gr_mem_ofs; /* offset to group membership */
> + uint32 num_gr_mem;
> + uint32 gr_mem_ofs; /* offset to group membership */
> char **gr_mem;
> } WINBINDD_GR;
>
> @@ -257,8 +257,18 @@
> } dual_idmapset;
> BOOL list_all_domains;
> } data;
> - char *extra_data;
> - size_t extra_len;
> + union {
> + struct {
> +#if defined(uint64)
> + uint64 z;
> +#else
> + uint32 x;
> + uint32 y;
> +#endif
> + } pad;
> + char *data;
> + } extra_data;
> + uint32 extra_len;
> char null_term;
> };
>
> @@ -376,7 +386,17 @@
>
> /* Variable length return data */
>
> - void *extra_data; /* getgrnam, getgrgid, getgrent */
> + union {
> + struct {
> +#if defined(uint64)
> + uint64 z;
> +#else
> + uint32 x;
> + uint32 y;
> +#endif
> + } pad;
> + void *data;
> + } extra_data;
> };
>
> struct WINBINDD_CCACHE_ENTRY {
>
More information about the samba-technical
mailing list