Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 8 Apr 2003 00:35:31 +1000
From:      Tim Robbins <tjr@FreeBSD.ORG>
To:        FreeBSD-gnats-submit@FreeBSD.org, freebsd-bugs@FreeBSD.org
Subject:   Re: bin/50679: vi invoked from chpass and vipw exits on ^C
Message-ID:  <20030408003531.A94716@dilbert.robbins.dropbear.id.au>
In-Reply-To: <200304071420.h37EKDxJ061860@freefall.freebsd.org>; 07:20:13AM -0700
References:  <20030407141422.3A994C90D@dilbert.robbins.dropbear.id.au> <200304071420.h37EKDxJ061860@freefall.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Possible patch:

Index: pw_util.c
===================================================================
RCS file: /home/ncvs/src/lib/libutil/pw_util.c,v
retrieving revision 1.28
diff -U10 -p -r1.28 pw_util.c
--- pw_util.c	17 Mar 2003 02:12:55 -0000	1.28
+++ pw_util.c	7 Apr 2003 13:41:01 -0000
@@ -315,20 +315,22 @@ pw_edit(int notsetuid)
 			_exit(EXIT_FAILURE);
 		}
 		errno = 0;
 		execl(_PATH_BSHELL, "sh", "-c", editcmd, NULL);
 		free(editcmd);
 		_exit(errno);
 	default:
 		/* parent */
 		break;
 	}
+	setpgid(editpid, editpid);
+	tcsetpgrp(1, editpid);
 	for (;;) {
 		editpid = waitpid(editpid, &pstat, WUNTRACED);
 		if (editpid == -1) {
 			unlink(tempname);
 			return (-1);
 		} else if (WIFSTOPPED(pstat)) {
 			raise(WSTOPSIG(pstat));
 		} else if (WIFEXITED(pstat) && WEXITSTATUS(pstat) == 0) {
 			editpid = -1;
 			break;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030408003531.A94716>