+2013-08-13 Nicolas François <nicolas.francois@centraliens.net>
+
+ * src/su.c: Terminate the child (if needed) before closing the PAM
+ session. This is probably more correct, and avoid reporting
+ termination from signals possibly sent by PAM modules (e.g. former
+ versions of pam_systemd). Debian#670132
+
2013-08-13 Nicolas François <nicolas.francois@centraliens.net>
* src/su.c: When a SIGTSTP is caught, reset caught to 0. There is
(void) fputs (_("Session terminated, terminating shell..."),
stderr);
(void) kill (-pid_child, caught);
+
+ (void) signal (SIGALRM, kill_child);
+ (void) alarm (2);
+
+ (void) wait (&status);
+ (void) fputs (_(" ...terminated.\n"), stderr);
}
ret = pam_close_session (pamh, 0);
(void) pam_setcred (pamh, PAM_DELETE_CRED);
(void) pam_end (pamh, PAM_SUCCESS);
- if (0 != caught) {
- (void) signal (SIGALRM, kill_child);
- (void) alarm (2);
-
- (void) wait (&status);
- (void) fputs (_(" ...terminated.\n"), stderr);
- }
-
exit ((0 != WIFEXITED (status)) ? WEXITSTATUS (status)
: WTERMSIG (status) + 128);
/* Only the child returns. See above. */