Kill the child process group, rather than just the immediate child;
this is needed now that su no longer starts a controlling terminal when not running an interactive shell (closes: Debian#713979)
This commit is contained in:
parent
945eb8f50b
commit
d172cccd07
@ -3,6 +3,11 @@
|
|||||||
* configure.in: Prepare for next point release 4.2.
|
* configure.in: Prepare for next point release 4.2.
|
||||||
* if using the static char* for pw_dir, strdup it so
|
* if using the static char* for pw_dir, strdup it so
|
||||||
pw_free() can be used. (Closes: Debian#691459)
|
pw_free() can be used. (Closes: Debian#691459)
|
||||||
|
* Kill the child process group, rather than just the
|
||||||
|
immediate child; this is needed now that su no
|
||||||
|
longer starts a controlling terminal when not running an
|
||||||
|
interactive shell (closes: Debian#713979)
|
||||||
|
Thansk to Colin Watson for the patch.
|
||||||
|
|
||||||
2012-05-25 Nicolas François <nicolas.francois@centraliens.net>
|
2012-05-25 Nicolas François <nicolas.francois@centraliens.net>
|
||||||
|
|
||||||
|
4
src/su.c
4
src/su.c
@ -181,7 +181,7 @@ static bool iswheel (const char *username)
|
|||||||
static RETSIGTYPE kill_child (int unused(s))
|
static RETSIGTYPE kill_child (int unused(s))
|
||||||
{
|
{
|
||||||
if (0 != pid_child) {
|
if (0 != pid_child) {
|
||||||
(void) kill (pid_child, SIGKILL);
|
(void) kill (-pid_child, SIGKILL);
|
||||||
(void) fputs (_(" ...killed.\n"), stderr);
|
(void) fputs (_(" ...killed.\n"), stderr);
|
||||||
} else {
|
} else {
|
||||||
(void) fputs (_(" ...waiting for child to terminate.\n"),
|
(void) fputs (_(" ...waiting for child to terminate.\n"),
|
||||||
@ -370,7 +370,7 @@ static void prepare_pam_close_session (void)
|
|||||||
(void) fputs ("\n", stderr);
|
(void) fputs ("\n", stderr);
|
||||||
(void) fputs (_("Session terminated, terminating shell..."),
|
(void) fputs (_("Session terminated, terminating shell..."),
|
||||||
stderr);
|
stderr);
|
||||||
(void) kill (pid_child, caught);
|
(void) kill (-pid_child, caught);
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = pam_close_session (pamh, 0);
|
ret = pam_close_session (pamh, 0);
|
||||||
|
Loading…
Reference in New Issue
Block a user