diff -dru samba-3.5.10.orig/nsswitch/pam_winbind.c samba-3.5.10/nsswitch/pam_winbind.c --- samba-3.5.10.orig/nsswitch/pam_winbind.c 2011-07-24 22:04:44.000000000 +0200 +++ samba-3.5.10/nsswitch/pam_winbind.c 2011-07-30 23:22:37.000000000 +0200 @@ -10,6 +10,8 @@ (see copyright below for full details) */ +#define NO_STATIC_MODULES + #include "pam_winbind.h" #define CONST_DISCARD(type,ptr) ((type)(void *)ptr) diff -dru samba-3.5.10.orig/nsswitch/winbind_nss_linux.c samba-3.5.10/nsswitch/winbind_nss_linux.c --- samba-3.5.10.orig/nsswitch/winbind_nss_linux.c 2011-07-24 22:04:44.000000000 +0200 +++ samba-3.5.10/nsswitch/winbind_nss_linux.c 2011-07-27 21:42:50.000000000 +0200 @@ -254,6 +254,10 @@ result->pw_age = ""; #endif +#if HAVE_PASSWD_PW_CLASS + result->pw_class = ""; +#endif + return NSS_STATUS_SUCCESS; } diff -dru samba-3.5.10.orig/nsswitch/winbind_nss_netbsd.c samba-3.5.10/nsswitch/winbind_nss_netbsd.c --- samba-3.5.10.orig/nsswitch/winbind_nss_netbsd.c 2011-07-24 22:04:44.000000000 +0200 +++ samba-3.5.10/nsswitch/winbind_nss_netbsd.c 2011-07-27 21:40:11.000000000 +0200 @@ -215,6 +215,7 @@ { int *result = va_arg(ap, int *); const char *uname = va_arg(ap, const char *); + gid_t bgid = va_arg(ap, gid_t); gid_t *groups = va_arg(ap, gid_t *); int maxgrp = va_arg(ap, int); int *groupc = va_arg(ap, int *); @@ -234,6 +235,12 @@ wblistv = (gid_t *)response.extra_data.data; wblistc = response.data.num_entries; + if (*groupc < maxgrp) /* add basegid */ + groups[*groupc] = bgid; + else + *result = -1; + (*groupc)++; + for (i = 0; i < wblistc; i++) { /* add winbind gids */ isdup = 0; /* skip duplicates */ for (dupc = 0; dupc < MIN(maxgrp, *groupc); dupc++) { diff -dru samba-3.5.10.orig/source3/configure samba-3.5.10/source3/configure --- samba-3.5.10.orig/source3/configure 2011-07-24 22:06:26.000000000 +0200 +++ samba-3.5.10/source3/configure 2011-07-27 21:38:59.000000000 +0200 @@ -34701,6 +34701,17 @@ fi +# NetBSD + +ac_fn_c_check_member "$LINENO" "struct passwd" "pw_class" "ac_cv_member_struct_passwd_pw_class" "#include +" +if test "x$ac_cv_member_struct_passwd_pw_class" = x""yes; then : + +$as_echo "#define HAVE_PASSWD_PW_CLASS 1" >>confdefs.h + +fi + + # AIX 4.3.x and 5.1 do not have as many members in # struct secmethod_table as AIX 5.2 ac_fn_c_check_member "$LINENO" "struct secmethod_table" "method_attrlist" "ac_cv_member_struct_secmethod_table_method_attrlist" "#include diff -dru samba-3.5.10.orig/source3/configure.in samba-3.5.10/source3/configure.in --- samba-3.5.10.orig/source3/configure.in 2011-07-24 22:04:44.000000000 +0200 +++ samba-3.5.10/source3/configure.in 2011-07-27 21:37:41.000000000 +0200 @@ -6223,6 +6223,11 @@ AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),, [#include ]) +# NetBSD +AC_CHECK_MEMBER(struct passwd.pw_class, + AC_DEFINE(HAVE_PASSWD_PW_CLASS, 1, [Defined if struct passwd has pw_class field]),, + [#include ]) + # AIX 4.3.x and 5.1 do not have as many members in # struct secmethod_table as AIX 5.2 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , , diff -dru samba-3.5.10.orig/source3/include/config.h.in samba-3.5.10/source3/include/config.h.in --- samba-3.5.10.orig/source3/include/config.h.in 2011-07-24 22:06:24.000000000 +0200 +++ samba-3.5.10/source3/include/config.h.in 2011-07-28 20:52:20.000000000 +0200 @@ -1685,6 +1685,9 @@ /* Defined if struct passwd has pw_age field */ #undef HAVE_PASSWD_PW_AGE +/* Defined if struct passwd has pw_class field */ +#undef HAVE_PASSWD_PW_CLASS + /* Defined if struct passwd has pw_comment field */ #undef HAVE_PASSWD_PW_COMMENT