]> git.armaanb.net Git - opendoas.git/commitdiff
pam: check watch child pid
authorDuncaen <mail@duncano.de>
Fri, 6 Apr 2018 16:16:30 +0000 (18:16 +0200)
committerDuncaen <mail@duncano.de>
Fri, 6 Apr 2018 16:16:30 +0000 (18:16 +0200)
pam.c

diff --git a/pam.c b/pam.c
index af038dd5987aae8ac30beb495c9f2f0771d15e5b..3e8fab5946020f9604dc5e218321ce369a67bb75 100644 (file)
--- a/pam.c
+++ b/pam.c
@@ -191,7 +191,7 @@ watchsession(pid_t child)
                status = 1;
 
 close:
-       if (caught_signal) {
+       if (caught_signal && child != (pid_t)-1) {
                fprintf(stderr, "\nSession terminated, killing shell\n");
                kill(child, SIGTERM);
        }
@@ -199,10 +199,12 @@ close:
        pamcleanup(PAM_SUCCESS);
 
        if (caught_signal) {
-               /* kill child */
-               sleep(2);
-               kill(child, SIGKILL);
-               fprintf(stderr, " ...killed.\n");
+               if (child != (pid_t)-1) {
+                       /* kill child */
+                       sleep(2);
+                       kill(child, SIGKILL);
+                       fprintf(stderr, " ...killed.\n");
+               }
 
                /* unblock cached signal and resend */
                sigaction(SIGTERM, &oldact, NULL);