diff -uNrp shadow-4.0.4.1/src/chage.c shadow-4.0.4.1.owl-pam-auth/src/chage.c --- shadow-4.0.4.1/src/chage.c 2003-06-19 17:57:15 +0000 +++ shadow-4.0.4.1.owl-pam-auth/src/chage.c 2004-02-28 23:16:45 +0000 @@ -698,6 +698,40 @@ int main (int argc, char **argv) exit (1); } +#ifdef USE_PAM + retval = PAM_SUCCESS; + + pampw = getpwuid(getuid()); + if (pampw == NULL) { + retval = PAM_USER_UNKNOWN; + } + + if (retval == PAM_SUCCESS) { + retval = pam_start("chage", pampw->pw_name, &conv, &pamh); + } + + if (retval == PAM_SUCCESS) { + retval = pam_authenticate(pamh, 0); + if (retval != PAM_SUCCESS) { + pam_end(pamh, retval); + } + } + + if (retval == PAM_SUCCESS) { + retval = pam_acct_mgmt(pamh, 0); + if (retval != PAM_SUCCESS) { + pam_end(pamh, retval); + } + } + + if (retval != PAM_SUCCESS) { + fprintf (stderr, _("%s: PAM authentication failed\n"), Prog); + exit (1); + } + + OPENLOG("chage"); +#endif /* USE_PAM */ + /* * Close the password file. If any entries were modified, the file * will be re-written. diff -uNrp shadow-4.0.4.1/src/chpasswd.c shadow-4.0.4.1.owl-pam-auth/src/chpasswd.c --- shadow-4.0.4.1/src/chpasswd.c 2003-06-19 18:11:01 +0000 +++ shadow-4.0.4.1.owl-pam-auth/src/chpasswd.c 2004-02-28 23:16:45 +0000 @@ -105,6 +105,12 @@ int main (int argc, char **argv) bindtextdomain (PACKAGE, LOCALEDIR); textdomain (PACKAGE); + /* XXX - use getopt() */ + if (!(argc == 1 || (argc == 2 && !strcmp(argv[1], "-e")))) + usage(); + if (argc == 2) + eflg = 1; + #ifdef USE_PAM retval = PAM_SUCCESS; @@ -115,7 +121,7 @@ int main (int argc, char **argv) if (retval == PAM_SUCCESS) { retval = - pam_start ("shadow", pampw->pw_name, &conv, &pamh); + pam_start ("chpasswd", pampw->pw_name, &conv, &pamh); } if (retval == PAM_SUCCESS) { @@ -139,12 +145,6 @@ int main (int argc, char **argv) } #endif /* USE_PAM */ - /* XXX - use getopt() */ - if (!(argc == 1 || (argc == 2 && !strcmp (argv[1], "-e")))) - usage (); - if (argc == 2) - eflg = 1; - /* * Lock the password file and open it for reading. This will bring * all of the entries into memory where they may be updated. diff -uNrp shadow-4.0.4.1/src/groupadd.c shadow-4.0.4.1.owl-pam-auth/src/groupadd.c --- shadow-4.0.4.1/src/groupadd.c 2004-01-05 01:08:56 +0000 +++ shadow-4.0.4.1.owl-pam-auth/src/groupadd.c 2004-02-28 23:16:45 +0000 @@ -499,6 +499,10 @@ int main (int argc, char **argv) bindtextdomain (PACKAGE, LOCALEDIR); textdomain (PACKAGE); + OPENLOG("groupadd"); + + process_flags(argc, argv); + #ifdef USE_PAM retval = PAM_SUCCESS; @@ -509,7 +513,7 @@ int main (int argc, char **argv) if (retval == PAM_SUCCESS) { retval = - pam_start ("shadow", pampw->pw_name, &conv, &pamh); + pam_start ("groupadd", pampw->pw_name, &conv, &pamh); } if (retval == PAM_SUCCESS) { @@ -531,9 +535,9 @@ int main (int argc, char **argv) Prog); exit (1); } -#endif /* USE_PAM */ - OPENLOG (Prog); + OPENLOG ("groupadd"); +#endif /* USE_PAM */ #ifdef SHADOWGRP is_shadow_grp = sgr_file_present (); @@ -550,7 +554,6 @@ int main (int argc, char **argv) sg_dbm_mode = O_RDWR; #endif /* SHADOWGRP */ #endif /* NDBM */ - process_flags (argc, argv); /* * Start with a quick check to see if the group exists. diff -uNrp shadow-4.0.4.1/src/groupdel.c shadow-4.0.4.1.owl-pam-auth/src/groupdel.c --- shadow-4.0.4.1/src/groupdel.c 2003-06-19 18:11:01 +0000 +++ shadow-4.0.4.1.owl-pam-auth/src/groupdel.c 2004-02-28 23:16:45 +0000 @@ -294,6 +294,11 @@ int main (int argc, char **argv) bindtextdomain (PACKAGE, LOCALEDIR); textdomain (PACKAGE); + if (argc != 2) + usage(); + + group_name = argv[1]; + #ifdef USE_PAM retval = PAM_SUCCESS; @@ -304,7 +309,7 @@ int main (int argc, char **argv) if (retval == PAM_SUCCESS) { retval = - pam_start ("shadow", pampw->pw_name, &conv, &pamh); + pam_start ("groupdel", pampw->pw_name, &conv, &pamh); } if (retval == PAM_SUCCESS) { @@ -328,12 +333,7 @@ int main (int argc, char **argv) } #endif /* USE_PAM */ - if (argc != 2) - usage (); - - group_name = argv[1]; - - OPENLOG (Prog); + OPENLOG ("groupdel"); #ifdef SHADOWGRP is_shadow_grp = sgr_file_present (); diff -uNrp shadow-4.0.4.1/src/groupmod.c shadow-4.0.4.1.owl-pam-auth/src/groupmod.c --- shadow-4.0.4.1/src/groupmod.c 2003-06-19 18:11:01 +0000 +++ shadow-4.0.4.1.owl-pam-auth/src/groupmod.c 2004-02-28 23:16:45 +0000 @@ -490,6 +490,8 @@ int main (int argc, char **argv) bindtextdomain (PACKAGE, LOCALEDIR); textdomain (PACKAGE); + process_flags(argc, argv); + #ifdef USE_PAM retval = PAM_SUCCESS; @@ -500,7 +502,7 @@ int main (int argc, char **argv) if (retval == PAM_SUCCESS) { retval = - pam_start ("shadow", pampw->pw_name, &conv, &pamh); + pam_start ("groupmod", pampw->pw_name, &conv, &pamh); } if (retval == PAM_SUCCESS) { @@ -524,7 +526,7 @@ int main (int argc, char **argv) } #endif /* USE_PAM */ - OPENLOG (Prog); + OPENLOG ("groupmod"); #ifdef SHADOWGRP is_shadow_grp = sgr_file_present (); @@ -541,7 +543,6 @@ int main (int argc, char **argv) sg_dbm_mode = O_RDWR; #endif /* SHADOWGRP */ #endif /* NDBM */ - process_flags (argc, argv); /* * Start with a quick check to see if the group exists. diff -uNrp shadow-4.0.4.1/src/grpck.c shadow-4.0.4.1.owl-pam-auth/src/grpck.c --- shadow-4.0.4.1/src/grpck.c 2002-01-05 15:41:43 +0000 +++ shadow-4.0.4.1.owl-pam-auth/src/grpck.c 2004-02-28 23:16:45 +0000 @@ -166,7 +166,7 @@ int main (int argc, char **argv) bindtextdomain (PACKAGE, LOCALEDIR); textdomain (PACKAGE); - OPENLOG (Prog); + OPENLOG ("grpck"); /* * Parse the command line arguments diff -uNrp shadow-4.0.4.1/src/logoutd.c shadow-4.0.4.1.owl-pam-auth/src/logoutd.c --- shadow-4.0.4.1/src/logoutd.c 2003-06-19 18:11:01 +0000 +++ shadow-4.0.4.1.owl-pam-auth/src/logoutd.c 2004-02-28 23:16:45 +0000 @@ -184,7 +184,7 @@ int main (int argc, char **argv) Prog = Basename (argv[0]); - OPENLOG (Prog); + OPENLOG ("logoutd"); /* * Scan the utmpx/utmp file once per minute looking for users that diff -uNrp shadow-4.0.4.1/src/newusers.c shadow-4.0.4.1.owl-pam-auth/src/newusers.c --- shadow-4.0.4.1/src/newusers.c 2003-12-17 01:33:29 +0000 +++ shadow-4.0.4.1.owl-pam-auth/src/newusers.c 2004-02-28 23:16:45 +0000 @@ -331,6 +331,9 @@ int main (int argc, char **argv) bindtextdomain (PACKAGE, LOCALEDIR); textdomain (PACKAGE); + if (argc > 1 && argv[1][0] == '-') + usage (); + #ifdef USE_PAM retval = PAM_SUCCESS; @@ -341,7 +344,7 @@ int main (int argc, char **argv) if (retval == PAM_SUCCESS) { retval = - pam_start ("shadow", pampw->pw_name, &conv, &pamh); + pam_start ("newusers", pampw->pw_name, &conv, &pamh); } if (retval == PAM_SUCCESS) { @@ -365,9 +368,6 @@ int main (int argc, char **argv) } #endif /* USE_PAM */ - if (argc > 1 && argv[1][0] == '-') - usage (); - if (argc == 2) { if (!freopen (argv[1], "r", stdin)) { snprintf (buf, sizeof buf, "%s: %s", Prog, diff -uNrp shadow-4.0.4.1/src/pwck.c shadow-4.0.4.1.owl-pam-auth/src/pwck.c --- shadow-4.0.4.1/src/pwck.c 2002-01-10 13:01:28 +0000 +++ shadow-4.0.4.1.owl-pam-auth/src/pwck.c 2004-02-28 23:16:45 +0000 @@ -148,7 +148,7 @@ int main (int argc, char **argv) bindtextdomain (PACKAGE, LOCALEDIR); textdomain (PACKAGE); - OPENLOG (Prog); + OPENLOG ("pwsk"); /* * Parse the command line arguments diff -uNrp shadow-4.0.4.1/src/useradd.c shadow-4.0.4.1.owl-pam-auth/src/useradd.c --- shadow-4.0.4.1/src/useradd.c 2004-01-14 14:21:28 +0000 +++ shadow-4.0.4.1.owl-pam-auth/src/useradd.c 2004-02-28 23:16:45 +0000 @@ -1538,19 +1538,33 @@ int main (int argc, char **argv) struct passwd *pampw; int retval; #endif + /* * Get my name so that I can use it to report errors. */ - sys_ngroups = sysconf (_SC_NGROUPS_MAX); - user_groups = malloc ((1 + sys_ngroups) * sizeof (char *)); - user_groups[0] = (char *) 0; Prog = Basename (argv[0]); setlocale (LC_ALL, ""); bindtextdomain (PACKAGE, LOCALEDIR); textdomain (PACKAGE); + OPENLOG("useradd"); + + sys_ngroups = sysconf(_SC_NGROUPS_MAX); + user_groups = malloc((1 + sys_ngroups) * sizeof(char *)); + +#ifdef SHADOWPWD + is_shadow_pwd = spw_file_present(); +#endif +#ifdef SHADOWGRP + is_shadow_grp = sgr_file_present(); +#endif + + get_defaults(); + + process_flags(argc, argv); + #ifdef USE_PAM retval = PAM_SUCCESS; @@ -1583,16 +1597,9 @@ int main (int argc, char **argv) Prog); exit (1); } -#endif /* USE_PAM */ - - OPENLOG (Prog); -#ifdef SHADOWPWD - is_shadow_pwd = spw_file_present (); -#endif -#ifdef SHADOWGRP - is_shadow_grp = sgr_file_present (); -#endif + OPENLOG("useradd"); +#endif /* USE_PAM */ /* * The open routines for the NDBM files don't use read-write @@ -1609,9 +1616,6 @@ int main (int argc, char **argv) sg_dbm_mode = O_RDWR; #endif #endif - get_defaults (); - - process_flags (argc, argv); /* * See if we are messing with the defaults file, or creating diff -uNrp shadow-4.0.4.1/src/userdel.c shadow-4.0.4.1.owl-pam-auth/src/userdel.c --- shadow-4.0.4.1/src/userdel.c 2003-12-17 09:43:30 +0000 +++ shadow-4.0.4.1.owl-pam-auth/src/userdel.c 2004-02-28 23:16:45 +0000 @@ -629,6 +629,23 @@ int main (int argc, char **argv) setlocale (LC_ALL, ""); bindtextdomain (PACKAGE, LOCALEDIR); textdomain (PACKAGE); + + while ((arg = getopt (argc, argv, "fr")) != EOF) { + switch (arg) { + case 'f': /* force remove even if not owned by user */ + fflg++; + break; + case 'r': /* remove home dir and mailbox */ + rflg++; + break; + default: + usage (); + } + } + + if (optind + 1 != argc) + usage (); + #ifdef USE_PAM retval = PAM_SUCCESS; pampw = getpwuid (getuid ()); @@ -637,7 +654,7 @@ int main (int argc, char **argv) } if (retval == PAM_SUCCESS) - retval = pam_start ("shadow", pampw->pw_name, &conv, + retval = pam_start ("userdel", pampw->pw_name, &conv, &pamh); if (retval == PAM_SUCCESS) { @@ -659,7 +676,8 @@ int main (int argc, char **argv) } #endif /* USE_PAM */ - OPENLOG (Prog); + OPENLOG ("userdel"); + #ifdef SHADOWPWD is_shadow_pwd = spw_file_present (); #endif @@ -680,21 +698,6 @@ int main (int argc, char **argv) sg_dbm_mode = O_RDWR; #endif #endif - while ((arg = getopt (argc, argv, "fr")) != EOF) { - switch (arg) { - case 'f': /* force remove even if not owned by user */ - fflg++; - break; - case 'r': /* remove home dir and mailbox */ - rflg++; - break; - default: - usage (); - } - } - - if (optind + 1 != argc) - usage (); /* * Start with a quick check to see if the user exists. */ diff -uNrp shadow-4.0.4.1/src/usermod.c shadow-4.0.4.1.owl-pam-auth/src/usermod.c --- shadow-4.0.4.1/src/usermod.c 2003-06-30 13:17:51 +0000 +++ shadow-4.0.4.1.owl-pam-auth/src/usermod.c 2004-02-28 23:16:45 +0000 @@ -1370,9 +1370,6 @@ int main (int argc, char **argv) int retval; #endif - sys_ngroups = sysconf (_SC_NGROUPS_MAX); - user_groups = malloc ((1 + sys_ngroups) * sizeof (char *)); - user_groups[0] = (char *) 0; /* * Get my name so that I can use it to report errors. */ @@ -1382,6 +1379,21 @@ int main (int argc, char **argv) bindtextdomain (PACKAGE, LOCALEDIR); textdomain (PACKAGE); + sys_ngroups = sysconf (_SC_NGROUPS_MAX); + user_groups = malloc ((1 + sys_ngroups) * sizeof (char *)); + user_groups[0] = (char *) 0; + + OPENLOG("usermod"); + +#ifdef SHADOWPWD + is_shadow_pwd = spw_file_present (); +#endif +#ifdef SHADOWGRP + is_shadow_grp = sgr_file_present (); +#endif + + process_flags (argc, argv); + #ifdef USE_PAM retval = PAM_SUCCESS; @@ -1392,7 +1404,7 @@ int main (int argc, char **argv) if (retval == PAM_SUCCESS) { retval = - pam_start ("shadow", pampw->pw_name, &conv, &pamh); + pam_start ("usermod", pampw->pw_name, &conv, &pamh); } if (retval == PAM_SUCCESS) { @@ -1414,16 +1426,9 @@ int main (int argc, char **argv) Prog); exit (1); } -#endif /* USE_PAM */ - OPENLOG (Prog); - -#ifdef SHADOWPWD - is_shadow_pwd = spw_file_present (); -#endif -#ifdef SHADOWGRP - is_shadow_grp = sgr_file_present (); -#endif + OPENLOG ("usermod"); +#endif /* USE_PAM */ /* * The open routines for the NDBM files don't use read-write as the @@ -1440,7 +1445,6 @@ int main (int argc, char **argv) sg_dbm_mode = O_RDWR; #endif #endif /* NDBM */ - process_flags (argc, argv); /* * Do the hard stuff - open the files, change the user entries,