summaryrefslogtreecommitdiffstats
path: root/usr.bin
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
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')
-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