diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | configure.ac | 96 |
2 files changed, 52 insertions, 48 deletions
@@ -6,6 +6,8 @@ | |||
6 | - (dtucker) [defines.h] Put CMSG_DATA, CMSG_FIRSTHDR with other CMSG* macros, | 6 | - (dtucker) [defines.h] Put CMSG_DATA, CMSG_FIRSTHDR with other CMSG* macros, |
7 | change CMSG_DATA to use __CMSG_ALIGN (and thus work properly), reformat for | 7 | change CMSG_DATA to use __CMSG_ALIGN (and thus work properly), reformat for |
8 | consistency. | 8 | consistency. |
9 | - (dtucker) [configure.ac] Move openpty/ctty test outside of case statement | ||
10 | and after normal openpty test. | ||
9 | 11 | ||
10 | 20030813 | 12 | 20030813 |
11 | - (dtucker) [session.c] Remove #ifdef TIOCSBRK kludge. | 13 | - (dtucker) [session.c] Remove #ifdef TIOCSBRK kludge. |
@@ -843,4 +845,4 @@ | |||
843 | - Fix sshd BindAddress and -b options for systems using fake-getaddrinfo. | 845 | - Fix sshd BindAddress and -b options for systems using fake-getaddrinfo. |
844 | Report from murple@murple.net, diagnosis from dtucker@zip.com.au | 846 | Report from murple@murple.net, diagnosis from dtucker@zip.com.au |
845 | 847 | ||
846 | $Id: ChangeLog,v 1.2895 2003/08/21 06:49:41 dtucker Exp $ | 848 | $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 @@ | |||
1 | # $Id: configure.ac,v 1.139 2003/08/13 10:48:07 dtucker Exp $ | 1 | # $Id: configure.ac,v 1.140 2003/08/21 07:58:29 dtucker Exp $ |
2 | 2 | ||
3 | AC_INIT | 3 | AC_INIT |
4 | AC_CONFIG_SRCDIR([ssh.c]) | 4 | AC_CONFIG_SRCDIR([ssh.c]) |
@@ -195,56 +195,11 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16)) | |||
195 | *-*-linux*) | 195 | *-*-linux*) |
196 | no_dev_ptmx=1 | 196 | no_dev_ptmx=1 |
197 | check_for_libcrypt_later=1 | 197 | check_for_libcrypt_later=1 |
198 | check_for_openpty_ctty_bug=1 | ||
198 | AC_DEFINE(DONT_TRY_OTHER_AF) | 199 | AC_DEFINE(DONT_TRY_OTHER_AF) |
199 | AC_DEFINE(PAM_TTY_KLUDGE) | 200 | AC_DEFINE(PAM_TTY_KLUDGE) |
200 | AC_DEFINE(SPT_TYPE,SPT_REUSEARGV) | 201 | AC_DEFINE(SPT_TYPE,SPT_REUSEARGV) |
201 | inet6_default_4in6=yes | 202 | inet6_default_4in6=yes |
202 | # openpty can be in libutil, needed for controlling tty test | ||
203 | AC_SEARCH_LIBS(openpty, util) | ||
204 | # make sure that openpty does not reacquire controlling terminal | ||
205 | AC_MSG_CHECKING(if openpty correctly handles controlling tty) | ||
206 | AC_TRY_RUN( | ||
207 | [ | ||
208 | #include <stdio.h> | ||
209 | #include <sys/fcntl.h> | ||
210 | #include <sys/types.h> | ||
211 | #include <sys/wait.h> | ||
212 | |||
213 | int | ||
214 | main() | ||
215 | { | ||
216 | pid_t pid; | ||
217 | int fd, ptyfd, ttyfd, status; | ||
218 | |||
219 | pid = fork(); | ||
220 | if (pid < 0) { /* failed */ | ||
221 | exit(1); | ||
222 | } else if (pid > 0) { /* parent */ | ||
223 | waitpid(pid, &status, 0); | ||
224 | if (WIFEXITED(status)) | ||
225 | exit(WEXITSTATUS(status)); | ||
226 | else | ||
227 | exit(2); | ||
228 | } else { /* child */ | ||
229 | close(0); close(1); close(2); | ||
230 | setsid(); | ||
231 | openpty(&ptyfd, &ttyfd, NULL, NULL, NULL); | ||
232 | fd = open("/dev/tty", O_RDWR | O_NOCTTY); | ||
233 | if (fd >= 0) | ||
234 | exit(3); /* Acquired ctty: broken */ | ||
235 | else | ||
236 | exit(0); /* Did not acquire ctty: OK */ | ||
237 | } | ||
238 | } | ||
239 | ], | ||
240 | [ | ||
241 | AC_MSG_RESULT(yes) | ||
242 | ], | ||
243 | [ | ||
244 | AC_MSG_RESULT(no) | ||
245 | AC_DEFINE(SSHD_ACQUIRES_CTTY) | ||
246 | ] | ||
247 | ) | ||
248 | case `uname -r` in | 203 | case `uname -r` in |
249 | 1.*|2.0.*) | 204 | 1.*|2.0.*) |
250 | AC_DEFINE(BROKEN_CMSG_TYPE) | 205 | AC_DEFINE(BROKEN_CMSG_TYPE) |
@@ -805,6 +760,53 @@ unlink(template); exit(0); | |||
805 | ) | 760 | ) |
806 | fi | 761 | fi |
807 | 762 | ||
763 | dnl make sure that openpty does not reacquire controlling terminal | ||
764 | if test ! -z "$check_for_openpty_ctty_bug"; then | ||
765 | AC_MSG_CHECKING(if openpty correctly handles controlling tty) | ||
766 | AC_TRY_RUN( | ||
767 | [ | ||
768 | #include <stdio.h> | ||
769 | #include <sys/fcntl.h> | ||
770 | #include <sys/types.h> | ||
771 | #include <sys/wait.h> | ||
772 | |||
773 | int | ||
774 | main() | ||
775 | { | ||
776 | pid_t pid; | ||
777 | int fd, ptyfd, ttyfd, status; | ||
778 | |||
779 | pid = fork(); | ||
780 | if (pid < 0) { /* failed */ | ||
781 | exit(1); | ||
782 | } else if (pid > 0) { /* parent */ | ||
783 | waitpid(pid, &status, 0); | ||
784 | if (WIFEXITED(status)) | ||
785 | exit(WEXITSTATUS(status)); | ||
786 | else | ||
787 | exit(2); | ||
788 | } else { /* child */ | ||
789 | close(0); close(1); close(2); | ||
790 | setsid(); | ||
791 | openpty(&ptyfd, &ttyfd, NULL, NULL, NULL); | ||
792 | fd = open("/dev/tty", O_RDWR | O_NOCTTY); | ||
793 | if (fd >= 0) | ||
794 | exit(3); /* Acquired ctty: broken */ | ||
795 | else | ||
796 | exit(0); /* Did not acquire ctty: OK */ | ||
797 | } | ||
798 | } | ||
799 | ], | ||
800 | [ | ||
801 | AC_MSG_RESULT(yes) | ||
802 | ], | ||
803 | [ | ||
804 | AC_MSG_RESULT(no) | ||
805 | AC_DEFINE(SSHD_ACQUIRES_CTTY) | ||
806 | ] | ||
807 | ) | ||
808 | fi | ||
809 | |||
808 | AC_FUNC_GETPGRP | 810 | AC_FUNC_GETPGRP |
809 | 811 | ||
810 | # Check for PAM libs | 812 | # Check for PAM libs |