From 70a3d55b4a50c624557b81a5dece2727cd01cff1 Mon Sep 17 00:00:00 2001 From: Darren Tucker Date: Thu, 21 Aug 2003 17:58:29 +1000 Subject: [PATCH] - (dtucker) [configure.ac] Move openpty/ctty test outside of case statement and after normal openpty test. --- ChangeLog | 4 ++- configure.ac | 96 +++++++++++++++++++++++++++------------------------- 2 files changed, 52 insertions(+), 48 deletions(-) diff --git a/ChangeLog b/ChangeLog index cf88cca4c..081b07907 100644 --- a/ChangeLog +++ b/ChangeLog @@ -6,6 +6,8 @@ - (dtucker) [defines.h] Put CMSG_DATA, CMSG_FIRSTHDR with other CMSG* macros, change CMSG_DATA to use __CMSG_ALIGN (and thus work properly), reformat for consistency. + - (dtucker) [configure.ac] Move openpty/ctty test outside of case statement + and after normal openpty test. 20030813 - (dtucker) [session.c] Remove #ifdef TIOCSBRK kludge. @@ -843,4 +845,4 @@ - Fix sshd BindAddress and -b options for systems using fake-getaddrinfo. Report from murple@murple.net, diagnosis from dtucker@zip.com.au -$Id: ChangeLog,v 1.2895 2003/08/21 06:49:41 dtucker Exp $ +$Id: ChangeLog,v 1.2896 2003/08/21 07:58:29 dtucker Exp $ diff --git a/configure.ac b/configure.ac index 9644dcaf2..115b80a4c 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -# $Id: configure.ac,v 1.139 2003/08/13 10:48:07 dtucker Exp $ +# $Id: configure.ac,v 1.140 2003/08/21 07:58:29 dtucker Exp $ AC_INIT AC_CONFIG_SRCDIR([ssh.c]) @@ -195,56 +195,11 @@ 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(SPT_TYPE,SPT_REUSEARGV) inet6_default_4in6=yes - # openpty can be in libutil, needed for controlling tty test - AC_SEARCH_LIBS(openpty, util) - # make sure that openpty does not reacquire controlling terminal - AC_MSG_CHECKING(if openpty correctly handles controlling tty) - AC_TRY_RUN( - [ -#include -#include -#include -#include - -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) - ] - ) case `uname -r` in 1.*|2.0.*) AC_DEFINE(BROKEN_CMSG_TYPE) @@ -805,6 +760,53 @@ unlink(template); exit(0); ) fi +dnl make sure that openpty does not reacquire controlling terminal +if test ! -z "$check_for_openpty_ctty_bug"; then + AC_MSG_CHECKING(if openpty correctly handles controlling tty) + AC_TRY_RUN( + [ +#include +#include +#include +#include + +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