diff --git a/ChangeLog b/ChangeLog index db4c63c1..cff4162d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2009-04-06 Nicolas François + + * lib/prototypes.h, libmisc/addgrps.c: restrict add_groups() to + ifndef USE_PAM. + * lib/prototypes.h: Remove the declaration of add_cons_grps(). The + function does not exist. + * libmisc/age.c (setup_uid_gid): is_console is never set ifndef + USE_PAM. Change the prototype of setup_uid_gid() when USE_PAM is + not defined. This permits to remove add_groups from PAM builds. + setup_uid_gid is already subject to HAVE_INITGROUPS. + * libmisc/pwd2spwd.c (pwd_to_spwd): pwd_to_spwd() is not used in + PAM builds. + 2009-04-05 Nicolas François * src/passwd.c: do_update_age is only used ifndef USE_PAM. Make it diff --git a/lib/prototypes.h b/lib/prototypes.h index bf86ca28..dbb7801a 100644 --- a/lib/prototypes.h +++ b/lib/prototypes.h @@ -60,8 +60,9 @@ extern char *Prog; /* addgrps.c */ +#if defined (HAVE_SETGROUPS) && ! defined (USE_PAM) extern int add_groups (const char *); -extern void add_cons_grps (void); +#endif /* age.c */ extern void agecheck (const struct passwd *, const struct spwd *); @@ -231,7 +232,9 @@ extern void do_pam_passwd (const char *user, bool silent, bool change_expired); extern bool isttytime (const char *, const char *, time_t); /* pwd2spwd.c */ +#ifdef USE_PAM extern struct spwd *pwd_to_spwd (const struct passwd *); +#endif /* pwdcheck.c */ #ifndef USE_PAM @@ -259,7 +262,11 @@ extern char *crypt_make_salt (const char *meth, void *arg); /* setugid.c */ extern int setup_groups (const struct passwd *info); extern int change_uid (const struct passwd *info); +#if (defined HAVE_INITGROUPS) && (! defined USE_PAM) extern int setup_uid_gid (const struct passwd *info, bool is_console); +#else +extern int setup_uid_gid (const struct passwd *info); +#endif /* setup.c */ extern void setup (struct passwd *); diff --git a/libmisc/addgrps.c b/libmisc/addgrps.c index 80ac0187..1d0356fa 100644 --- a/libmisc/addgrps.c +++ b/libmisc/addgrps.c @@ -32,7 +32,7 @@ #include -#ifdef HAVE_SETGROUPS +#if defined (HAVE_SETGROUPS) && ! defined (USE_PAM) #include "prototypes.h" #include "defines.h" @@ -121,5 +121,7 @@ int add_groups (const char *list) return 0; } -#endif +#else /* HAVE_SETGROUPS && !USE_PAM */ +extern int errno; /* warning: ANSI C forbids an empty source file */ +#endif /* HAVE_SETGROUPS && !USE_PAM */ diff --git a/libmisc/age.c b/libmisc/age.c index 25463a67..de69ae30 100644 --- a/libmisc/age.c +++ b/libmisc/age.c @@ -60,7 +60,7 @@ int expire (const struct passwd *pw, const struct spwd *sp) pid_t pid; if (NULL == sp) { - sp = pwd_to_spwd (pw); + return 0; } /* @@ -126,7 +126,12 @@ int expire (const struct passwd *pw, const struct spwd *sp) * passwd to work just like it would had they executed * it from the command line while logged in. */ - if (setup_uid_gid (pw, 0) != 0) { +#if defined(HAVE_INITGROUPS) && ! defined(USE_PAM) + if (setup_uid_gid (pw, false) != 0) +#else + if (setup_uid_gid (pw) != 0) +#endif + { _exit (126); } @@ -161,7 +166,7 @@ void agecheck (const struct passwd *pw, const struct spwd *sp) long remain; if (NULL == sp) { - sp = pwd_to_spwd (pw); + return; } /* diff --git a/libmisc/pwd2spwd.c b/libmisc/pwd2spwd.c index e75eb4e5..c1b9b29a 100644 --- a/libmisc/pwd2spwd.c +++ b/libmisc/pwd2spwd.c @@ -34,6 +34,8 @@ #ident "$Id$" +#ifndef USE_PAM + #include #include "prototypes.h" #include "defines.h" @@ -83,3 +85,7 @@ struct spwd *pwd_to_spwd (const struct passwd *pw) return &sp; } +#else /* USE_PAM */ +extern int errno; /* warning: ANSI C forbids an empty source file */ +#endif /* !USE_PAM */ +