diff options
author | Karel Zak | 2016-11-09 14:15:31 +0100 |
---|---|---|
committer | Karel Zak | 2017-09-18 11:48:56 +0200 |
commit | a4440cd1f1b818e2365b9f6c8485cb556fde40cd (patch) | |
tree | 398738fb3f7b3da750f203bb9affbd9804e1b1d8 /login-utils/su-common.c | |
parent | su: rename evaluate_uid() (diff) | |
download | kernel-qcow2-util-linux-a4440cd1f1b818e2365b9f6c8485cb556fde40cd.tar.gz kernel-qcow2-util-linux-a4440cd1f1b818e2365b9f6c8485cb556fde40cd.tar.xz kernel-qcow2-util-linux-a4440cd1f1b818e2365b9f6c8485cb556fde40cd.zip |
su: move PAM session initialization to separate function
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'login-utils/su-common.c')
-rw-r--r-- | login-utils/su-common.c | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/login-utils/su-common.c b/login-utils/su-common.c index 6f82b3cd0..e004e22cf 100644 --- a/login-utils/su-common.c +++ b/login-utils/su-common.c @@ -268,22 +268,25 @@ static void supam_authenticate(struct su_context *su) } } -static void -create_watching_parent(struct su_context *su) +static void supam_open_session(struct su_context *su) { - pid_t child; - sigset_t ourset; - struct sigaction oldact[3]; - int status = 0; - int rc; + int rc = pam_open_session(su->pamh, 0); - rc = pam_open_session(su->pamh, 0); if (is_pam_failure(rc)) { supam_cleanup(su, rc); errx(EXIT_FAILURE, _("cannot open session: %s"), pam_strerror(su->pamh, rc)); } else su->pam_has_session = 1; +} + + +static void create_watching_parent(struct su_context *su) +{ + pid_t child; + sigset_t ourset; + struct sigaction oldact[3]; + int status = 0; memset(oldact, 0, sizeof(oldact)); @@ -853,6 +856,8 @@ int su_main(int argc, char **argv, int mode) if (!su->simulate_login || command) su->suppress_pam_info = 1; /* don't print PAM info messages */ + supam_open_session(su); + create_watching_parent(su); /* Now we're in the child. */ |