diff options
author | Ted Gould <ted@gould.cx> | 2012-08-20 15:00:03 -0500 |
---|---|---|
committer | Ted Gould <ted@gould.cx> | 2012-08-20 15:00:03 -0500 |
commit | a47fe9c63768866a581ded2088d2b6ae29a73018 (patch) | |
tree | 38d60e7d6aa63cd31c1e87808a4aa2f82f2921d2 /src | |
parent | f089f99d613078f8cbc03a5b7291497628aaec65 (diff) | |
download | libpam-x2go-a47fe9c63768866a581ded2088d2b6ae29a73018.tar.gz libpam-x2go-a47fe9c63768866a581ded2088d2b6ae29a73018.tar.bz2 libpam-x2go-a47fe9c63768866a581ded2088d2b6ae29a73018.zip |
First make sure we clean up
Diffstat (limited to 'src')
-rw-r--r-- | src/pam-freerdp.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/pam-freerdp.c b/src/pam-freerdp.c index 189c82f..1307990 100644 --- a/src/pam-freerdp.c +++ b/src/pam-freerdp.c @@ -176,13 +176,19 @@ done: return retval; } +pid_t session_pid = 0; /* Open Session. Here we need to fork a little process so that we can give the credentials to the session itself so that it can startup the xfreerdp viewer for the login */ PAM_EXTERN int pam_sm_open_session (pam_handle_t *pamh, int flags, int argc, const char **argv) { - return PAM_IGNORE; + if (session_pid != 0) { + kill(session_pid, SIGKILL); + session_pid = 0; + } + + return PAM_IGNORE; } /* Close Session. Make sure our little guy has died so he doesn't become @@ -190,6 +196,11 @@ pam_sm_open_session (pam_handle_t *pamh, int flags, int argc, const char **argv) PAM_EXTERN int pam_sm_close_session (pam_handle_t *pamh, int flags, int argc, const char **argv) { + if (session_pid != 0) { + kill(session_pid, SIGKILL); + session_pid = 0; + } + return PAM_IGNORE; } |