diff options
author | Anna (navi) Figueiredo Gomes <navi@vlhl.dev> | 2023-06-15 22:37:25 -0300 |
---|---|---|
committer | Anna (navi) Figueiredo Gomes <navi@vlhl.dev> | 2023-10-19 10:56:54 +0200 |
commit | 0007a8e4f49e100a51b4db69769e60845c6f411b (patch) | |
tree | e173c5bed5fde346d6de1fe2c89c04e4f7b1c349 /src/openrc-pam | |
parent | 0c69c923f7daaeaf327a063b31135e51d696d391 (diff) | |
download | openrc-0007a8e4f49e100a51b4db69769e60845c6f411b.tar.xz |
rc.c: use a flag instead of environment variables change the lockfile
Signed-off-by: Anna (navi) Figueiredo Gomes <navi@vlhl.dev>
Diffstat (limited to 'src/openrc-pam')
-rw-r--r-- | src/openrc-pam/openrc-pam.c | 10 |
1 files changed, 4 insertions, 6 deletions
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"); |