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