libutil: add O_NOCTTY to old pty open code

. fixes e.g. ssh sessions not getting their own
	  controlling tty (causing ^C getting broadcast to too
	  many processes)
	. previously (before -lutil) handled like this by bsd-openpty.c in
	  openssh
	. reported by Andy Kosela, debugged by ThomasV
This commit is contained in:
Ben Gras 2012-03-26 17:00:45 +02:00
parent 9cca9d7566
commit 4f78dfcabc

View file

@ -105,7 +105,7 @@ openpty(int *amaster, int *aslave, char *name, struct termios *term,
for (cp = cp2 = TTY_OLD_SUFFIX TTY_NEW_SUFFIX; *cp2; cp2++) { for (cp = cp2 = TTY_OLD_SUFFIX TTY_NEW_SUFFIX; *cp2; cp2++) {
line[5] = 'p'; line[5] = 'p';
line[9] = *cp2; line[9] = *cp2;
if ((master = open(line, O_RDWR, 0)) == -1) { if ((master = open(line, O_RDWR | O_NOCTTY, 0)) == -1) {
if (errno != ENOENT) if (errno != ENOENT)
continue; /* busy */ continue; /* busy */
if ((size_t)(cp2 - cp + 1) < sizeof(TTY_OLD_SUFFIX)) if ((size_t)(cp2 - cp + 1) < sizeof(TTY_OLD_SUFFIX))
@ -120,7 +120,7 @@ openpty(int *amaster, int *aslave, char *name, struct termios *term,
#ifndef __minix #ifndef __minix
revoke(line) == 0 && revoke(line) == 0 &&
#endif #endif
(slave = open(line, O_RDWR, 0)) != -1) { (slave = open(line, O_RDWR | O_NOCTTY, 0)) != -1) {
#ifndef __minix #ifndef __minix
gotit: gotit:
#endif #endif