summaryrefslogtreecommitdiffstats
path: root/usr.bin/su
diff options
context:
space:
mode:
authordes <des@FreeBSD.org>2002-05-29 03:32:17 +0000
committerdes <des@FreeBSD.org>2002-05-29 03:32:17 +0000
commit4ba107a215d0849862ae60b64dba207294b09197 (patch)
tree339ac0f4b338289bfe0b9342810fe685a51314f3 /usr.bin/su
parentd3f01d6a67ee1b374130fc186455d6e96298c996 (diff)
downloadFreeBSD-src-4ba107a215d0849862ae60b64dba207294b09197.zip
FreeBSD-src-4ba107a215d0849862ae60b64dba207294b09197.tar.gz
Make our child the leader of its own process group to avoid receiving
signals in its stead. This fixes the dread "zsh exits upon ^C" bug.
Diffstat (limited to 'usr.bin/su')
-rw-r--r--usr.bin/su/su.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/usr.bin/su/su.c b/usr.bin/su/su.c
index ec11570..b90be97 100644
--- a/usr.bin/su/su.c
+++ b/usr.bin/su/su.c
@@ -319,6 +319,8 @@ main(int argc, char *argv[])
child_pid = fork();
switch (child_pid) {
default:
+ setpgid(child_pid, child_pid);
+ tcsetpgrp(1, child_pid);
while ((ret_pid = waitpid(child_pid, &statusp, WUNTRACED)) != -1) {
if (WIFSTOPPED(statusp)) {
child_pgrp = tcgetpgrp(1);
OpenPOWER on IntegriCloud