diff options
author | Sami Kerola | 2011-11-13 18:18:33 +0100 |
---|---|---|
committer | Sami Kerola | 2011-11-29 17:57:39 +0100 |
commit | 57b35f3ba7db5d5b7cec04312c7e9055a74b0406 (patch) | |
tree | 8bdc1b74d82337e22db820a40f6892c1150eb1c3 /login-utils/chsh.c | |
parent | chsh: build bug: do not override config.h definition (diff) | |
download | kernel-qcow2-util-linux-57b35f3ba7db5d5b7cec04312c7e9055a74b0406.tar.gz kernel-qcow2-util-linux-57b35f3ba7db5d5b7cec04312c7e9055a74b0406.tar.xz kernel-qcow2-util-linux-57b35f3ba7db5d5b7cec04312c7e9055a74b0406.zip |
chfn, chsh: new file pamfail.h for error printing
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
Diffstat (limited to 'login-utils/chsh.c')
-rw-r--r-- | login-utils/chsh.c | 30 |
1 files changed, 9 insertions, 21 deletions
diff --git a/login-utils/chsh.c b/login-utils/chsh.c index bca161fb3..f6a5c9fa1 100644 --- a/login-utils/chsh.c +++ b/login-utils/chsh.c @@ -33,6 +33,7 @@ #include <getopt.h> #include <stdbool.h> +#include "pamfail.h" #include "c.h" #include "islocal.h" #include "setpwnam.h" @@ -41,21 +42,6 @@ #include "pathnames.h" #include "xalloc.h" -#ifdef REQUIRE_PASSWORD -#include <security/pam_appl.h> -#include <security/pam_misc.h> - -#define PAM_FAIL_CHECK(_ph, _rc) \ - do { \ - if ((_rc) != PAM_SUCCESS) { \ - fprintf(stderr, "\n%s\n", pam_strerror((_ph), (_rc))); \ - pam_end((_ph), (_rc)); \ - exit(EXIT_FAILURE); \ - } \ - } while(0) - -#endif /* REQUIRE_PASSWORD */ - #ifdef HAVE_LIBSELINUX #include <selinux/selinux.h> #include <selinux/av_permissions.h> @@ -163,20 +149,22 @@ main (int argc, char *argv[]) { int retcode; retcode = pam_start("chsh", pw->pw_name, &conv, &pamh); - if(retcode != PAM_SUCCESS) - errx(EXIT_FAILURE, _("PAM failure, aborting: %s"), - pam_strerror(pamh, retcode)); + if (pam_fail_check(pamh, retcode)) + exit(EXIT_FAILURE); retcode = pam_authenticate(pamh, 0); - PAM_FAIL_CHECK(pamh, retcode); + if (pam_fail_check(pamh, retcode)) + exit(EXIT_FAILURE); retcode = pam_acct_mgmt(pamh, 0); if (retcode == PAM_NEW_AUTHTOK_REQD) retcode = pam_chauthtok(pamh, PAM_CHANGE_EXPIRED_AUTHTOK); - PAM_FAIL_CHECK(pamh, retcode); + if (pam_fail_check(pamh, retcode)) + exit(EXIT_FAILURE); retcode = pam_setcred(pamh, 0); - PAM_FAIL_CHECK(pamh, retcode); + if (pam_fail_check(pamh, retcode)) + exit(EXIT_FAILURE); pam_end(pamh, 0); /* no need to establish a session; this isn't a session-oriented |