From 0007a8e4f49e100a51b4db69769e60845c6f411b Mon Sep 17 00:00:00 2001 From: "Anna (navi) Figueiredo Gomes" <navi@vlhl.dev> Date: Thu, 15 Jun 2023 22:37:25 -0300 Subject: rc.c: use a flag instead of environment variables change the lockfile Signed-off-by: Anna (navi) Figueiredo Gomes <navi@vlhl.dev> --- src/openrc-pam/openrc-pam.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'src/openrc-pam') diff --git a/src/openrc-pam/openrc-pam.c b/src/openrc-pam/openrc-pam.c index 51dafb17..a9b2e36b 100644 --- a/src/openrc-pam/openrc-pam.c +++ b/src/openrc-pam/openrc-pam.c @@ -9,7 +9,7 @@ #include "einfo.h" -static bool exec_openrc(pam_handle_t *pamh, const char *runlevel) { +static bool exec_openrc(pam_handle_t *pamh, const char *runlevel, bool lock) { char *cmd = NULL; const char *username; struct passwd *pw = NULL; @@ -26,7 +26,7 @@ static bool exec_openrc(pam_handle_t *pamh, const char *runlevel) { elog(LOG_INFO, "Executing %s runlevel for user %s", runlevel, username); - xasprintf(&cmd, "openrc --user %s", runlevel); + xasprintf(&cmd, "openrc --user %s %s", lock ? "--lock" : "--unlock", runlevel); switch (fork()) { case 0: setgid(pw->pw_gid); @@ -58,8 +58,7 @@ PAM_EXTERN int pam_sm_open_session(pam_handle_t *pamh, int flags, int argc, cons setenv("EINFO_LOG", "openrc-pam", 1); elog(LOG_INFO, "Opening openrc session"); - setenv("RC_PAM_STARTING", "YES", true); - if (exec_openrc(pamh, runlevel)) { + if (exec_openrc(pamh, runlevel, true)) { elog(LOG_INFO, "Openrc session opened"); unsetenv("RC_PAM_STARTING"); unsetenv("EINFO_LOG"); @@ -79,8 +78,7 @@ PAM_EXTERN int pam_sm_close_session(pam_handle_t *pamh, int flags, int argc, con setenv("EINFO_LOG", "openrc-pam", 1); elog(LOG_INFO, "Closing openrc session"); - setenv("RC_PAM_STOPPING", "YES", true); - if (exec_openrc(pamh, runlevel)) { + if (exec_openrc(pamh, runlevel, false)) { elog(LOG_INFO, "Openrc session closed"); unsetenv("RC_PAM_STOPPING"); unsetenv("EINFO_LOG"); -- cgit v1.2.3