Use AC_CHECK_FUNCS to get the consistent #define HAVE_xxx Use "auto" rather than "try" for consistency with other modules. Update help string to mention default value. Unchanged: if configured --with-pam and -lpam is misisng, abort the configuration.
Signed-off-by: Gaetan Nadon <[email protected]> --- configure.ac | 20 ++++++++++---------- dm.h | 4 ++-- greet.h | 6 +++--- greeter/Login.h | 2 +- greeter/greet.c | 22 +++++++++++----------- greeter/verify.c | 8 ++++---- session.c | 22 +++++++++++----------- 7 files changed, 42 insertions(+), 42 deletions(-) diff --git a/configure.ac b/configure.ac index e2e15f6..3e6bc01 100644 --- a/configure.ac +++ b/configure.ac @@ -119,17 +119,17 @@ AC_CHECK_DECL(key_setnet, #include <rpc/key_prot.h> ]) -# Check for PAM support -use_pam_default=try -AC_ARG_WITH(pam, AC_HELP_STRING([--with-pam],[Use PAM for authentication]), - [USE_PAM=$withval], [USE_PAM=$use_pam_default]) +# Check for pluggable authentication modules (PAM) support +AC_ARG_WITH(pam, AS_HELP_STRING([--with-pam], + [Use PAM for authentication (default is autodected)]), + [USE_PAM=$withval], [USE_PAM=auto]) if test "x$USE_PAM" != "xno" ; then - AC_SEARCH_LIBS(pam_open_session,[pam]) - AC_CHECK_FUNC(pam_open_session, - [AC_DEFINE(USE_PAM,1,[Use PAM for authentication])], - [if test "x$USE_PAM" != "xtry" ; then - AC_MSG_ERROR([PAM support requested, but pam_open_session not found.]) - fi]) + AC_SEARCH_LIBS([pam_open_session], [pam], + [AC_CHECK_FUNCS([pam_open_session])], + [AS_IF([test "x$USE_PAM" = "xyes"], + [AC_MSG_ERROR([PAM support requested, but pam_open_session not found.])] + )] + ) fi use_selinux_default=no diff --git a/dm.h b/dm.h index 6633248..7c67906 100644 --- a/dm.h +++ b/dm.h @@ -104,7 +104,7 @@ typedef union wait waitType; # endif # endif /* X_NOT_POSIX */ -# ifdef USE_PAM +# ifdef HAVE_PAM_OPEN_SESSION # include <security/pam_appl.h> # endif @@ -421,7 +421,7 @@ extern void LoadSessionResources (struct display *d); extern void ReinitResources (void); /* in session.c */ -# ifdef USE_PAM +# ifdef HAVE_PAM_OPEN_SESSION extern pam_handle_t **thepamhp(void); extern pam_handle_t *thepamh(void); # endif diff --git a/greet.h b/greet.h index 6b6689e..e5dbb01 100644 --- a/greet.h +++ b/greet.h @@ -85,7 +85,7 @@ struct dlfuncs { void (*_endpwent)(void); #endif char *(*_crypt)(CRYPT_ARGS); -#ifdef USE_PAM +#ifdef HAVE_PAM_OPEN_SESSION pam_handle_t **(*_thepamhp)(void); #endif }; @@ -169,7 +169,7 @@ extern struct passwd *(*__xdm_getpwnam)(GETPWNAM_ARGS); extern void (*__xdm_endpwent)(void); # endif extern char *(*__xdm_crypt)(CRYPT_ARGS); -# ifdef USE_PAM +# ifdef HAVE_PAM_OPEN_SESSION extern pam_handle_t **(*__xdm_thepamhp)(void); # endif @@ -211,7 +211,7 @@ extern pam_handle_t **(*__xdm_thepamhp)(void); # define endpwent (*__xdm_endpwent) # endif # define crypt (*__xdm_crypt) -# ifdef USE_PAM +# ifdef HAVE_PAM_OPEN_SESSION # define thepamhp (*__xdm_thepamhp) # endif diff --git a/greeter/Login.h b/greeter/Login.h index 22529a5..01e79cb 100644 --- a/greeter/Login.h +++ b/greeter/Login.h @@ -155,7 +155,7 @@ from The Open Group. # include <pwd.h> # include <limits.h> -# ifdef USE_PAM +# ifdef HAVE_PAM_OPEN_SESSION # define NAME_LEN PAM_MAX_RESP_SIZE # define PASSWORD_LEN PAM_MAX_RESP_SIZE # endif diff --git a/greeter/greet.c b/greeter/greet.c index d8ebb41..8200417 100644 --- a/greeter/greet.c +++ b/greeter/greet.c @@ -130,7 +130,7 @@ struct passwd *(*__xdm_getpwnam)(GETPWNAM_ARGS) = NULL; void (*__xdm_endpwent)(void) = NULL; # endif char *(*__xdm_crypt)(CRYPT_ARGS) = NULL; -# ifdef USE_PAM +# ifdef HAVE_PAM_OPEN_SESSION pam_handle_t **(*__xdm_thepamhp)(void) = NULL; # endif @@ -146,7 +146,7 @@ pam_handle_t **(*__xdm_thepamhp)(void) = NULL; extern Display *dpy; static int done, code; -#ifndef USE_PAM +#ifndef HAVE_PAM_OPEN_SESSION static char name[NAME_LEN], password[PASSWORD_LEN]; #endif static Widget toplevel; @@ -154,7 +154,7 @@ static Widget login; static XtAppContext context; static XtIntervalId pingTimeout; -#ifdef USE_PAM +#ifdef HAVE_PAM_OPEN_SESSION static int pamconv(int num_msg, # ifndef sun const @@ -200,7 +200,7 @@ GreetDone ( data->name, strlen (data->passwd)); switch (status) { case NOTIFY_OK: -#ifndef USE_PAM +#ifndef HAVE_PAM_OPEN_SESSION strncpy (name, data->name, sizeof(name)); name[sizeof(name)-1] = '\0'; strncpy (password, data->passwd, sizeof(password)); @@ -225,7 +225,7 @@ GreetDone ( done = 1; break; } -#ifndef USE_PAM +#ifndef HAVE_PAM_OPEN_SESSION if (done) { bzero (data->name, NAME_LEN); bzero (data->passwd, PASSWORD_LEN); @@ -375,7 +375,7 @@ Greet (struct display *d, struct greet_info *greet) Debug ("Done dispatch %s\n", d->name); if (code == 0) { -#ifndef USE_PAM +#ifndef HAVE_PAM_OPEN_SESSION char *ptr; unsigned int c,state = WHITESPACE; @@ -394,7 +394,7 @@ Greet (struct display *d, struct greet_info *greet) greet->name = ptr; greet->password = password; -#endif /* USE_PAM */ +#endif /* HAVE_PAM_OPEN_SESSION */ XtSetArg (arglist[0], XtNsessionArgument, (char *) &(greet->string)); XtSetArg (arglist[1], XtNallowNullPasswd, (char *) &(greet->allow_null_passwd)); XtSetArg (arglist[2], XtNallowRootLogin, (char *) &(greet->allow_root_login)); @@ -419,7 +419,7 @@ FailedLogin (struct display *d, struct greet_info *greet) d->name, username); #endif DrawFail (login); -#ifndef USE_PAM +#ifndef HAVE_PAM_OPEN_SESSION bzero (greet->name, strlen(greet->name)); bzero (greet->password, strlen(greet->password)); #endif @@ -471,7 +471,7 @@ greet_user_rtn GreetUser( __xdm_endpwent = dlfuncs->_endpwent; # endif __xdm_crypt = dlfuncs->_crypt; -# ifdef USE_PAM +# ifdef HAVE_PAM_OPEN_SESSION __xdm_thepamhp = dlfuncs->_thepamhp; # endif @@ -488,7 +488,7 @@ greet_user_rtn GreetUser( } for (;;) { -#ifdef USE_PAM +#ifdef HAVE_PAM_OPEN_SESSION /* Run PAM conversation */ pam_handle_t **pamhp = thepamhp(); @@ -674,7 +674,7 @@ greet_user_rtn GreetUser( } -#ifdef USE_PAM +#ifdef HAVE_PAM_OPEN_SESSION static int pamconv(int num_msg, # ifndef sun const diff --git a/greeter/verify.c b/greeter/verify.c index dee035a..6fb9e86 100644 --- a/greeter/verify.c +++ b/greeter/verify.c @@ -40,7 +40,7 @@ from The Open Group. #include <pwd.h> -#if defined(USE_PAM) +#if defined(HAVE_PAM_OPEN_SESSION) # include <security/pam_appl.h> # include <stdlib.h> #elif defined(HAVE_GETSPNAM) @@ -325,7 +325,7 @@ int Verify (struct display *d, struct greet_info *greet, struct verify_info *verify) { struct passwd *p; -# ifndef USE_PAM +# ifndef HAVE_PAM_OPEN_SESSION # ifdef HAVE_GETSPNAM struct spwd *sp; # endif @@ -401,7 +401,7 @@ Verify (struct display *d, struct greet_info *greet, struct verify_info *verify) } # endif -# ifndef USE_PAM /* PAM authentication happened in GreetUser already */ +# ifndef HAVE_PAM_OPEN_SESSION /* PAM authentication happened in GreetUser already */ # ifdef linux if (!strcmp(p->pw_passwd, "!") || !strcmp(p->pw_passwd, "*")) { Debug ("The account is locked, no login allowed.\n"); @@ -527,7 +527,7 @@ done: # endif /* __OpenBSD__ */ bzero(user_pass, strlen(user_pass)); /* in case shadow password */ -# endif /* USE_PAM */ +# endif /* HAVE_PAM_OPEN_SESSION */ #endif /* USE_BSDAUTH */ Debug ("verify succeeded\n"); diff --git a/session.c b/session.c index bdafd0b..b368b68 100644 --- a/session.c +++ b/session.c @@ -54,7 +54,7 @@ from The Open Group. # include <usersec.h> #endif -#ifndef USE_PAM /* PAM modules should handle these */ +#ifndef HAVE_PAM_OPEN_SESSION /* PAM modules should handle these */ # ifdef SECURE_RPC # include <rpc/rpc.h> # include <rpc/key_prot.h> @@ -65,7 +65,7 @@ extern int key_setnet(struct key_netstarg *arg); # ifdef K5AUTH # include <krb5/krb5.h> # endif -#endif /* USE_PAM */ +#endif /* HAVE_PAM_OPEN_SESSION */ #ifdef __SCO__ # include <prot.h> @@ -148,7 +148,7 @@ extern void endpwent(void); extern char *crypt(CRYPT_ARGS); #endif -#ifdef USE_PAM +#ifdef HAVE_PAM_OPEN_SESSION pam_handle_t ** thepamhp(void) { @@ -203,7 +203,7 @@ static struct dlfuncs dlfuncs = { endpwent, #endif crypt, -#ifdef USE_PAM +#ifdef HAVE_PAM_OPEN_SESSION thepamhp, #endif }; @@ -507,7 +507,7 @@ UnsecureDisplay (struct display *d, Display *dpy) void SessionExit (struct display *d, int status, int removeAuth) { -#ifdef USE_PAM +#ifdef HAVE_PAM_OPEN_SESSION pam_handle_t *pamh = thepamh(); if (pamh) { @@ -533,7 +533,7 @@ SessionExit (struct display *d, int status, int removeAuth) exit(status); } RemoveUserAuthorization (d, &verify); -#if defined(K5AUTH) && !defined(USE_PAM) /* PAM modules should handle this */ +#if defined(K5AUTH) && !defined(HAVE_PAM_OPEN_SESSION) /* PAM modules should handle this */ /* do like "kdestroy" program */ { krb5_error_code code; @@ -576,7 +576,7 @@ StartClient ( #ifdef HAVE_SETUSERCONTEXT struct passwd* pwd; #endif -#ifdef USE_PAM +#ifdef HAVE_PAM_OPEN_SESSION pam_handle_t *pamh = thepamh (); int pam_error; #endif @@ -597,7 +597,7 @@ StartClient ( Debug ("%s ", *f); Debug ("\n"); } -#ifdef USE_PAM +#ifdef HAVE_PAM_OPEN_SESSION if (pamh) pam_open_session(pamh, 0); #endif switch (pid = fork ()) { @@ -663,7 +663,7 @@ StartClient ( # endif /* QNX4 doesn't support multi-groups, no initgroups() */ # endif /* !HAVE_SETUSERCONTEXT */ -# ifdef USE_PAM +# ifdef HAVE_PAM_OPEN_SESSION if (pamh) { long i; char **pam_env; @@ -721,7 +721,7 @@ StartClient ( } #endif /* AIXV3 */ -#ifndef USE_PAM /* PAM modules should handle these */ +#ifndef HAVE_PAM_OPEN_SESSION /* PAM modules should handle these */ /* * for user-based authorization schemes, * use the password to get the user's credentials. @@ -808,7 +808,7 @@ StartClient ( } } # endif /* K5AUTH */ -#endif /* !USE_PAM */ +#endif /* !HAVE_PAM_OPEN_SESSION */ if (d->windowPath) verify->userEnviron = setEnv(verify->userEnviron, "WINDOWPATH", d->windowPath); -- 1.6.0.4 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
