summaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
authorDarren Tucker <dtucker@zip.com.au>2003-05-10 17:05:46 +1000
committerDarren Tucker <dtucker@zip.com.au>2003-05-10 17:05:46 +1000
commitc437cda328b4733b59a7ed028b72e6b7f58f86e6 (patch)
tree09a09eb5692bd287c9ac882e16ea22c8de59c88b /configure.ac
parente8831091c390dcfd6b6cbc299e26192697b392bf (diff)
- (dtucker) Bug #536: Test for and work around openpty/controlling tty
problem on Linux (fixes "could not set controlling tty" errors). Also renames STREAMS_PUSH_ACQUIRES_CTTY to the more generic SSHD_ACQUIRES_CTTY and moves the Solaris-specific comments to configure.ac.
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac58
1 files changed, 50 insertions, 8 deletions
diff --git a/configure.ac b/configure.ac
index d6726eaab..dee852854 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,4 +1,4 @@
1# $Id: configure.ac,v 1.115 2003/05/02 10:48:21 dtucker Exp $ 1# $Id: configure.ac,v 1.116 2003/05/10 07:05:46 dtucker Exp $
2 2
3AC_INIT 3AC_INIT
4AC_CONFIG_SRCDIR([ssh.c]) 4AC_CONFIG_SRCDIR([ssh.c])
@@ -188,15 +188,56 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16))
188 AC_DEFINE(SETPROCTITLE_STRATEGY,PS_USE_CLOBBER_ARGV) 188 AC_DEFINE(SETPROCTITLE_STRATEGY,PS_USE_CLOBBER_ARGV)
189 AC_DEFINE(SETPROCTITLE_PS_PADDING, '\0') 189 AC_DEFINE(SETPROCTITLE_PS_PADDING, '\0')
190 inet6_default_4in6=yes 190 inet6_default_4in6=yes
191 AC_MSG_CHECKING(for broken cmsg_type) 191 # openpty can be in libutil, needed for controlling tty test
192 AC_SEARCH_LIBS(openpty, util)
193 # make sure that openpty does not reacquire controlling terminal
194 AC_MSG_CHECKING(if openpty correctly handles controlling tty)
195 AC_TRY_RUN(
196 [
197#include <stdio.h>
198#include <sys/fcntl.h>
199#include <sys/types.h>
200#include <sys/wait.h>
201
202int
203main()
204{
205 pid_t pid;
206 int fd, ptyfd, ttyfd, status;
207
208 pid = fork();
209 if (pid < 0) { /* failed */
210 exit(1);
211 } else if (pid > 0) { /* parent */
212 waitpid(pid, &status, 0);
213 if (WIFEXITED(status))
214 exit(WEXITSTATUS(status));
215 else
216 exit(2);
217 } else { /* child */
218 close(0); close(1); close(2);
219 setsid();
220 openpty(&ptyfd, &ttyfd, NULL, NULL, NULL);
221 fd = open("/dev/tty", O_RDWR | O_NOCTTY);
222 if (fd >= 0)
223 exit(3); /* Acquired ctty: broken */
224 else
225 exit(0); /* Did not acquire ctty: OK */
226 }
227}
228 ],
229 [
230 AC_MSG_RESULT(yes)
231 ],
232 [
233 AC_MSG_RESULT(no)
234 AC_DEFINE(SSHD_ACQUIRES_CTTY)
235 ]
236 )
192 case `uname -r` in 237 case `uname -r` in
193 2.0.*) 238 1.*|2.0.*)
194 AC_MSG_RESULT(yes)
195 AC_DEFINE(BROKEN_CMSG_TYPE) 239 AC_DEFINE(BROKEN_CMSG_TYPE)
196 ;; 240 ;;
197 *)
198 AC_MSG_RESULT(no)
199 ;;
200 esac 241 esac
201 ;; 242 ;;
202mips-sony-bsd|mips-sony-newsos4) 243mips-sony-bsd|mips-sony-newsos4)
@@ -230,7 +271,8 @@ mips-sony-bsd|mips-sony-newsos4)
230 AC_DEFINE(LOGIN_NEEDS_UTMPX) 271 AC_DEFINE(LOGIN_NEEDS_UTMPX)
231 AC_DEFINE(LOGIN_NEEDS_TERM) 272 AC_DEFINE(LOGIN_NEEDS_TERM)
232 AC_DEFINE(PAM_TTY_KLUDGE) 273 AC_DEFINE(PAM_TTY_KLUDGE)
233 AC_DEFINE(STREAMS_PUSH_ACQUIRES_CTTY) 274 # Pushing STREAMS modules will cause sshd to acquire a controlling tty.
275 AC_DEFINE(SSHD_ACQUIRES_CTTY)
234 # hardwire lastlog location (can't detect it on some versions) 276 # hardwire lastlog location (can't detect it on some versions)
235 conf_lastlog_location="/var/adm/lastlog" 277 conf_lastlog_location="/var/adm/lastlog"
236 AC_MSG_CHECKING(for obsolete utmp and wtmp in solaris2.x) 278 AC_MSG_CHECKING(for obsolete utmp and wtmp in solaris2.x)