Fix a hang introduced in the last commit. Don't close the pty slave

until after we have the controlling tty.
This commit is contained in:
Todd C. Miller
2017-05-05 14:45:35 -06:00
parent 44dc15d02d
commit e18a5c7d74

View File

@@ -408,8 +408,6 @@ exec_cmnd_pty(struct command_details *details, bool foreground, int errfd)
if (io_fds[SFD_STDERR] != io_fds[SFD_SLAVE])
close(io_fds[SFD_STDERR]);
}
if (io_fds[SFD_SLAVE] != -1)
close(io_fds[SFD_SLAVE]);
/* Wait for parent to grant us the tty if we are foreground. */
if (foreground && !ISSET(details->flags, CD_EXEC_BG)) {
@@ -418,6 +416,10 @@ exec_cmnd_pty(struct command_details *details, bool foreground, int errfd)
nanosleep(&ts, NULL);
}
/* Done with the pty slave, don't leak it. */
if (io_fds[SFD_SLAVE] != -1)
close(io_fds[SFD_SLAVE]);
/* Execute command; only returns on error. */
exec_cmnd(details, errfd);