- (dtucker) [configure.ac] Move openpty/ctty test outside of case statement

and after normal openpty test.
This commit is contained in:
Darren Tucker 2003-08-21 17:58:29 +10:00
parent 8e3653d2f3
commit 70a3d55b4a
2 changed files with 52 additions and 48 deletions

View File

@ -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 $

View File

@ -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 <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)
]
)
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 <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