summaryrefslogtreecommitdiffstats
path: root/usr.bin/su
diff options
context:
space:
mode:
authordavidxu <davidxu@FreeBSD.org>2003-11-04 14:51:34 +0000
committerdavidxu <davidxu@FreeBSD.org>2003-11-04 14:51:34 +0000
commitb5882bdf826f86fe99c8ba32265622dcc6139367 (patch)
tree5b7c99ba20aa6b3430bff69bcaa9ce17241827a6 /usr.bin/su
parent9295c1ca712c220aa8e5ae69ed3d287eeb4ea9df (diff)
downloadFreeBSD-src-b5882bdf826f86fe99c8ba32265622dcc6139367.zip
FreeBSD-src-b5882bdf826f86fe99c8ba32265622dcc6139367.tar.gz
Be sure to restore foreground group to parent su before parent su
exits, otherwise shell will be confused and does not set foreground group correctly for next su command. This sounds like a bug in sh.
Diffstat (limited to 'usr.bin/su')
-rw-r--r--usr.bin/su/su.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/usr.bin/su/su.c b/usr.bin/su/su.c
index 8eac299..b70e994 100644
--- a/usr.bin/su/su.c
+++ b/usr.bin/su/su.c
@@ -363,7 +363,7 @@ main(int argc, char *argv[])
sigaction(SIGTTOU, &sa, NULL);
close(fds[0]);
setpgid(child_pid, child_pid);
- tcsetpgrp(1, child_pid);
+ tcsetpgrp(STDERR_FILENO, child_pid);
close(fds[1]);
sigaction(SIGPIPE, &sa_pipe, NULL);
while ((pid = waitpid(child_pid, &statusp, WUNTRACED)) != -1) {
@@ -377,6 +377,7 @@ main(int argc, char *argv[])
}
break;
}
+ tcsetpgrp(STDERR_FILENO, getpgrp());
if (pid == -1)
err(1, "waitpid");
PAM_END();
OpenPOWER on IntegriCloud