summaryrefslogtreecommitdiffstats
path: root/login-utils/su-common.c
diff options
context:
space:
mode:
authorKarel Zak2016-11-09 14:15:31 +0100
committerKarel Zak2017-09-18 11:48:56 +0200
commita4440cd1f1b818e2365b9f6c8485cb556fde40cd (patch)
tree398738fb3f7b3da750f203bb9affbd9804e1b1d8 /login-utils/su-common.c
parentsu: rename evaluate_uid() (diff)
downloadkernel-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.c21
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. */