diff options
author | Tim Potter <tpot@samba.org> | 2002-05-13 00:06:35 +0000 |
---|---|---|
committer | Tim Potter <tpot@samba.org> | 2002-05-13 00:06:35 +0000 |
commit | 7f807117d782b81e83a9181d337275a36eeeb301 (patch) | |
tree | dccf94b4ef7f899872ab7a48ae00d81be0dd3412 | |
parent | ee2306d88156af9b03c135889672e6ce3ec49636 (diff) | |
download | samba-7f807117d782b81e83a9181d337275a36eeeb301.tar.gz samba-7f807117d782b81e83a9181d337275a36eeeb301.tar.bz2 samba-7f807117d782b81e83a9181d337275a36eeeb301.zip |
Merge of Solaris winbindd fixes.
(This used to be commit 4bbc584e6ce9cbc32bae715fd3fec0d89f2e271f)
-rw-r--r-- | source3/acconfig.h | 2 | ||||
-rw-r--r-- | source3/configure.in | 27 | ||||
-rw-r--r-- | source3/include/config.h.in | 2 | ||||
-rw-r--r-- | source3/nsswitch/winbind_nss.c | 11 |
4 files changed, 42 insertions, 0 deletions
diff --git a/source3/acconfig.h b/source3/acconfig.h index 00c14ca97b..eb49d43697 100644 --- a/source3/acconfig.h +++ b/source3/acconfig.h @@ -186,6 +186,8 @@ #undef STAT_ST_BLOCKSIZE #undef HAVE_DEVICE_MAJOR_FN #undef HAVE_DEVICE_MINOR_FN +#undef HAVE_PASSWD_PW_COMMENT +#undef HAVE_PASSWD_PW_AGE /* * Add these definitions to allow VFS modules to * see the CPPFLAGS defines. diff --git a/source3/configure.in b/source3/configure.in index bbfdc2e382..9806594449 100644 --- a/source3/configure.in +++ b/source3/configure.in @@ -2665,6 +2665,33 @@ AC_SUBST(WINBIND_PAM_TARGETS) AC_SUBST(WINBIND_NSS_EXTRA_OBJS) AC_SUBST(WINBIND_NSS_EXTRA_LIBS) +# Solaris has some extra fields in struct passwd that need to be +# initialised otherwise nscd crashes. Unfortunately autoconf < 2.50 +# doesn't have the AC_CHECK_MEMBER macro which would be handy for checking +# this. + +#AC_CHECK_MEMBER(struct passwd.pw_comment, +# AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]), +# [#include <pwd.h>]) + +AC_CACHE_CHECK([whether struct passwd has pw_comment],samba_cv_passwd_pw_comment, [ + AC_TRY_COMPILE([#include <pwd.h>],[struct passwd p; p.pw_comment;], + samba_cv_passwd_pw_comment=yes,samba_cv_passwd_pw_comment=no)]) +if test x"$samba_cv_passwd_pw_comment" = x"yes"; then + AC_DEFINE(HAVE_PASSWD_PW_COMMENT) +fi + +#AC_CHECK_MEMBER(struct passwd.pw_age, +# AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]), +# [#include <pwd.h>]) + +AC_CACHE_CHECK([whether struct passwd has pw_age],samba_cv_passwd_pw_age, [ + AC_TRY_COMPILE([#include <pwd.h>],[struct passwd p; p.pw_age;], + samba_cv_passwd_pw_age=yes,samba_cv_passwd_pw_age=no)]) +if test x"$samba_cv_passwd_pw_age" = x"yes"; then + AC_DEFINE(HAVE_PASSWD_PW_AGE) +fi + ################################################# # Check to see if we should use the included popt diff --git a/source3/include/config.h.in b/source3/include/config.h.in index 7328d022c1..8dc7dd6cf8 100644 --- a/source3/include/config.h.in +++ b/source3/include/config.h.in @@ -252,6 +252,8 @@ #undef STAT_ST_BLOCKSIZE #undef HAVE_DEVICE_MAJOR_FN #undef HAVE_DEVICE_MINOR_FN +#undef HAVE_PASSWD_PW_COMMENT +#undef HAVE_PASSWD_PW_AGE /* * Add these definitions to allow VFS modules to * see the CPPFLAGS defines. diff --git a/source3/nsswitch/winbind_nss.c b/source3/nsswitch/winbind_nss.c index 0a49f5ec96..a396e5551b 100644 --- a/source3/nsswitch/winbind_nss.c +++ b/source3/nsswitch/winbind_nss.c @@ -659,6 +659,17 @@ static NSS_STATUS fill_pwent(struct passwd *result, strcpy(result->pw_shell, pw->pw_shell); + /* The struct passwd for Solaris has some extra fields which must + be initialised or nscd crashes. */ + +#if HAVE_PASSWD_PW_COMMENT + result->pw_comment = ""; +#endif + +#if HAVE_PASSWD_PW_AGE + result->pw_age = ""; +#endif + return NSS_STATUS_SUCCESS; } |