- (dtucker) [configure.ac] Bug #536: Test for and work around openpty/

controlling tty problem on Linux (fixes "could not set controlling tty"
   errors).
This commit is contained in:
Darren Tucker committed 2003-08-21 18:23:13 +10:00
1 parent e3cc3c04e3
commit bfad290773
2 files changed
+52 -2

No files matched your search

+4 -1
View File
@@ -16,6 +16,9 @@
invalid cmsg_type on Linux 1.x and 2.0 kernels, privsep should now work.
- (dtucker) [acconfig.h configure.ac sshd.c] STREAMS_PUSH_ACQUIRES_CTTY ->
SSHD_ACQUIRES_CTTY.
- (dtucker) [configure.ac] Bug #536: Test for and work around openpty/
controlling tty problem on Linux (fixes "could not set controlling tty"
errors).
20030429
- (djm) Add back radix.o (used by AFS support), after it went missing from
@@ -1321,4 +1324,4 @@
save auth method before monitor_reset_key_state(); bugzilla bug #284;
ok provos@
$Id: ChangeLog,v 1.2648.2.9 2003/08/21 07:56:29 dtucker Exp $
$Id: ChangeLog,v 1.2648.2.10 2003/08/21 08:23:13 dtucker Exp $
+48 -1
View File
@@ -1,4 +1,4 @@
# $Id: configure.ac,v 1.113.2.4 2003/08/21 07:42:34 dtucker Exp $
# $Id: configure.ac,v 1.113.2.5 2003/08/21 08:23:13 dtucker Exp $
AC_INIT
AC_CONFIG_SRCDIR([ssh.c])
@@ -183,6 +183,7 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16))
*-*-linux*)
no_dev_ptmx=1
check_for_libcrypt_later=1
check_for_openpty_ctty_bug=1
AC_DEFINE(DONT_TRY_OTHER_AF)
AC_DEFINE(PAM_TTY_KLUDGE)
AC_DEFINE(SETPROCTITLE_STRATEGY,PS_USE_CLOBBER_ARGV)
@@ -733,6 +734,52 @@ unlink(template); exit(0);
)
fi
if test ! -z "$check_for_openpty_ctty_bug"; then
AC_MSG_CHECKING(if openpty correctly handles controlling tty)
AC_TRY_RUN(
[
#include <stdio.h>
#include <sys/fcntl.h>
#include <sys/types.h>
#include <sys/wait.h>
int
main()
{
pid_t pid;
int fd, ptyfd, ttyfd, status;
pid = fork();
if (pid < 0) { /* failed */
exit(1);
} else if (pid > 0) { /* parent */
waitpid(pid, &status, 0);
if (WIFEXITED(status))
exit(WEXITSTATUS(status));
else
exit(2);
} else { /* child */
close(0); close(1); close(2);
setsid();
openpty(&ptyfd, &ttyfd, NULL, NULL, NULL);
fd = open("/dev/tty", O_RDWR | O_NOCTTY);
if (fd >= 0)
exit(3); /* Acquired ctty: broken */
else
exit(0); /* Did not acquire ctty: OK */
}
}
],
[
AC_MSG_RESULT(yes)
],
[
AC_MSG_RESULT(no)
AC_DEFINE(SSHD_ACQUIRES_CTTY)
]
)
fi
AC_FUNC_GETPGRP
# Check for PAM libs