]> andersk Git - openssh.git/blame - configure.ac
- (dtucker) [configure.ac] Bug #854: prepend pwd to relative --with-ssl-dir
[openssh.git] / configure.ac
CommitLineData
eb5d7ff6 1# $Id$
2b983b95 2#
3# Copyright (c) 1999-2004 Damien Miller
4#
5# Permission to use, copy, modify, and distribute this software for any
6# purpose with or without fee is hereby granted, provided that the above
7# copyright notice and this permission notice appear in all copies.
8#
9# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
0b202697 16
bc6f919d 17AC_INIT(OpenSSH, Portable)
98a7c37b 18AC_CONFIG_SRCDIR([ssh.c])
5881cd60 19
20AC_CONFIG_HEADER(config.h)
b14b2ae7 21AC_PROG_CC
a7effaac 22AC_CANONICAL_HOST
cf0c5df5 23AC_C_BIGENDIAN
5881cd60 24
a0391976 25# Checks for programs.
4bbf95fa 26AC_PROG_AWK
4cca272e 27AC_PROG_CPP
5881cd60 28AC_PROG_RANLIB
cf8dd513 29AC_PROG_INSTALL
bee0a37e 30AC_PATH_PROG(AR, ar)
ddd8c95b 31AC_PATH_PROG(CAT, cat)
32AC_PATH_PROG(KILL, kill)
13dd877b 33AC_PATH_PROGS(PERL, perl5 perl)
c3690df3 34AC_PATH_PROG(SED, sed)
a0f84251 35AC_SUBST(PERL)
ad85db64 36AC_PATH_PROG(ENT, ent)
37AC_SUBST(ENT)
6958bd37 38AC_PATH_PROG(TEST_MINUS_S_SH, bash)
39AC_PATH_PROG(TEST_MINUS_S_SH, ksh)
40AC_PATH_PROG(TEST_MINUS_S_SH, sh)
6193497b 41AC_PATH_PROG(SH, sh)
a3245b92 42AC_SUBST(TEST_SHELL,sh)
f498ed15 43
9cefe228 44dnl for buildpkg.sh
45AC_PATH_PROG(PATH_GROUPADD_PROG, groupadd, groupadd,
46 [/usr/sbin${PATH_SEPARATOR}/etc])
47AC_PATH_PROG(PATH_USERADD_PROG, useradd, useradd,
48 [/usr/sbin${PATH_SEPARATOR}/etc])
49AC_CHECK_PROG(MAKE_PACKAGE_SUPPORTED, pkgmk, yes, no)
50
948fd8b9 51# System features
52AC_SYS_LARGEFILE
53
c193d002 54if test -z "$AR" ; then
55 AC_MSG_ERROR([*** 'ar' missing, please install or fix your \$PATH ***])
56fi
57
2e73a022 58# Use LOGIN_PROGRAM from environment if possible
59if test ! -z "$LOGIN_PROGRAM" ; then
60 AC_DEFINE_UNQUOTED(LOGIN_PROGRAM_FALLBACK, "$LOGIN_PROGRAM")
61else
62 # Search for login
63 AC_PATH_PROG(LOGIN_PROGRAM_FALLBACK, login)
64 if test ! -z "$LOGIN_PROGRAM_FALLBACK" ; then
65 AC_DEFINE_UNQUOTED(LOGIN_PROGRAM_FALLBACK, "$LOGIN_PROGRAM_FALLBACK")
66 fi
67fi
68
37656beb 69AC_PATH_PROG(PATH_PASSWD_PROG, passwd)
70if test ! -z "$PATH_PASSWD_PROG" ; then
71 AC_DEFINE_UNQUOTED(_PATH_PASSWD_PROG, "$PATH_PASSWD_PROG")
72fi
73
d423d822 74if test -z "$LD" ; then
75 LD=$CC
76fi
77AC_SUBST(LD)
78
d423d822 79AC_C_INLINE
aff51935 80if test "$GCC" = "yes" || test "$GCC" = "egcs"; then
5ed2bb5b 81 CFLAGS="$CFLAGS -Wall -Wpointer-arith -Wno-uninitialized"
d423d822 82fi
83
e6354014 84AC_ARG_WITH(rpath,
85 [ --without-rpath Disable auto-added -R linker paths],
86 [
87 if test "x$withval" = "xno" ; then
88 need_dash_r=""
89 fi
90 if test "x$withval" = "xyes" ; then
91 need_dash_r=1
92 fi
93 ]
94)
95
a0391976 96# Check for some target-specific stuff
a7effaac 97case "$host" in
9d6b1b96 98*-*-aix*)
aff51935 99 AC_MSG_CHECKING([how to specify blibpath for linker ($LD)])
68ece370 100 if (test -z "$blibpath"); then
0a15d73b 101 blibpath="/usr/lib:/lib"
68ece370 102 fi
103 saved_LDFLAGS="$LDFLAGS"
104 for tryflags in -blibpath: -Wl,-blibpath: -Wl,-rpath, ;do
105 if (test -z "$blibflags"); then
106 LDFLAGS="$saved_LDFLAGS $tryflags$blibpath"
107 AC_TRY_LINK([], [], [blibflags=$tryflags])
108 fi
109 done
110 if (test -z "$blibflags"); then
111 AC_MSG_RESULT(not found)
112 AC_MSG_ERROR([*** must be able to specify blibpath on AIX - check config.log])
113 else
114 AC_MSG_RESULT($blibflags)
bd499f9e 115 fi
68ece370 116 LDFLAGS="$saved_LDFLAGS"
e351e493 117 dnl Check for authenticate. Might be in libs.a on older AIXes
118 AC_CHECK_FUNC(authenticate, [AC_DEFINE(WITH_AIXAUTHENTICATE)],
0764e748 119 [AC_CHECK_LIB(s,authenticate,
e351e493 120 [ AC_DEFINE(WITH_AIXAUTHENTICATE)
0764e748 121 LIBS="$LIBS -ls"
122 ])
123 ])
e351e493 124 dnl Check if loginfailed is declared and takes 4 arguments (AIX >= 5.2)
125 AC_CHECK_DECL(loginfailed,
126 [AC_MSG_CHECKING(if loginfailed takes 4 arguments)
127 AC_TRY_COMPILE(
f58c0e01 128 [#include <usersec.h>],
e351e493 129 [(void)loginfailed("user","host","tty",0);],
130 [AC_MSG_RESULT(yes)
131 AC_DEFINE(AIX_LOGINFAILED_4ARG)],
f58c0e01 132 [AC_MSG_RESULT(no)]
e351e493 133 )],
134 [],
135 [#include <usersec.h>]
136 )
2aa3a16c 137 AC_CHECK_FUNCS(setauthdb)
4c8ef3fb 138 AC_DEFINE(BROKEN_GETADDRINFO)
1352689f 139 AC_DEFINE(BROKEN_REALPATH)
3b8dff69 140 AC_DEFINE(SETEUID_BREAKS_SETUID)
141 AC_DEFINE(BROKEN_SETREUID)
142 AC_DEFINE(BROKEN_SETREGID)
a3cef3ca 143 dnl AIX handles lastlog as part of its login message
144 AC_DEFINE(DISABLE_LASTLOG)
58177c0a 145 AC_DEFINE(LOGIN_NEEDS_UTMPX)
3a2b2b44 146 AC_DEFINE(SPT_TYPE,SPT_REUSEARGV)
9d6b1b96 147 ;;
3c62e7eb 148*-*-cygwin*)
a52997bd 149 check_for_libcrypt_later=1
ffb8d130 150 LIBS="$LIBS /usr/lib/textmode.o"
3c62e7eb 151 AC_DEFINE(HAVE_CYGWIN)
7043a38d 152 AC_DEFINE(USE_PIPES)
3c62e7eb 153 AC_DEFINE(DISABLE_SHADOW)
3c62e7eb 154 AC_DEFINE(IP_TOS_IS_BROKEN)
3d114925 155 AC_DEFINE(NO_X11_UNIX_SOCKETS)
e6f15ed1 156 AC_DEFINE(NO_IPPORT_RESERVED_CONCEPT)
94d8258b 157 AC_DEFINE(DISABLE_FD_PASSING)
246446cd 158 AC_DEFINE(SETGROUPS_NOOP)
3c62e7eb 159 ;;
d6fdb079 160*-*-dgux*)
161 AC_DEFINE(IP_TOS_IS_BROKEN)
0c6a72a5 162 AC_DEFINE(SETEUID_BREAKS_SETUID)
163 AC_DEFINE(BROKEN_SETREUID)
164 AC_DEFINE(BROKEN_SETREGID)
d6fdb079 165 ;;
39c98ef7 166*-*-darwin*)
33e2e066 167 AC_MSG_CHECKING(if we have working getaddrinfo)
168 AC_TRY_RUN([#include <mach-o/dyld.h>
169main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16))
170 exit(0);
171 else
172 exit(1);
173}], [AC_MSG_RESULT(working)],
174 [AC_MSG_RESULT(buggy)
175 AC_DEFINE(BROKEN_GETADDRINFO)],
b27e573d 176 [AC_MSG_RESULT(assume it is working)])
635e0c42 177 AC_DEFINE(SETEUID_BREAKS_SETUID)
178 AC_DEFINE(BROKEN_SETREUID)
179 AC_DEFINE(BROKEN_SETREGID)
ff620033 180 AC_DEFINE_UNQUOTED(BIND_8_COMPAT, 1)
39c98ef7 181 ;;
6e879cb4 182*-*-hpux10.26)
183 if test -z "$GCC"; then
184 CFLAGS="$CFLAGS -Ae"
185 fi
186 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1"
187 IPADDR_IN_DISPLAY=yes
188 AC_DEFINE(HAVE_SECUREWARE)
189 AC_DEFINE(USE_PIPES)
190 AC_DEFINE(LOGIN_NO_ENDOPT)
191 AC_DEFINE(LOGIN_NEEDS_UTMPX)
3e6e3da0 192 AC_DEFINE(LOCKED_PASSWD_STRING, "*")
3a2b2b44 193 AC_DEFINE(SPT_TYPE,SPT_PSTAT)
f75ca46d 194 LIBS="$LIBS -lsec -lsecpw"
195 AC_CHECK_LIB(xnet, t_error, ,AC_MSG_ERROR([*** -lxnet needed on HP-UX - check config.log ***]))
6e879cb4 196 disable_ptmx_check=yes
197 ;;
a7effaac 198*-*-hpux10*)
199 if test -z "$GCC"; then
fc1e8bf4 200 CFLAGS="$CFLAGS -Ae"
a7effaac 201 fi
28564873 202 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1"
44839801 203 IPADDR_IN_DISPLAY=yes
137d7b6c 204 AC_DEFINE(USE_PIPES)
a2572aa7 205 AC_DEFINE(LOGIN_NO_ENDOPT)
206 AC_DEFINE(LOGIN_NEEDS_UTMPX)
3e6e3da0 207 AC_DEFINE(LOCKED_PASSWD_STRING, "*")
3a2b2b44 208 AC_DEFINE(SPT_TYPE,SPT_PSTAT)
f75ca46d 209 LIBS="$LIBS -lsec"
210 AC_CHECK_LIB(xnet, t_error, ,AC_MSG_ERROR([*** -lxnet needed on HP-UX - check config.log ***]))
a7effaac 211 ;;
2b763e31 212*-*-hpux11*)
b8fea62d 213 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1"
44839801 214 IPADDR_IN_DISPLAY=yes
adeebd37 215 AC_DEFINE(PAM_SUN_CODEBASE)
2b10f47a 216 AC_DEFINE(USE_PIPES)
a2572aa7 217 AC_DEFINE(LOGIN_NO_ENDOPT)
218 AC_DEFINE(LOGIN_NEEDS_UTMPX)
764d4113 219 AC_DEFINE(DISABLE_UTMP)
3e6e3da0 220 AC_DEFINE(LOCKED_PASSWD_STRING, "*")
3a2b2b44 221 AC_DEFINE(SPT_TYPE,SPT_PSTAT)
b6610e8f 222 AC_DEFINE(USE_BTMP, 1, [Use btmp to log bad logins])
2fe51906 223 check_for_hpux_broken_getaddrinfo=1
b29fd59f 224 check_for_conflicting_getspnam=1
f75ca46d 225 LIBS="$LIBS -lsec"
226 AC_CHECK_LIB(xnet, t_error, ,AC_MSG_ERROR([*** -lxnet needed on HP-UX - check config.log ***]))
2b763e31 227 ;;
d94aa2ae 228*-*-irix5*)
6ac7829a 229 PATH="$PATH:/usr/etc"
416ed5a7 230 AC_DEFINE(BROKEN_INET_NTOA)
cb433561 231 AC_DEFINE(SETEUID_BREAKS_SETUID)
232 AC_DEFINE(BROKEN_SETREUID)
233 AC_DEFINE(BROKEN_SETREGID)
0e8f4eba 234 AC_DEFINE(WITH_ABBREV_NO_TTY)
3e6e3da0 235 AC_DEFINE(LOCKED_PASSWD_STRING, "*LK*")
b9795b89 236 ;;
237*-*-irix6*)
6ac7829a 238 PATH="$PATH:/usr/etc"
3206bb3b 239 AC_DEFINE(WITH_IRIX_ARRAY)
240 AC_DEFINE(WITH_IRIX_PROJECT)
241 AC_DEFINE(WITH_IRIX_AUDIT)
b5171f93 242 AC_CHECK_FUNC(jlimit_startjob, [AC_DEFINE(WITH_IRIX_JOBS)])
416ed5a7 243 AC_DEFINE(BROKEN_INET_NTOA)
412c0eaa 244 AC_DEFINE(SETEUID_BREAKS_SETUID)
245 AC_DEFINE(BROKEN_SETREUID)
246 AC_DEFINE(BROKEN_SETREGID)
3d59832f 247 AC_DEFINE(BROKEN_UPDWTMPX)
0e8f4eba 248 AC_DEFINE(WITH_ABBREV_NO_TTY)
3e6e3da0 249 AC_DEFINE(LOCKED_PASSWD_STRING, "*LK*")
d94aa2ae 250 ;;
5cdfe03f 251*-*-linux*)
252 no_dev_ptmx=1
717057b6 253 check_for_libcrypt_later=1
eacb954e 254 check_for_openpty_ctty_bug=1
80faa19f 255 AC_DEFINE(DONT_TRY_OTHER_AF)
a8545c6c 256 AC_DEFINE(PAM_TTY_KLUDGE)
b90bed9f 257 AC_DEFINE(LOCKED_PASSWD_PREFIX, "!")
3a2b2b44 258 AC_DEFINE(SPT_TYPE,SPT_REUSEARGV)
cd698186 259 AC_DEFINE(LINK_OPNOTSUPP_ERRNO, EPERM)
b6610e8f 260 AC_DEFINE(_PATH_BTMP, "/var/log/btmp", [log for bad login attempts])
261 AC_DEFINE(USE_BTMP, 1, [Use btmp to log bad logins])
80faa19f 262 inet6_default_4in6=yes
bf7c1e6c 263 case `uname -r` in
ad84c479 264 1.*|2.0.*)
bf7c1e6c 265 AC_DEFINE(BROKEN_CMSG_TYPE)
266 ;;
bf7c1e6c 267 esac
5cdfe03f 268 ;;
66d6c27e 269mips-sony-bsd|mips-sony-newsos4)
270 AC_DEFINE(HAVE_NEWS4)
271 SONY=1
66d6c27e 272 ;;
d468fc76 273*-*-netbsd*)
33e2e066 274 check_for_libcrypt_before=1
e6354014 275 if test "x$withval" != "xno" ; then
276 need_dash_r=1
277 fi
d468fc76 278 ;;
86b416a7 279*-*-freebsd*)
280 check_for_libcrypt_later=1
281 ;;
8707b7eb 282*-*-bsdi*)
283 AC_DEFINE(SETEUID_BREAKS_SETUID)
284 AC_DEFINE(BROKEN_SETREUID)
285 AC_DEFINE(BROKEN_SETREGID)
286 ;;
729bfe59 287*-next-*)
729bfe59 288 conf_lastlog_location="/usr/adm/lastlog"
698d107e 289 conf_utmp_location=/etc/utmp
290 conf_wtmp_location=/usr/adm/wtmp
291 MAIL=/usr/spool/mail
729bfe59 292 AC_DEFINE(HAVE_NEXT)
443172c4 293 AC_DEFINE(BROKEN_REALPATH)
00937921 294 AC_DEFINE(USE_PIPES)
86b416a7 295 AC_DEFINE(BROKEN_SAVED_UIDS)
729bfe59 296 ;;
9d6b1b96 297*-*-solaris*)
010e9d5b 298 if test "x$withval" != "xno" ; then
299 need_dash_r=1
300 fi
adeebd37 301 AC_DEFINE(PAM_SUN_CODEBASE)
7e2d5fa4 302 AC_DEFINE(LOGIN_NEEDS_UTMPX)
303 AC_DEFINE(LOGIN_NEEDS_TERM)
7f0a4ff1 304 AC_DEFINE(PAM_TTY_KLUDGE)
059d3165 305 AC_DEFINE(SSHPAM_CHAUTHTOK_NEEDS_RUID)
3e6e3da0 306 AC_DEFINE(LOCKED_PASSWD_STRING, "*LK*")
ad84c479 307 # Pushing STREAMS modules will cause sshd to acquire a controlling tty.
308 AC_DEFINE(SSHD_ACQUIRES_CTTY)
95b99395 309 external_path_file=/etc/default/login
1d7b9b20 310 # hardwire lastlog location (can't detect it on some versions)
311 conf_lastlog_location="/var/adm/lastlog"
32c80420 312 AC_MSG_CHECKING(for obsolete utmp and wtmp in solaris2.x)
313 sol2ver=`echo "$host"| sed -e 's/.*[[0-9]]\.//'`
314 if test "$sol2ver" -ge 8; then
315 AC_MSG_RESULT(yes)
316 AC_DEFINE(DISABLE_UTMP)
317 AC_DEFINE(DISABLE_WTMP)
318 else
319 AC_MSG_RESULT(no)
320 fi
9d6b1b96 321 ;;
a423beaf 322*-*-sunos4*)
0c2fb82f 323 CPPFLAGS="$CPPFLAGS -DSUNOS4"
a423beaf 324 AC_CHECK_FUNCS(getpwanam)
adeebd37 325 AC_DEFINE(PAM_SUN_CODEBASE)
32eec038 326 conf_utmp_location=/etc/utmp
327 conf_wtmp_location=/var/adm/wtmp
328 conf_lastlog_location=/var/adm/lastlog
137d7b6c 329 AC_DEFINE(USE_PIPES)
a423beaf 330 ;;
6f68f28a 331*-ncr-sysv*)
98a7c37b 332 LIBS="$LIBS -lc89"
29525240 333 AC_DEFINE(USE_PIPES)
eabb99c6 334 AC_DEFINE(SSHD_ACQUIRES_CTTY)
6fb3618d 335 AC_DEFINE(SETEUID_BREAKS_SETUID)
336 AC_DEFINE(BROKEN_SETREUID)
337 AC_DEFINE(BROKEN_SETREGID)
6f68f28a 338 ;;
132dd316 339*-sni-sysv*)
c8c15bcb 340 # /usr/ucblib MUST NOT be searched on ReliantUNIX
e2798e96 341 AC_CHECK_LIB(dl, dlsym, ,)
9548d6c8 342 IPADDR_IN_DISPLAY=yes
343 AC_DEFINE(USE_PIPES)
132dd316 344 AC_DEFINE(IP_TOS_IS_BROKEN)
605369bb 345 AC_DEFINE(SETEUID_BREAKS_SETUID)
346 AC_DEFINE(BROKEN_SETREUID)
347 AC_DEFINE(BROKEN_SETREGID)
eabb99c6 348 AC_DEFINE(SSHD_ACQUIRES_CTTY)
95b99395 349 external_path_file=/etc/default/login
c8c15bcb 350 # /usr/ucblib/libucb.a no longer needed on ReliantUNIX
351 # Attention: always take care to bind libsocket and libnsl before libc,
352 # otherwise you will find lots of "SIOCGPGRP errno 22" on syslog
132dd316 353 ;;
79a7ba96 354# UnixWare 1.x, UnixWare 2.x, and others based on code from Univel.
77bb0bca 355*-*-sysv4.2*)
ed6553e2 356 AC_DEFINE(USE_PIPES)
7ed101c0 357 AC_DEFINE(SETEUID_BREAKS_SETUID)
358 AC_DEFINE(BROKEN_SETREUID)
359 AC_DEFINE(BROKEN_SETREGID)
77bb0bca 360 ;;
79a7ba96 361# UnixWare 7.x, OpenUNIX 8
77bb0bca 362*-*-sysv5*)
ed6553e2 363 AC_DEFINE(USE_PIPES)
7ed101c0 364 AC_DEFINE(SETEUID_BREAKS_SETUID)
365 AC_DEFINE(BROKEN_SETREUID)
366 AC_DEFINE(BROKEN_SETREGID)
77bb0bca 367 ;;
9d6b1b96 368*-*-sysv*)
9d6b1b96 369 ;;
79a7ba96 370# SCO UNIX and OEM versions of SCO UNIX
77bb0bca 371*-*-sco3.2v4*)
0a15d73b 372 CPPFLAGS="$CPPFLAGS -Dftruncate=chsize"
f9e4952c 373 LIBS="$LIBS -los -lprot -lcrypt_i -lx -ltinfo -lm"
77bb0bca 374 RANLIB=true
ed6553e2 375 no_dev_ptmx=1
77bb0bca 376 AC_DEFINE(BROKEN_SYS_TERMIO_H)
ed6553e2 377 AC_DEFINE(USE_PIPES)
6e879cb4 378 AC_DEFINE(HAVE_SECUREWARE)
d287c664 379 AC_DEFINE(DISABLE_SHADOW)
86b416a7 380 AC_DEFINE(BROKEN_SAVED_UIDS)
9ff90d99 381 AC_DEFINE(SETEUID_BREAKS_SETUID)
382 AC_DEFINE(BROKEN_SETREUID)
383 AC_DEFINE(BROKEN_SETREGID)
bcebad47 384 AC_DEFINE(WITH_ABBREV_NO_TTY)
aca75d94 385 AC_CHECK_FUNCS(getluid setluid)
533875af 386 MANTYPE=man
98a7c37b 387 do_sco3_extra_lib_check=yes
a3245b92 388 TEST_SHELL=ksh
77bb0bca 389 ;;
79a7ba96 390# SCO OpenServer 5.x
77bb0bca 391*-*-sco3.2v5*)
21710e39 392 if test -z "$GCC"; then
393 CFLAGS="$CFLAGS -belf"
394 fi
ed6553e2 395 LIBS="$LIBS -lprot -lx -ltinfo -lm"
509b1f88 396 no_dev_ptmx=1
ed6553e2 397 AC_DEFINE(USE_PIPES)
6e879cb4 398 AC_DEFINE(HAVE_SECUREWARE)
d287c664 399 AC_DEFINE(DISABLE_SHADOW)
94d8258b 400 AC_DEFINE(DISABLE_FD_PASSING)
7ed101c0 401 AC_DEFINE(SETEUID_BREAKS_SETUID)
402 AC_DEFINE(BROKEN_SETREUID)
403 AC_DEFINE(BROKEN_SETREGID)
bcebad47 404 AC_DEFINE(WITH_ABBREV_NO_TTY)
34f2baf0 405 AC_DEFINE(BROKEN_UPDWTMPX)
aca75d94 406 AC_CHECK_FUNCS(getluid setluid)
533875af 407 MANTYPE=man
a3245b92 408 TEST_SHELL=ksh
509b1f88 409 ;;
ccbb983c 410*-*-unicosmk*)
c1ad5966 411 AC_DEFINE(NO_SSH_LASTLOG)
412 AC_DEFINE(SETEUID_BREAKS_SETUID)
413 AC_DEFINE(BROKEN_SETREUID)
414 AC_DEFINE(BROKEN_SETREGID)
ccbb983c 415 AC_DEFINE(USE_PIPES)
416 AC_DEFINE(DISABLE_FD_PASSING)
417 LDFLAGS="$LDFLAGS"
418 LIBS="$LIBS -lgen -lrsc -lshare -luex -lacm"
419 MANTYPE=cat
d262b7f2 420 ;;
7b9a8c6e 421*-*-unicosmp*)
c1ad5966 422 AC_DEFINE(SETEUID_BREAKS_SETUID)
423 AC_DEFINE(BROKEN_SETREUID)
424 AC_DEFINE(BROKEN_SETREGID)
7b9a8c6e 425 AC_DEFINE(WITH_ABBREV_NO_TTY)
426 AC_DEFINE(USE_PIPES)
427 AC_DEFINE(DISABLE_FD_PASSING)
428 LDFLAGS="$LDFLAGS"
c1ad5966 429 LIBS="$LIBS -lgen -lacid -ldb"
7b9a8c6e 430 MANTYPE=cat
431 ;;
ca5c7d6a 432*-*-unicos*)
c1ad5966 433 AC_DEFINE(SETEUID_BREAKS_SETUID)
434 AC_DEFINE(BROKEN_SETREUID)
435 AC_DEFINE(BROKEN_SETREGID)
ca5c7d6a 436 AC_DEFINE(USE_PIPES)
94d8258b 437 AC_DEFINE(DISABLE_FD_PASSING)
ef51930f 438 AC_DEFINE(NO_SSH_LASTLOG)
ccbb983c 439 LDFLAGS="$LDFLAGS -Wl,-Dmsglevel=334:fatal"
440 LIBS="$LIBS -lgen -lrsc -lshare -luex -lacm"
441 MANTYPE=cat
a704dd54 442 ;;
4d33e531 443*-dec-osf*)
99c8ddac 444 AC_MSG_CHECKING(for Digital Unix SIA)
445 no_osfsia=""
446 AC_ARG_WITH(osfsia,
447 [ --with-osfsia Enable Digital Unix SIA],
448 [
449 if test "x$withval" = "xno" ; then
450 AC_MSG_RESULT(disabled)
451 no_osfsia=1
452 fi
453 ],
454 )
455 if test -z "$no_osfsia" ; then
4d33e531 456 if test -f /etc/sia/matrix.conf; then
457 AC_MSG_RESULT(yes)
458 AC_DEFINE(HAVE_OSF_SIA)
459 AC_DEFINE(DISABLE_LOGIN)
58d0df4e 460 AC_DEFINE(DISABLE_FD_PASSING)
4d33e531 461 LIBS="$LIBS -lsecurity -ldb -lm -laud"
462 else
463 AC_MSG_RESULT(no)
dbf8efb3 464 AC_DEFINE(LOCKED_PASSWD_SUBSTR, "Nologin")
4d33e531 465 fi
466 fi
a6e67b60 467 AC_DEFINE(BROKEN_GETADDRINFO)
f4f2ff4f 468 AC_DEFINE(SETEUID_BREAKS_SETUID)
08da2d08 469 AC_DEFINE(BROKEN_SETREUID)
470 AC_DEFINE(BROKEN_SETREGID)
4d33e531 471 ;;
41cb4569 472
473*-*-nto-qnx)
474 AC_DEFINE(USE_PIPES)
475 AC_DEFINE(NO_X11_UNIX_SOCKETS)
476 AC_DEFINE(MISSING_NFDBITS)
477 AC_DEFINE(MISSING_HOWMANY)
478 AC_DEFINE(MISSING_FD_MASK)
479 ;;
a7effaac 480esac
481
8e7b16f8 482# Allow user to specify flags
483AC_ARG_WITH(cflags,
484 [ --with-cflags Specify additional flags to pass to compiler],
485 [
486 if test "x$withval" != "xno" ; then
487 CFLAGS="$CFLAGS $withval"
488 fi
489 ]
490)
0c2fb82f 491AC_ARG_WITH(cppflags,
492 [ --with-cppflags Specify additional flags to pass to preprocessor] ,
493 [
494 if test "x$withval" != "xno"; then
495 CPPFLAGS="$CPPFLAGS $withval"
496 fi
497 ]
498)
8e7b16f8 499AC_ARG_WITH(ldflags,
97b378bf 500 [ --with-ldflags Specify additional flags to pass to linker],
8e7b16f8 501 [
502 if test "x$withval" != "xno" ; then
503 LDFLAGS="$LDFLAGS $withval"
504 fi
505 ]
506)
507AC_ARG_WITH(libs,
508 [ --with-libs Specify additional libraries to link with],
509 [
510 if test "x$withval" != "xno" ; then
511 LIBS="$LIBS $withval"
512 fi
513 ]
514)
515
c5829391 516AC_MSG_CHECKING(compiler and flags for sanity)
479cece8 517AC_RUN_IFELSE(
518 [AC_LANG_SOURCE([
c5829391 519#include <stdio.h>
520int main(){exit(0);}
479cece8 521 ])],
c5829391 522 [ AC_MSG_RESULT(yes) ],
523 [
524 AC_MSG_RESULT(no)
525 AC_MSG_ERROR([*** compiler cannot create working executables, check config.log ***])
1a01a50c 526 ],
527 [ AC_MSG_WARN([cross compiling: not checking compiler sanity]) ]
c5829391 528)
529
ddceb1c8 530# Checks for header files.
419e26e7 531AC_CHECK_HEADERS(bstring.h crypt.h dirent.h endian.h features.h \
532 floatingpoint.h getopt.h glob.h ia.h lastlog.h limits.h login.h \
533 login_cap.h maillock.h ndir.h netdb.h netgroup.h \
2511d104 534 netinet/in_systm.h pam/pam_appl.h paths.h pty.h readpassphrase.h \
5bbbc661 535 rpc/types.h security/pam_appl.h shadow.h stddef.h stdint.h \
419e26e7 536 strings.h sys/dir.h sys/strtio.h sys/audit.h sys/bitypes.h \
537 sys/bsdtty.h sys/cdefs.h sys/mman.h sys/ndir.h sys/prctl.h \
765a24cd 538 sys/pstat.h sys/select.h sys/stat.h sys/stream.h \
419e26e7 539 sys/stropts.h sys/sysmacros.h sys/time.h sys/timers.h sys/un.h \
540 time.h tmpdir.h ttyent.h usersec.h util.h utime.h utmp.h utmpx.h vis.h)
ddceb1c8 541
765a24cd 542# sys/ptms.h requires sys/stream.h to be included first on Solaris
543AC_CHECK_HEADERS(sys/ptms.h, [], [], [
544#ifdef HAVE_SYS_STREAM_H
545# include <sys/stream.h>
546#endif
547])
548
a0391976 549# Checks for libraries.
98a7c37b 550AC_CHECK_FUNC(yp_match, , AC_CHECK_LIB(nsl, yp_match))
551AC_CHECK_FUNC(setsockopt, , AC_CHECK_LIB(socket, setsockopt))
2c523de9 552
f61d6b17 553dnl SCO OS3 needs this for libwrap
98a7c37b 554if test "x$with_tcp_wrappers" != "xno" ; then
555 if test "x$do_sco3_extra_lib_check" = "xyes" ; then
556 AC_CHECK_LIB(rpc, innetgr, LIBS="-lrpc -lyp -lrpc $LIBS" , , -lyp -lrpc)
557 fi
558fi
559
446227d6 560dnl IRIX and Solaris 2.5.1 have dirname() in libgen
561AC_CHECK_FUNCS(dirname, [AC_CHECK_HEADERS(libgen.h)] ,[
562 AC_CHECK_LIB(gen, dirname,[
563 AC_CACHE_CHECK([for broken dirname],
564 ac_cv_have_broken_dirname, [
565 save_LIBS="$LIBS"
566 LIBS="$LIBS -lgen"
567 AC_TRY_RUN(
568 [
569#include <libgen.h>
570#include <string.h>
571
572int main(int argc, char **argv) {
573 char *s, buf[32];
574
575 strncpy(buf,"/etc", 32);
576 s = dirname(buf);
577 if (!s || strncmp(s, "/", 32) != 0) {
578 exit(1);
579 } else {
580 exit(0);
581 }
582}
583 ],
584 [ ac_cv_have_broken_dirname="no" ],
585 [ ac_cv_have_broken_dirname="yes" ]
586 )
587 LIBS="$save_LIBS"
588 ])
589 if test "x$ac_cv_have_broken_dirname" = "xno" ; then
590 LIBS="$LIBS -lgen"
591 AC_DEFINE(HAVE_DIRNAME)
592 AC_CHECK_HEADERS(libgen.h)
593 fi
594 ])
595])
596
597AC_CHECK_FUNC(getspnam, ,
598 AC_CHECK_LIB(gen, getspnam, LIBS="$LIBS -lgen"))
599AC_SEARCH_LIBS(basename, gen, AC_DEFINE(HAVE_BASENAME))
600
98a7c37b 601dnl zlib is required
602AC_ARG_WITH(zlib,
603 [ --with-zlib=PATH Use zlib in PATH],
604 [
846f83ab 605 if test "x$withval" = "xno" ; then
f1b0ecc3 606 AC_MSG_ERROR([*** zlib is required ***])
607 fi
98a7c37b 608 if test -d "$withval/lib"; then
609 if test -n "${need_dash_r}"; then
5a162955 610 LDFLAGS="-L${withval}/lib -R${withval}/lib ${LDFLAGS}"
98a7c37b 611 else
5a162955 612 LDFLAGS="-L${withval}/lib ${LDFLAGS}"
98a7c37b 613 fi
614 else
615 if test -n "${need_dash_r}"; then
5a162955 616 LDFLAGS="-L${withval} -R${withval} ${LDFLAGS}"
98a7c37b 617 else
5a162955 618 LDFLAGS="-L${withval} ${LDFLAGS}"
98a7c37b 619 fi
620 fi
621 if test -d "$withval/include"; then
5a162955 622 CPPFLAGS="-I${withval}/include ${CPPFLAGS}"
98a7c37b 623 else
5a162955 624 CPPFLAGS="-I${withval} ${CPPFLAGS}"
98a7c37b 625 fi
626 ]
627)
628
0a15d73b 629AC_CHECK_LIB(z, deflate, ,
630 [
631 saved_CPPFLAGS="$CPPFLAGS"
632 saved_LDFLAGS="$LDFLAGS"
633 save_LIBS="$LIBS"
634 dnl Check default zlib install dir
635 if test -n "${need_dash_r}"; then
636 LDFLAGS="-L/usr/local/lib -R/usr/local/lib ${saved_LDFLAGS}"
637 else
638 LDFLAGS="-L/usr/local/lib ${saved_LDFLAGS}"
639 fi
640 CPPFLAGS="-I/usr/local/include ${saved_CPPFLAGS}"
641 LIBS="$LIBS -lz"
642 AC_TRY_LINK_FUNC(deflate, AC_DEFINE(HAVE_LIBZ),
643 [
644 AC_MSG_ERROR([*** zlib missing - please install first or check config.log ***])
645 ]
646 )
647 ]
648)
4ad65809 649AC_CHECK_HEADER([zlib.h], ,AC_MSG_ERROR([*** zlib.h missing - please install first or check config.log ***]))
8068d564 650
651AC_ARG_WITH(zlib-version-check,
652 [ --without-zlib-version-check Disable zlib version check],
653 [ if test "x$withval" = "xno" ; then
654 zlib_check_nonfatal=1
655 fi
656 ]
657)
658
4ad65809 659AC_MSG_CHECKING(for zlib 1.1.4 or greater)
479cece8 660AC_RUN_IFELSE([AC_LANG_SOURCE([[
4ad65809 661#include <zlib.h>
662int main()
663{
664 int a, b, c, v;
665 if (sscanf(ZLIB_VERSION, "%d.%d.%d", &a, &b, &c) != 3)
666 exit(1);
667 v = a*1000000 + b*1000 + c;
668 if (v >= 1001004)
669 exit(0);
670 exit(2);
671}
479cece8 672 ]])],
4ad65809 673 AC_MSG_RESULT(yes),
674 [ AC_MSG_RESULT(no)
8068d564 675 if test -z "$zlib_check_nonfatal" ; then
676 AC_MSG_ERROR([*** zlib too old - check config.log ***
677Your reported zlib version has known security problems. It's possible your
678vendor has fixed these problems without changing the version number. If you
679are sure this is the case, you can disable the check by running
680"./configure --without-zlib-version-check".
681If you are in doubt, upgrade zlib to version 1.1.4 or greater.])
682 else
683 AC_MSG_WARN([zlib version may have security problems])
684 fi
1a01a50c 685 ],
686 [ AC_MSG_WARN([cross compiling: not checking zlib version]) ]
4ad65809 687)
48e7916f 688
2c523de9 689dnl UnixWare 2.x
aff51935 690AC_CHECK_FUNC(strcasecmp,
2c523de9 691 [], [ AC_CHECK_LIB(resolv, strcasecmp, LIBS="$LIBS -lresolv") ]
692)
aff51935 693AC_CHECK_FUNC(utimes,
cda1ebcb 694 [], [ AC_CHECK_LIB(c89, utimes, [AC_DEFINE(HAVE_UTIMES)
695 LIBS="$LIBS -lc89"]) ]
2c523de9 696)
4cca272e 697
7c6d759d 698dnl Checks for libutil functions
699AC_CHECK_HEADERS(libutil.h)
700AC_SEARCH_LIBS(login, util bsd, [AC_DEFINE(HAVE_LOGIN)])
701AC_CHECK_FUNCS(logout updwtmp logwtmp)
702
a738c3b0 703AC_FUNC_STRFTIME
704
84ceda19 705# Check for ALTDIRFUNC glob() extension
706AC_MSG_CHECKING(for GLOB_ALTDIRFUNC support)
707AC_EGREP_CPP(FOUNDIT,
708 [
709 #include <glob.h>
710 #ifdef GLOB_ALTDIRFUNC
711 FOUNDIT
712 #endif
aff51935 713 ],
84ceda19 714 [
715 AC_DEFINE(GLOB_HAS_ALTDIRFUNC)
716 AC_MSG_RESULT(yes)
717 ],
718 [
719 AC_MSG_RESULT(no)
720 ]
721)
4cca272e 722
40849fdb 723# Check for g.gl_matchc glob() extension
724AC_MSG_CHECKING(for gl_matchc field in glob_t)
725AC_EGREP_CPP(FOUNDIT,
aff51935 726 [
727 #include <glob.h>
40849fdb 728 int main(void){glob_t g; g.gl_matchc = 1;}
aff51935 729 ],
730 [
731 AC_DEFINE(GLOB_HAS_GL_MATCHC)
732 AC_MSG_RESULT(yes)
733 ],
734 [
735 AC_MSG_RESULT(no)
736 ]
40849fdb 737)
738
edbe6722 739AC_MSG_CHECKING([whether struct dirent allocates space for d_name])
1a01a50c 740AC_RUN_IFELSE(
479cece8 741 [AC_LANG_SOURCE([[
edbe6722 742#include <sys/types.h>
743#include <dirent.h>
aec4cb4f 744int main(void){struct dirent d;exit(sizeof(d.d_name)<=sizeof(char));}
479cece8 745 ]])],
aff51935 746 [AC_MSG_RESULT(yes)],
edbe6722 747 [
748 AC_MSG_RESULT(no)
749 AC_DEFINE(BROKEN_ONE_BYTE_DIRENT_D_NAME)
1a01a50c 750 ],
751 [
752 AC_MSG_WARN([cross compiling: assuming BROKEN_ONE_BYTE_DIRENT_D_NAME])
753 AC_DEFINE(BROKEN_ONE_BYTE_DIRENT_D_NAME)
edbe6722 754 ]
755)
756
419e26e7 757AC_MSG_CHECKING([for /proc/pid/fd directory])
758if test -d "/proc/$$/fd" ; then
759 AC_DEFINE(HAVE_PROC_PID)
760 AC_MSG_RESULT(yes)
761else
762 AC_MSG_RESULT(no)
763fi
764
278588d8 765# Check whether user wants S/Key support
aff51935 766SKEY_MSG="no"
278588d8 767AC_ARG_WITH(skey,
98a7c37b 768 [ --with-skey[[=PATH]] Enable S/Key support
aff51935 769 (optionally in PATH)],
278588d8 770 [
771 if test "x$withval" != "xno" ; then
772
773 if test "x$withval" != "xyes" ; then
774 CPPFLAGS="$CPPFLAGS -I${withval}/include"
775 LDFLAGS="$LDFLAGS -L${withval}/lib"
776 fi
777
778 AC_DEFINE(SKEY)
779 LIBS="-lskey $LIBS"
aff51935 780 SKEY_MSG="yes"
278588d8 781
ddceb1c8 782 AC_MSG_CHECKING([for s/key support])
783 AC_TRY_RUN(
784 [
785#include <stdio.h>
786#include <skey.h>
aec4cb4f 787int main() { char *ff = skey_keyinfo(""); ff=""; exit(0); }
ddceb1c8 788 ],
789 [AC_MSG_RESULT(yes)],
278588d8 790 [
ddceb1c8 791 AC_MSG_RESULT(no)
278588d8 792 AC_MSG_ERROR([** Incomplete or missing s/key libraries.])
793 ])
141fc639 794 AC_MSG_CHECKING(if skeychallenge takes 4 arguments)
795 AC_TRY_COMPILE(
796 [#include <stdio.h>
797 #include <skey.h>],
798 [(void)skeychallenge(NULL,"name","",0);],
799 [AC_MSG_RESULT(yes)
800 AC_DEFINE(SKEYCHALLENGE_4ARG)],
801 [AC_MSG_RESULT(no)]
802 )
278588d8 803 fi
804 ]
805)
806
807# Check whether user wants TCP wrappers support
98a7c37b 808TCPW_MSG="no"
278588d8 809AC_ARG_WITH(tcp-wrappers,
98a7c37b 810 [ --with-tcp-wrappers[[=PATH]] Enable tcpwrappers support
aff51935 811 (optionally in PATH)],
278588d8 812 [
813 if test "x$withval" != "xno" ; then
814 saved_LIBS="$LIBS"
98a7c37b 815 saved_LDFLAGS="$LDFLAGS"
816 saved_CPPFLAGS="$CPPFLAGS"
817 if test -n "${withval}" -a "${withval}" != "yes"; then
818 if test -d "${withval}/lib"; then
819 if test -n "${need_dash_r}"; then
5a162955 820 LDFLAGS="-L${withval}/lib -R${withval}/lib ${LDFLAGS}"
98a7c37b 821 else
5a162955 822 LDFLAGS="-L${withval}/lib ${LDFLAGS}"
98a7c37b 823 fi
824 else
825 if test -n "${need_dash_r}"; then
5a162955 826 LDFLAGS="-L${withval} -R${withval} ${LDFLAGS}"
98a7c37b 827 else
5a162955 828 LDFLAGS="-L${withval} ${LDFLAGS}"
98a7c37b 829 fi
830 fi
831 if test -d "${withval}/include"; then
5a162955 832 CPPFLAGS="-I${withval}/include ${CPPFLAGS}"
98a7c37b 833 else
5a162955 834 CPPFLAGS="-I${withval} ${CPPFLAGS}"
98a7c37b 835 fi
98a7c37b 836 fi
ddceb1c8 837 LIBWRAP="-lwrap"
838 LIBS="$LIBWRAP $LIBS"
278588d8 839 AC_MSG_CHECKING(for libwrap)
840 AC_TRY_LINK(
841 [
77f09220 842#include <sys/types.h>
843#include <sys/socket.h>
844#include <netinet/in.h>
278588d8 845#include <tcpd.h>
846 int deny_severity = 0, allow_severity = 0;
847 ],
848 [hosts_access(0);],
849 [
850 AC_MSG_RESULT(yes)
851 AC_DEFINE(LIBWRAP)
ddceb1c8 852 AC_SUBST(LIBWRAP)
98a7c37b 853 TCPW_MSG="yes"
278588d8 854 ],
855 [
856 AC_MSG_ERROR([*** libwrap missing])
857 ]
858 )
ddceb1c8 859 LIBS="$saved_LIBS"
278588d8 860 fi
861 ]
862)
863
59031773 864# Check whether user wants libedit support
865LIBEDIT_MSG="no"
866AC_ARG_WITH(libedit,
867 [ --with-libedit[[=PATH]] Enable libedit support for sftp],
868 [ if test "x$withval" != "xno" ; then
869 AC_CHECK_LIB(edit, el_init,
870 [ AC_DEFINE(USE_LIBEDIT, [], [Use libedit for sftp])
871 LIBEDIT="-ledit -lcurses"
872 LIBEDIT_MSG="yes"
873 AC_SUBST(LIBEDIT)
874 ],
875 [], [-lcurses]
876 )
877 fi ]
878)
879
19160674 880dnl Checks for library functions. Please keep in alphabetical order
881AC_CHECK_FUNCS(\
2909d712 882 arc4random __b64_ntop b64_ntop __b64_pton b64_pton bcopy \
667abcc6 883 bindresvport_sa clock closefrom dirfd fchdir fchmod fchown \
884 freeaddrinfo futimes getaddrinfo getcwd getgrouplist getnameinfo \
885 getopt getpeereid _getpty getrlimit getttyent glob inet_aton \
19160674 886 inet_ntoa inet_ntop innetgr login_getcapbool md5_crypt memmove \
79d4fc55 887 mkdtemp mmap ngetaddrinfo nsleep ogetaddrinfo openlog_r openpty \
e7f6070d 888 pstat prctl readpassphrase realpath recvmsg rresvport_af sendmsg \
79d4fc55 889 setdtablesize setegid setenv seteuid setgroups setlogin setpcred \
3f176010 890 setproctitle setregid setreuid setrlimit \
688eed4a 891 setsid setvbuf sigaction sigvec snprintf socketpair strerror \
7111a85c 892 strlcat strlcpy strmode strnvis strtoul sysconf tcgetpgrp \
351f44a0 893 truncate unsetenv updwtmpx utimes vhangup vsnprintf waitpid \
19160674 894)
98a7c37b 895
1a086f97 896# IRIX has a const char return value for gai_strerror()
897AC_CHECK_FUNCS(gai_strerror,[
898 AC_DEFINE(HAVE_GAI_STRERROR)
899 AC_TRY_COMPILE([
900#include <sys/types.h>
901#include <sys/socket.h>
902#include <netdb.h>
903
904const char *gai_strerror(int);],[
905char *str;
906
907str = gai_strerror(0);],[
908 AC_DEFINE(HAVE_CONST_GAI_STRERROR_PROTO, 1,
909 [Define if gai_strerror() returns const char *])])])
910
92b1decf 911AC_SEARCH_LIBS(nanosleep, rt posix4, AC_DEFINE(HAVE_NANOSLEEP))
912
309709db 913dnl Make sure prototypes are defined for these before using them.
08412d26 914AC_CHECK_DECL(strsep, [AC_CHECK_FUNCS(strsep)])
309709db 915AC_CHECK_DECL(getrusage, [AC_CHECK_FUNCS(getrusage)])
08412d26 916
3490699c 917dnl tcsendbreak might be a macro
918AC_CHECK_DECL(tcsendbreak,
919 [AC_DEFINE(HAVE_TCSENDBREAK)],
aff51935 920 [AC_CHECK_FUNCS(tcsendbreak)],
3490699c 921 [#include <termios.h>]
922)
923
41e0e158 924AC_CHECK_DECLS(h_errno, , ,[#include <netdb.h>])
925
3f176010 926AC_CHECK_FUNCS(setresuid, [
927 dnl Some platorms have setresuid that isn't implemented, test for this
928 AC_MSG_CHECKING(if setresuid seems to work)
479cece8 929 AC_RUN_IFELSE(
930 [AC_LANG_SOURCE([[
9a3fe0e2 931#include <stdlib.h>
932#include <errno.h>
933int main(){errno=0; setresuid(0,0,0); if (errno==ENOSYS) exit(1); else exit(0);}
479cece8 934 ]])],
3f176010 935 [AC_MSG_RESULT(yes)],
24a9171d 936 [AC_DEFINE(BROKEN_SETRESUID)
1a01a50c 937 AC_MSG_RESULT(not implemented)],
938 [AC_MSG_WARN([cross compiling: not checking setresuid])]
3f176010 939 )
940])
9a3fe0e2 941
3f176010 942AC_CHECK_FUNCS(setresgid, [
943 dnl Some platorms have setresgid that isn't implemented, test for this
944 AC_MSG_CHECKING(if setresgid seems to work)
479cece8 945 AC_RUN_IFELSE(
946 [AC_LANG_SOURCE([[
9a3fe0e2 947#include <stdlib.h>
948#include <errno.h>
949int main(){errno=0; setresgid(0,0,0); if (errno==ENOSYS) exit(1); else exit(0);}
479cece8 950 ]])],
3f176010 951 [AC_MSG_RESULT(yes)],
952 [AC_DEFINE(BROKEN_SETRESGID)
1a01a50c 953 AC_MSG_RESULT(not implemented)],
954 [AC_MSG_WARN([cross compiling: not checking setresuid])]
3f176010 955 )
956])
9a3fe0e2 957
2e73a022 958dnl Checks for time functions
1d7b9b20 959AC_CHECK_FUNCS(gettimeofday time)
2e73a022 960dnl Checks for utmp functions
b03bd394 961AC_CHECK_FUNCS(endutent getutent getutid getutline pututline setutent)
1d7b9b20 962AC_CHECK_FUNCS(utmpname)
2e73a022 963dnl Checks for utmpx functions
b03bd394 964AC_CHECK_FUNCS(endutxent getutxent getutxid getutxline pututxline )
1d7b9b20 965AC_CHECK_FUNCS(setutxent utmpxname)
76cd7316 966
aff51935 967AC_CHECK_FUNC(daemon,
beb43d31 968 [AC_DEFINE(HAVE_DAEMON)],
969 [AC_CHECK_LIB(bsd, daemon, [LIBS="$LIBS -lbsd"; AC_DEFINE(HAVE_DAEMON)])]
970)
971
aff51935 972AC_CHECK_FUNC(getpagesize,
aa6bd60a 973 [AC_DEFINE(HAVE_GETPAGESIZE)],
974 [AC_CHECK_LIB(ucb, getpagesize, [LIBS="$LIBS -lucb"; AC_DEFINE(HAVE_GETPAGESIZE)])]
975)
976
2647ae26 977# Check for broken snprintf
978if test "x$ac_cv_func_snprintf" = "xyes" ; then
979 AC_MSG_CHECKING([whether snprintf correctly terminates long strings])
1a01a50c 980 AC_RUN_IFELSE(
479cece8 981 [AC_LANG_SOURCE([[
2647ae26 982#include <stdio.h>
aec4cb4f 983int main(void){char b[5];snprintf(b,5,"123456789");exit(b[4]!='\0');}
479cece8 984 ]])],
aff51935 985 [AC_MSG_RESULT(yes)],
2647ae26 986 [
987 AC_MSG_RESULT(no)
988 AC_DEFINE(BROKEN_SNPRINTF)
989 AC_MSG_WARN([****** Your snprintf() function is broken, complain to your vendor])
1a01a50c 990 ],
991 [ AC_MSG_WARN([cross compiling: Assuming working snprintf()]) ]
2647ae26 992 )
993fi
994
2f6f9cff 995# Check for missing getpeereid (or equiv) support
996NO_PEERCHECK=""
997if test "x$ac_cv_func_getpeereid" != "xyes" ; then
998 AC_MSG_CHECKING([whether system supports SO_PEERCRED getsockopt])
999 AC_TRY_COMPILE(
1000 [#include <sys/types.h>
1001 #include <sys/socket.h>],
1002 [int i = SO_PEERCRED;],
1003 [AC_MSG_RESULT(yes)],
1004 [AC_MSG_RESULT(no)
1005 NO_PEERCHECK=1]
1006 )
1007fi
1008
70e7d0b0 1009dnl see whether mkstemp() requires XXXXXX
1010if test "x$ac_cv_func_mkdtemp" = "xyes" ; then
1011AC_MSG_CHECKING([for (overly) strict mkstemp])
1012AC_TRY_RUN(
1013 [
1014#include <stdlib.h>
1015main() { char template[]="conftest.mkstemp-test";
1016if (mkstemp(template) == -1)
1017 exit(1);
1018unlink(template); exit(0);
1019}
1020 ],
1021 [
1022 AC_MSG_RESULT(no)
1023 ],
aff51935 1024 [
70e7d0b0 1025 AC_MSG_RESULT(yes)
1026 AC_DEFINE(HAVE_STRICT_MKSTEMP)
1027 ],
1028 [
1029 AC_MSG_RESULT(yes)
1030 AC_DEFINE(HAVE_STRICT_MKSTEMP)
aff51935 1031 ]
70e7d0b0 1032)
1033fi
1034
eacb954e 1035dnl make sure that openpty does not reacquire controlling terminal
1036if test ! -z "$check_for_openpty_ctty_bug"; then
1037 AC_MSG_CHECKING(if openpty correctly handles controlling tty)
1038 AC_TRY_RUN(
1039 [
1040#include <stdio.h>
1041#include <sys/fcntl.h>
1042#include <sys/types.h>
1043#include <sys/wait.h>
1044
1045int
1046main()
1047{
1048 pid_t pid;
1049 int fd, ptyfd, ttyfd, status;
1050
1051 pid = fork();
1052 if (pid < 0) { /* failed */
1053 exit(1);
1054 } else if (pid > 0) { /* parent */
1055 waitpid(pid, &status, 0);
aff51935 1056 if (WIFEXITED(status))
eacb954e 1057 exit(WEXITSTATUS(status));
1058 else
1059 exit(2);
1060 } else { /* child */
1061 close(0); close(1); close(2);
1062 setsid();
1063 openpty(&ptyfd, &ttyfd, NULL, NULL, NULL);
1064 fd = open("/dev/tty", O_RDWR | O_NOCTTY);
1065 if (fd >= 0)
1066 exit(3); /* Acquired ctty: broken */
1067 else
1068 exit(0); /* Did not acquire ctty: OK */
1069 }
1070}
1071 ],
1072 [
1073 AC_MSG_RESULT(yes)
1074 ],
1075 [
1076 AC_MSG_RESULT(no)
1077 AC_DEFINE(SSHD_ACQUIRES_CTTY)
1078 ]
1079 )
1080fi
1081
2fe51906 1082if test "x$ac_cv_func_getaddrinfo" = "xyes" -a "x$check_for_hpux_broken_getaddrinfo" = "x1"; then
1083 AC_MSG_CHECKING(if getaddrinfo seems to work)
1084 AC_TRY_RUN(
1085 [
1086#include <stdio.h>
1087#include <sys/socket.h>
1088#include <netdb.h>
1089#include <errno.h>
1090#include <netinet/in.h>
1091
1092#define TEST_PORT "2222"
1093
1094int
1095main(void)
1096{
1097 int err, sock;
1098 struct addrinfo *gai_ai, *ai, hints;
1099 char ntop[NI_MAXHOST], strport[NI_MAXSERV], *name = NULL;
1100
1101 memset(&hints, 0, sizeof(hints));
1102 hints.ai_family = PF_UNSPEC;
1103 hints.ai_socktype = SOCK_STREAM;
1104 hints.ai_flags = AI_PASSIVE;
1105
1106 err = getaddrinfo(name, TEST_PORT, &hints, &gai_ai);
1107 if (err != 0) {
1108 fprintf(stderr, "getaddrinfo failed (%s)", gai_strerror(err));
1109 exit(1);
1110 }
1111
1112 for (ai = gai_ai; ai != NULL; ai = ai->ai_next) {
1113 if (ai->ai_family != AF_INET6)
1114 continue;
1115
1116 err = getnameinfo(ai->ai_addr, ai->ai_addrlen, ntop,
1117 sizeof(ntop), strport, sizeof(strport),
1118 NI_NUMERICHOST|NI_NUMERICSERV);
1119
1120 if (err != 0) {
1121 if (err == EAI_SYSTEM)
1122 perror("getnameinfo EAI_SYSTEM");
1123 else
1124 fprintf(stderr, "getnameinfo failed: %s\n",
1125 gai_strerror(err));
1126 exit(2);
1127 }
1128
1129 sock = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol);
1130 if (sock < 0)
1131 perror("socket");
1132 if (bind(sock, ai->ai_addr, ai->ai_addrlen) < 0) {
1133 if (errno == EBADF)
1134 exit(3);
1135 }
1136 }
1137 exit(0);
1138}
1139 ],
1140 [
1141 AC_MSG_RESULT(yes)
1142 ],
1143 [
1144 AC_MSG_RESULT(no)
1145 AC_DEFINE(BROKEN_GETADDRINFO)
1146 ]
1147 )
1148fi
1149
b29fd59f 1150if test "x$check_for_conflicting_getspnam" = "x1"; then
1151 AC_MSG_CHECKING(for conflicting getspnam in shadow.h)
1152 AC_COMPILE_IFELSE(
1153 [
1154#include <shadow.h>
1155int main(void) {exit(0);}
1156 ],
1157 [
1158 AC_MSG_RESULT(no)
1159 ],
1160 [
1161 AC_MSG_RESULT(yes)
1162 AC_DEFINE(GETSPNAM_CONFLICTING_DEFS, 1,
1163 [Conflicting defs for getspnam])
1164 ]
1165 )
1166fi
1167
7f8f5e00 1168AC_FUNC_GETPGRP
1169
717057b6 1170# Check for PAM libs
cbd7492e 1171PAM_MSG="no"
a0391976 1172AC_ARG_WITH(pam,
717057b6 1173 [ --with-pam Enable PAM support ],
a0391976 1174 [
717057b6 1175 if test "x$withval" != "xno" ; then
2511d104 1176 if test "x$ac_cv_header_security_pam_appl_h" != "xyes" && \
1177 test "x$ac_cv_header_pam_pam_appl_h" != "xyes" ; then
717057b6 1178 AC_MSG_ERROR([PAM headers not found])
1179 fi
a0391976 1180
717057b6 1181 AC_CHECK_LIB(dl, dlopen, , )
1182 AC_CHECK_LIB(pam, pam_set_item, , AC_MSG_ERROR([*** libpam missing]))
1183 AC_CHECK_FUNCS(pam_getenvlist)
749560dd 1184 AC_CHECK_FUNCS(pam_putenv)
2b763e31 1185
717057b6 1186 PAM_MSG="yes"
4cb5ffa0 1187
717057b6 1188 AC_DEFINE(USE_PAM)
98f2d9d5 1189 if test $ac_cv_lib_dl_dlopen = yes; then
1190 LIBPAM="-lpam -ldl"
1191 else
1192 LIBPAM="-lpam"
1193 fi
1194 AC_SUBST(LIBPAM)
717057b6 1195 fi
1196 ]
1197)
cbd7492e 1198
717057b6 1199# Check for older PAM
1200if test "x$PAM_MSG" = "xyes" ; then
a0391976 1201 # Check PAM strerror arguments (old PAM)
1202 AC_MSG_CHECKING([whether pam_strerror takes only one argument])
1203 AC_TRY_COMPILE(
1204 [
18ba2aab 1205#include <stdlib.h>
2511d104 1206#if defined(HAVE_SECURITY_PAM_APPL_H)
18ba2aab 1207#include <security/pam_appl.h>
2511d104 1208#elif defined (HAVE_PAM_PAM_APPL_H)
1209#include <pam/pam_appl.h>
1210#endif
aff51935 1211 ],
1212 [(void)pam_strerror((pam_handle_t *)NULL, -1);],
a0391976 1213 [AC_MSG_RESULT(no)],
1214 [
1215 AC_DEFINE(HAVE_OLD_PAM)
1216 AC_MSG_RESULT(yes)
cbd7492e 1217 PAM_MSG="yes (old library)"
a0391976 1218 ]
717057b6 1219 )
a0391976 1220fi
1221
5b991353 1222# Search for OpenSSL
1223saved_CPPFLAGS="$CPPFLAGS"
1224saved_LDFLAGS="$LDFLAGS"
a0391976 1225AC_ARG_WITH(ssl-dir,
1226 [ --with-ssl-dir=PATH Specify path to OpenSSL installation ],
1227 [
e9e4a1c7 1228 if test "x$withval" != "xno" ; then
99eb0f64 1229 case "$withval" in
1230 # Relative paths
1231 ./*|../*) withval="`pwd`/$withval"
1232 esac
5b991353 1233 if test -d "$withval/lib"; then
1234 if test -n "${need_dash_r}"; then
1235 LDFLAGS="-L${withval}/lib -R${withval}/lib ${LDFLAGS}"
1236 else
1237 LDFLAGS="-L${withval}/lib ${LDFLAGS}"
d6f13fbb 1238 fi
1239 else
5b991353 1240 if test -n "${need_dash_r}"; then
1241 LDFLAGS="-L${withval} -R${withval} ${LDFLAGS}"
1242 else
1243 LDFLAGS="-L${withval} ${LDFLAGS}"
d6f13fbb 1244 fi
1245 fi
5b991353 1246 if test -d "$withval/include"; then
1247 CPPFLAGS="-I${withval}/include ${CPPFLAGS}"
d6f13fbb 1248 else
5b991353 1249 CPPFLAGS="-I${withval} ${CPPFLAGS}"
58d100bf 1250 fi
a0391976 1251 fi
5b991353 1252 ]
1253)
5486a457 1254LIBS="-lcrypto $LIBS"
5b991353 1255AC_TRY_LINK_FUNC(RAND_add, AC_DEFINE(HAVE_OPENSSL),
d45e3d76 1256 [
5b991353 1257 dnl Check default openssl install dir
1258 if test -n "${need_dash_r}"; then
1259 LDFLAGS="-L/usr/local/ssl/lib -R/usr/local/ssl/lib ${saved_LDFLAGS}"
d45e3d76 1260 else
5b991353 1261 LDFLAGS="-L/usr/local/ssl/lib ${saved_LDFLAGS}"
d45e3d76 1262 fi
5b991353 1263 CPPFLAGS="-I/usr/local/ssl/include ${saved_CPPFLAGS}"
1264 AC_TRY_LINK_FUNC(RAND_add, AC_DEFINE(HAVE_OPENSSL),
1265 [
1266 AC_MSG_ERROR([*** Can't find recent OpenSSL libcrypto (see config.log for details) ***])
1267 ]
1268 )
1269 ]
1270)
1271
cd018561 1272# Determine OpenSSL header version
1273AC_MSG_CHECKING([OpenSSL header version])
1a01a50c 1274AC_RUN_IFELSE(
479cece8 1275 [AC_LANG_SOURCE([[
cd018561 1276#include <stdio.h>
1277#include <string.h>
1278#include <openssl/opensslv.h>
1279#define DATA "conftest.sslincver"
1280int main(void) {
aff51935 1281 FILE *fd;
1282 int rc;
cd018561 1283
aff51935 1284 fd = fopen(DATA,"w");
1285 if(fd == NULL)
1286 exit(1);
cd018561 1287
1288 if ((rc = fprintf(fd ,"%x (%s)\n", OPENSSL_VERSION_NUMBER, OPENSSL_VERSION_TEXT)) <0)
1289 exit(1);
1290
1291 exit(0);
1292}
479cece8 1293 ]])],
cd018561 1294 [
1295 ssl_header_ver=`cat conftest.sslincver`
1296 AC_MSG_RESULT($ssl_header_ver)
1297 ],
1298 [
1299 AC_MSG_RESULT(not found)
1300 AC_MSG_ERROR(OpenSSL version header not found.)
1a01a50c 1301 ],
1302 [
1303 AC_MSG_WARN([cross compiling: not checking])
cd018561 1304 ]
1305)
1306
1307# Determine OpenSSL library version
1308AC_MSG_CHECKING([OpenSSL library version])
1a01a50c 1309AC_RUN_IFELSE(
479cece8 1310 [AC_LANG_SOURCE([[
cd018561 1311#include <stdio.h>
1312#include <string.h>
1313#include <openssl/opensslv.h>
1314#include <openssl/crypto.h>
1315#define DATA "conftest.ssllibver"
1316int main(void) {
aff51935 1317 FILE *fd;
1318 int rc;
cd018561 1319
aff51935 1320 fd = fopen(DATA,"w");
1321 if(fd == NULL)
1322 exit(1);
cd018561 1323
1324 if ((rc = fprintf(fd ,"%x (%s)\n", SSLeay(), SSLeay_version(SSLEAY_VERSION))) <0)
1325 exit(1);
1326
1327 exit(0);
1328}
479cece8 1329 ]])],
cd018561 1330 [
1331 ssl_library_ver=`cat conftest.ssllibver`
1332 AC_MSG_RESULT($ssl_library_ver)
1333 ],
1334 [
1335 AC_MSG_RESULT(not found)
1336 AC_MSG_ERROR(OpenSSL library not found.)
1a01a50c 1337 ],
1338 [
1339 AC_MSG_WARN([cross compiling: not checking])
cd018561 1340 ]
1341)
58d100bf 1342
9780116c 1343# Sanity check OpenSSL headers
1344AC_MSG_CHECKING([whether OpenSSL's headers match the library])
1a01a50c 1345AC_RUN_IFELSE(
479cece8 1346 [AC_LANG_SOURCE([[
9780116c 1347#include <string.h>
1348#include <openssl/opensslv.h>
aec4cb4f 1349int main(void) { exit(SSLeay() == OPENSSL_VERSION_NUMBER ? 0 : 1); }
479cece8 1350 ]])],
9780116c 1351 [
1352 AC_MSG_RESULT(yes)
1353 ],
1354 [
1355 AC_MSG_RESULT(no)
e15ba28b 1356 AC_MSG_ERROR([Your OpenSSL headers do not match your library.
1357Check config.log for details.
1358Also see contrib/findssl.sh for help identifying header/library mismatches.])
1a01a50c 1359 ],
1360 [
1361 AC_MSG_WARN([cross compiling: not checking])
9780116c 1362 ]
1363)
1364
5486a457 1365# Some systems want crypt() from libcrypt, *not* the version in OpenSSL,
1366# because the system crypt() is more featureful.
1367if test "x$check_for_libcrypt_before" = "x1"; then
1368 AC_CHECK_LIB(crypt, crypt)
1369fi
1370
aff51935 1371# Some Linux systems (Slackware) need crypt() from libcrypt, *not* the
8087c5ee 1372# version in OpenSSL.
05114c74 1373if test "x$check_for_libcrypt_later" = "x1"; then
20cad736 1374 AC_CHECK_LIB(crypt, crypt, LIBS="$LIBS -lcrypt")
717057b6 1375fi
1376
f1b0ecc3 1377
1378### Configure cryptographic random number support
1379
1380# Check wheter OpenSSL seeds itself
1381AC_MSG_CHECKING([whether OpenSSL's PRNG is internally seeded])
1a01a50c 1382AC_RUN_IFELSE(
479cece8 1383 [AC_LANG_SOURCE([[
f1b0ecc3 1384#include <string.h>
1385#include <openssl/rand.h>
aec4cb4f 1386int main(void) { exit(RAND_status() == 1 ? 0 : 1); }
479cece8 1387 ]])],
f1b0ecc3 1388 [
1389 OPENSSL_SEEDS_ITSELF=yes
1390 AC_MSG_RESULT(yes)
1391 ],
1392 [
1393 AC_MSG_RESULT(no)
1394 # Default to use of the rand helper if OpenSSL doesn't
1395 # seed itself
1396 USE_RAND_HELPER=yes
1a01a50c 1397 ],
1398 [
1399 AC_MSG_WARN([cross compiling: assuming yes])
1400 # This is safe, since all recent OpenSSL versions will
1401 # complain at runtime if not seeded correctly.
1402 OPENSSL_SEEDS_ITSELF=yes
f1b0ecc3 1403 ]
1404)
1405
1406
1407# Do we want to force the use of the rand helper?
1408AC_ARG_WITH(rand-helper,
1409 [ --with-rand-helper Use subprocess to gather strong randomness ],
1410 [
1411 if test "x$withval" = "xno" ; then
aff51935 1412 # Force use of OpenSSL's internal RNG, even if
f1b0ecc3 1413 # the previous test showed it to be unseeded.
1414 if test -z "$OPENSSL_SEEDS_ITSELF" ; then
1415 AC_MSG_WARN([*** Forcing use of OpenSSL's non-self-seeding PRNG])
1416 OPENSSL_SEEDS_ITSELF=yes
1417 USE_RAND_HELPER=""
1418 fi
1419 else
1420 USE_RAND_HELPER=yes
1421 fi
1422 ],
1423)
1424
1425# Which randomness source do we use?
1426if test ! -z "$OPENSSL_SEEDS_ITSELF" -a -z "$USE_RAND_HELPER" ; then
1427 # OpenSSL only
1428 AC_DEFINE(OPENSSL_PRNG_ONLY)
1429 RAND_MSG="OpenSSL internal ONLY"
1430 INSTALL_SSH_RAND_HELPER=""
70e2f2f3 1431elif test ! -z "$USE_RAND_HELPER" ; then
1432 # install rand helper
f1b0ecc3 1433 RAND_MSG="ssh-rand-helper"
1434 INSTALL_SSH_RAND_HELPER="yes"
1435fi
1436AC_SUBST(INSTALL_SSH_RAND_HELPER)
1437
1438### Configuration of ssh-rand-helper
1439
1440# PRNGD TCP socket
1441AC_ARG_WITH(prngd-port,
1442 [ --with-prngd-port=PORT read entropy from PRNGD/EGD TCP localhost:PORT],
1443 [
eb5d7ff6 1444 case "$withval" in
1445 no)
1446 withval=""
1447 ;;
1448 [[0-9]]*)
1449 ;;
1450 *)
1451 AC_MSG_ERROR(You must specify a numeric port number for --with-prngd-port)
1452 ;;
1453 esac
1454 if test ! -z "$withval" ; then
f1b0ecc3 1455 PRNGD_PORT="$withval"
1456 AC_DEFINE_UNQUOTED(PRNGD_PORT, $PRNGD_PORT)
1457 fi
1458 ]
1459)
1460
1461# PRNGD Unix domain socket
1462AC_ARG_WITH(prngd-socket,
1463 [ --with-prngd-socket=FILE read entropy from PRNGD/EGD socket FILE (default=/var/run/egd-pool)],
1464 [
eb5d7ff6 1465 case "$withval" in
1466 yes)
f1b0ecc3 1467 withval="/var/run/egd-pool"
eb5d7ff6 1468 ;;
1469 no)
1470 withval=""
1471 ;;
1472 /*)
1473 ;;
1474 *)
1475 AC_MSG_ERROR(You must specify an absolute path to the entropy socket)
1476 ;;
1477 esac
1478
1479 if test ! -z "$withval" ; then
f1b0ecc3 1480 if test ! -z "$PRNGD_PORT" ; then
1481 AC_MSG_ERROR(You may not specify both a PRNGD/EGD port and socket)
1482 fi
906e811b 1483 if test ! -r "$withval" ; then
f1b0ecc3 1484 AC_MSG_WARN(Entropy socket is not readable)
1485 fi
1486 PRNGD_SOCKET="$withval"
1487 AC_DEFINE_UNQUOTED(PRNGD_SOCKET, "$PRNGD_SOCKET")
1488 fi
ddceb1c8 1489 ],
1490 [
1491 # Check for existing socket only if we don't have a random device already
1492 if test "$USE_RAND_HELPER" = yes ; then
1493 AC_MSG_CHECKING(for PRNGD/EGD socket)
1494 # Insert other locations here
1495 for sock in /var/run/egd-pool /dev/egd-pool /etc/entropy; do
1496 if test -r $sock && $TEST_MINUS_S_SH -c "test -S $sock -o -p $sock" ; then
1497 PRNGD_SOCKET="$sock"
1498 AC_DEFINE_UNQUOTED(PRNGD_SOCKET, "$PRNGD_SOCKET")
1499 break;
1500 fi
1501 done
1502 if test ! -z "$PRNGD_SOCKET" ; then
1503 AC_MSG_RESULT($PRNGD_SOCKET)
1504 else
1505 AC_MSG_RESULT(not found)
1506 fi
1507 fi
f1b0ecc3 1508 ]
1509)
1510
1511# Change default command timeout for hashing entropy source
1512entropy_timeout=200
1513AC_ARG_WITH(entropy-timeout,
1514 [ --with-entropy-timeout Specify entropy gathering command timeout (msec)],
1515 [
1516 if test "x$withval" != "xno" ; then
1517 entropy_timeout=$withval
1518 fi
1519 ]
1520)
f1b0ecc3 1521AC_DEFINE_UNQUOTED(ENTROPY_TIMEOUT_MSEC, $entropy_timeout)
1522
fd3cbf67 1523SSH_PRIVSEP_USER=sshd
9a0fbcb3 1524AC_ARG_WITH(privsep-user,
5222e7ef 1525 [ --with-privsep-user=user Specify non-privileged user for privilege separation],
9a0fbcb3 1526 [
1527 if test -n "$withval"; then
fd3cbf67 1528 SSH_PRIVSEP_USER=$withval
9a0fbcb3 1529 fi
1530 ]
1531)
fd3cbf67 1532AC_DEFINE_UNQUOTED(SSH_PRIVSEP_USER, "$SSH_PRIVSEP_USER")
1533AC_SUBST(SSH_PRIVSEP_USER)
9a0fbcb3 1534
81dadca3 1535# We do this little dance with the search path to insure
1536# that programs that we select for use by installed programs
1537# (which may be run by the super-user) come from trusted
1538# locations before they come from the user's private area.
1539# This should help avoid accidentally configuring some
1540# random version of a program in someone's personal bin.
1541
1542OPATH=$PATH
1543PATH=/bin:/usr/bin
f95c8ce8 1544test -h /bin 2> /dev/null && PATH=/usr/bin
81dadca3 1545test -d /sbin && PATH=$PATH:/sbin
1546test -d /usr/sbin && PATH=$PATH:/usr/sbin
1547PATH=$PATH:/etc:$OPATH
1548
aff51935 1549# These programs are used by the command hashing source to gather entropy
f1b0ecc3 1550OSSH_PATH_ENTROPY_PROG(PROG_LS, ls)
1551OSSH_PATH_ENTROPY_PROG(PROG_NETSTAT, netstat)
1552OSSH_PATH_ENTROPY_PROG(PROG_ARP, arp)
1553OSSH_PATH_ENTROPY_PROG(PROG_IFCONFIG, ifconfig)
1554OSSH_PATH_ENTROPY_PROG(PROG_JSTAT, jstat)
1555OSSH_PATH_ENTROPY_PROG(PROG_PS, ps)
1556OSSH_PATH_ENTROPY_PROG(PROG_SAR, sar)
1557OSSH_PATH_ENTROPY_PROG(PROG_W, w)
1558OSSH_PATH_ENTROPY_PROG(PROG_WHO, who)
1559OSSH_PATH_ENTROPY_PROG(PROG_LAST, last)
1560OSSH_PATH_ENTROPY_PROG(PROG_LASTLOG, lastlog)
1561OSSH_PATH_ENTROPY_PROG(PROG_DF, df)
1562OSSH_PATH_ENTROPY_PROG(PROG_VMSTAT, vmstat)
1563OSSH_PATH_ENTROPY_PROG(PROG_UPTIME, uptime)
1564OSSH_PATH_ENTROPY_PROG(PROG_IPCS, ipcs)
1565OSSH_PATH_ENTROPY_PROG(PROG_TAIL, tail)
81dadca3 1566# restore PATH
1567PATH=$OPATH
f1b0ecc3 1568
1569# Where does ssh-rand-helper get its randomness from?
1570INSTALL_SSH_PRNG_CMDS=""
1571if test ! -z "$INSTALL_SSH_RAND_HELPER" ; then
1572 if test ! -z "$PRNGD_PORT" ; then
1573 RAND_HELPER_MSG="TCP localhost:$PRNGD_PORT"
1574 elif test ! -z "$PRNGD_SOCKET" ; then
1575 RAND_HELPER_MSG="Unix domain socket \"$PRNGD_SOCKET\""
1576 else
1577 RAND_HELPER_MSG="Command hashing (timeout $entropy_timeout)"
1578 RAND_HELPER_CMDHASH=yes
1579 INSTALL_SSH_PRNG_CMDS="yes"
1580 fi
1581fi
1582AC_SUBST(INSTALL_SSH_PRNG_CMDS)
1583
1584
66d6c27e 1585# Cheap hack to ensure NEWS-OS libraries are arranged right.
1586if test ! -z "$SONY" ; then
1587 LIBS="$LIBS -liberty";
1588fi
1589
a0391976 1590# Checks for data types
976f7e19 1591AC_CHECK_SIZEOF(char, 1)
2b942fe0 1592AC_CHECK_SIZEOF(short int, 2)
1593AC_CHECK_SIZEOF(int, 4)
1594AC_CHECK_SIZEOF(long int, 4)
1595AC_CHECK_SIZEOF(long long int, 8)
1596
52f1ccb2 1597# Sanity check long long for some platforms (AIX)
1598if test "x$ac_cv_sizeof_long_long_int" = "x4" ; then
1599 ac_cv_sizeof_long_long_int=0
1600fi
1601
a0391976 1602# More checks for data types
14a9a859 1603AC_CACHE_CHECK([for u_int type], ac_cv_have_u_int, [
1604 AC_TRY_COMPILE(
aff51935 1605 [ #include <sys/types.h> ],
1606 [ u_int a; a = 1;],
14a9a859 1607 [ ac_cv_have_u_int="yes" ],
1608 [ ac_cv_have_u_int="no" ]
1609 )
1610])
1611if test "x$ac_cv_have_u_int" = "xyes" ; then
1612 AC_DEFINE(HAVE_U_INT)
1613 have_u_int=1
1614fi
1615
58d100bf 1616AC_CACHE_CHECK([for intXX_t types], ac_cv_have_intxx_t, [
1617 AC_TRY_COMPILE(
aff51935 1618 [ #include <sys/types.h> ],
1619 [ int8_t a; int16_t b; int32_t c; a = b = c = 1;],
58d100bf 1620 [ ac_cv_have_intxx_t="yes" ],
1621 [ ac_cv_have_intxx_t="no" ]
1622 )
1623])
1624if test "x$ac_cv_have_intxx_t" = "xyes" ; then
1625 AC_DEFINE(HAVE_INTXX_T)
1626 have_intxx_t=1
1627fi
41cb4569 1628
1629if (test -z "$have_intxx_t" && \
aff51935 1630 test "x$ac_cv_header_stdint_h" = "xyes")
41cb4569 1631then
1632 AC_MSG_CHECKING([for intXX_t types in stdint.h])
1633 AC_TRY_COMPILE(
aff51935 1634 [ #include <stdint.h> ],
1635 [ int8_t a; int16_t b; int32_t c; a = b = c = 1;],
41cb4569 1636 [
1637 AC_DEFINE(HAVE_INTXX_T)
1638 AC_MSG_RESULT(yes)
1639 ],
1640 [ AC_MSG_RESULT(no) ]
1641 )
1642fi
1643
bd590612 1644AC_CACHE_CHECK([for int64_t type], ac_cv_have_int64_t, [
1645 AC_TRY_COMPILE(
1cbbe6c8 1646 [
1647#include <sys/types.h>
1648#ifdef HAVE_STDINT_H
1649# include <stdint.h>
1650#endif
1651#include <sys/socket.h>
1652#ifdef HAVE_SYS_BITYPES_H
1653# include <sys/bitypes.h>
1654#endif
aff51935 1655 ],
1656 [ int64_t a; a = 1;],
bd590612 1657 [ ac_cv_have_int64_t="yes" ],
1658 [ ac_cv_have_int64_t="no" ]
1659 )
1660])
1661if test "x$ac_cv_have_int64_t" = "xyes" ; then
1662 AC_DEFINE(HAVE_INT64_T)
ddceb1c8 1663fi
1664
58d100bf 1665AC_CACHE_CHECK([for u_intXX_t types], ac_cv_have_u_intxx_t, [
1666 AC_TRY_COMPILE(
aff51935 1667 [ #include <sys/types.h> ],
1668 [ u_int8_t a; u_int16_t b; u_int32_t c; a = b = c = 1;],
58d100bf 1669 [ ac_cv_have_u_intxx_t="yes" ],
1670 [ ac_cv_have_u_intxx_t="no" ]
1671 )
1672])
1673if test "x$ac_cv_have_u_intxx_t" = "xyes" ; then
1674 AC_DEFINE(HAVE_U_INTXX_T)
1675 have_u_intxx_t=1
1676fi
2b942fe0 1677
41cb4569 1678if test -z "$have_u_intxx_t" ; then
1679 AC_MSG_CHECKING([for u_intXX_t types in sys/socket.h])
1680 AC_TRY_COMPILE(
aff51935 1681 [ #include <sys/socket.h> ],
1682 [ u_int8_t a; u_int16_t b; u_int32_t c; a = b = c = 1;],
41cb4569 1683 [
1684 AC_DEFINE(HAVE_U_INTXX_T)
1685 AC_MSG_RESULT(yes)
1686 ],
1687 [ AC_MSG_RESULT(no) ]
1688 )
1689fi
1690
bd590612 1691AC_CACHE_CHECK([for u_int64_t types], ac_cv_have_u_int64_t, [
1692 AC_TRY_COMPILE(
aff51935 1693 [ #include <sys/types.h> ],
1694 [ u_int64_t a; a = 1;],
bd590612 1695 [ ac_cv_have_u_int64_t="yes" ],
1696 [ ac_cv_have_u_int64_t="no" ]
1697 )
1698])
1699if test "x$ac_cv_have_u_int64_t" = "xyes" ; then
1700 AC_DEFINE(HAVE_U_INT64_T)
1701 have_u_int64_t=1
1702fi
1703
ddceb1c8 1704if test -z "$have_u_int64_t" ; then
1705 AC_MSG_CHECKING([for u_int64_t type in sys/bitypes.h])
1706 AC_TRY_COMPILE(
aff51935 1707 [ #include <sys/bitypes.h> ],
ddceb1c8 1708 [ u_int64_t a; a = 1],
1709 [
1710 AC_DEFINE(HAVE_U_INT64_T)
1711 AC_MSG_RESULT(yes)
1712 ],
1713 [ AC_MSG_RESULT(no) ]
1714 )
1715fi
1716
41cb4569 1717if test -z "$have_u_intxx_t" ; then
1718 AC_CACHE_CHECK([for uintXX_t types], ac_cv_have_uintxx_t, [
1719 AC_TRY_COMPILE(
1720 [
1721#include <sys/types.h>
aff51935 1722 ],
1723 [ uint8_t a; uint16_t b; uint32_t c; a = b = c = 1; ],
41cb4569 1724 [ ac_cv_have_uintxx_t="yes" ],
1725 [ ac_cv_have_uintxx_t="no" ]
1726 )
1727 ])
1728 if test "x$ac_cv_have_uintxx_t" = "xyes" ; then
1729 AC_DEFINE(HAVE_UINTXX_T)
1730 fi
1731fi
1732
1733if test -z "$have_uintxx_t" ; then
1734 AC_MSG_CHECKING([for uintXX_t types in stdint.h])
1735 AC_TRY_COMPILE(
aff51935 1736 [ #include <stdint.h> ],
1737 [ uint8_t a; uint16_t b; uint32_t c; a = b = c = 1;],
41cb4569 1738 [
1739 AC_DEFINE(HAVE_UINTXX_T)
1740 AC_MSG_RESULT(yes)
1741 ],
1742 [ AC_MSG_RESULT(no) ]
1743 )
1744fi
1745
e5fe9a1f 1746if (test -z "$have_u_intxx_t" || test -z "$have_intxx_t" && \
aff51935 1747 test "x$ac_cv_header_sys_bitypes_h" = "xyes")
5cdfe03f 1748then
1749 AC_MSG_CHECKING([for intXX_t and u_intXX_t types in sys/bitypes.h])
1750 AC_TRY_COMPILE(
58d100bf 1751 [
1752#include <sys/bitypes.h>
aff51935 1753 ],
5cdfe03f 1754 [
837c30b8 1755 int8_t a; int16_t b; int32_t c;
1756 u_int8_t e; u_int16_t f; u_int32_t g;
1757 a = b = c = e = f = g = 1;
aff51935 1758 ],
5cdfe03f 1759 [
1760 AC_DEFINE(HAVE_U_INTXX_T)
1761 AC_DEFINE(HAVE_INTXX_T)
1762 AC_MSG_RESULT(yes)
1763 ],
1764 [AC_MSG_RESULT(no)]
aff51935 1765 )
5cdfe03f 1766fi
1767
0362750e 1768
1769AC_CACHE_CHECK([for u_char], ac_cv_have_u_char, [
1770 AC_TRY_COMPILE(
1771 [
1772#include <sys/types.h>
1773 ],
1774 [ u_char foo; foo = 125; ],
1775 [ ac_cv_have_u_char="yes" ],
1776 [ ac_cv_have_u_char="no" ]
1777 )
1778])
1779if test "x$ac_cv_have_u_char" = "xyes" ; then
1780 AC_DEFINE(HAVE_U_CHAR)
1781fi
1782
98a7c37b 1783TYPE_SOCKLEN_T
2b942fe0 1784
2d16d9a3 1785AC_CHECK_TYPES(sig_atomic_t,,,[#include <signal.h>])
ddceb1c8 1786
58d100bf 1787AC_CACHE_CHECK([for size_t], ac_cv_have_size_t, [
1788 AC_TRY_COMPILE(
1789 [
18ba2aab 1790#include <sys/types.h>
58d100bf 1791 ],
1792 [ size_t foo; foo = 1235; ],
1793 [ ac_cv_have_size_t="yes" ],
1794 [ ac_cv_have_size_t="no" ]
1795 )
1796])
1797if test "x$ac_cv_have_size_t" = "xyes" ; then
1798 AC_DEFINE(HAVE_SIZE_T)
1799fi
ea1970a3 1800
c04f75f1 1801AC_CACHE_CHECK([for ssize_t], ac_cv_have_ssize_t, [
1802 AC_TRY_COMPILE(
1803 [
1804#include <sys/types.h>
1805 ],
1806 [ ssize_t foo; foo = 1235; ],
1807 [ ac_cv_have_ssize_t="yes" ],
1808 [ ac_cv_have_ssize_t="no" ]
1809 )
1810])
1811if test "x$ac_cv_have_ssize_t" = "xyes" ; then
1812 AC_DEFINE(HAVE_SSIZE_T)
1813fi
1814
f1c4659d 1815AC_CACHE_CHECK([for clock_t], ac_cv_have_clock_t, [
1816 AC_TRY_COMPILE(
1817 [
1818#include <time.h>
1819 ],
1820 [ clock_t foo; foo = 1235; ],
1821 [ ac_cv_have_clock_t="yes" ],
1822 [ ac_cv_have_clock_t="no" ]
1823 )
1824])
1825if test "x$ac_cv_have_clock_t" = "xyes" ; then
1826 AC_DEFINE(HAVE_CLOCK_T)
1827fi
1828
1c04b088 1829AC_CACHE_CHECK([for sa_family_t], ac_cv_have_sa_family_t, [
1830 AC_TRY_COMPILE(
1831 [
1832#include <sys/types.h>
1833#include <sys/socket.h>
1834 ],
1835 [ sa_family_t foo; foo = 1235; ],
1836 [ ac_cv_have_sa_family_t="yes" ],
77bb0bca 1837 [ AC_TRY_COMPILE(
1838 [
1839#include <sys/types.h>
1840#include <sys/socket.h>
1841#include <netinet/in.h>
1842 ],
1843 [ sa_family_t foo; foo = 1235; ],
1844 [ ac_cv_have_sa_family_t="yes" ],
1845
1c04b088 1846 [ ac_cv_have_sa_family_t="no" ]
77bb0bca 1847 )]
1c04b088 1848 )
1849])
1850if test "x$ac_cv_have_sa_family_t" = "xyes" ; then
1851 AC_DEFINE(HAVE_SA_FAMILY_T)
1852fi
1853
729bfe59 1854AC_CACHE_CHECK([for pid_t], ac_cv_have_pid_t, [
1855 AC_TRY_COMPILE(
1856 [
1857#include <sys/types.h>
1858 ],
1859 [ pid_t foo; foo = 1235; ],
1860 [ ac_cv_have_pid_t="yes" ],
1861 [ ac_cv_have_pid_t="no" ]
1862 )
1863])
1864if test "x$ac_cv_have_pid_t" = "xyes" ; then
1865 AC_DEFINE(HAVE_PID_T)
1866fi
1867
1868AC_CACHE_CHECK([for mode_t], ac_cv_have_mode_t, [
1869 AC_TRY_COMPILE(
1870 [
1871#include <sys/types.h>
1872 ],
1873 [ mode_t foo; foo = 1235; ],
1874 [ ac_cv_have_mode_t="yes" ],
1875 [ ac_cv_have_mode_t="no" ]
1876 )
1877])
1878if test "x$ac_cv_have_mode_t" = "xyes" ; then
1879 AC_DEFINE(HAVE_MODE_T)
1880fi
1881
e3a93db0 1882
58d100bf 1883AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_have_struct_sockaddr_storage, [
1884 AC_TRY_COMPILE(
1885 [
18ba2aab 1886#include <sys/types.h>
1887#include <sys/socket.h>
58d100bf 1888 ],
1889 [ struct sockaddr_storage s; ],
1890 [ ac_cv_have_struct_sockaddr_storage="yes" ],
1891 [ ac_cv_have_struct_sockaddr_storage="no" ]
1892 )
1893])
1894if test "x$ac_cv_have_struct_sockaddr_storage" = "xyes" ; then
1895 AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE)
1896fi
48e671d5 1897
58d100bf 1898AC_CACHE_CHECK([for struct sockaddr_in6], ac_cv_have_struct_sockaddr_in6, [
1899 AC_TRY_COMPILE(
1900 [
cbd7492e 1901#include <sys/types.h>
58d100bf 1902#include <netinet/in.h>
1903 ],
1904 [ struct sockaddr_in6 s; s.sin6_family = 0; ],
1905 [ ac_cv_have_struct_sockaddr_in6="yes" ],
1906 [ ac_cv_have_struct_sockaddr_in6="no" ]
1907 )
1908])
1909if test "x$ac_cv_have_struct_sockaddr_in6" = "xyes" ; then
1910 AC_DEFINE(HAVE_STRUCT_SOCKADDR_IN6)
1911fi
48e671d5 1912
58d100bf 1913AC_CACHE_CHECK([for struct in6_addr], ac_cv_have_struct_in6_addr, [
1914 AC_TRY_COMPILE(
1915 [
cbd7492e 1916#include <sys/types.h>
58d100bf 1917#include <netinet/in.h>
1918 ],
1919 [ struct in6_addr s; s.s6_addr[0] = 0; ],
1920 [ ac_cv_have_struct_in6_addr="yes" ],
1921 [ ac_cv_have_struct_in6_addr="no" ]
1922 )
1923])
1924if test "x$ac_cv_have_struct_in6_addr" = "xyes" ; then
1925 AC_DEFINE(HAVE_STRUCT_IN6_ADDR)
1926fi
48e671d5 1927
58d100bf 1928AC_CACHE_CHECK([for struct addrinfo], ac_cv_have_struct_addrinfo, [
1929 AC_TRY_COMPILE(
1930 [
18ba2aab 1931#include <sys/types.h>
1932#include <sys/socket.h>
1933#include <netdb.h>
58d100bf 1934 ],
1935 [ struct addrinfo s; s.ai_flags = AI_PASSIVE; ],
1936 [ ac_cv_have_struct_addrinfo="yes" ],
1937 [ ac_cv_have_struct_addrinfo="no" ]
1938 )
1939])
1940if test "x$ac_cv_have_struct_addrinfo" = "xyes" ; then
1941 AC_DEFINE(HAVE_STRUCT_ADDRINFO)
1942fi
1943
89c7e31c 1944AC_CACHE_CHECK([for struct timeval], ac_cv_have_struct_timeval, [
1945 AC_TRY_COMPILE(
aff51935 1946 [ #include <sys/time.h> ],
1947 [ struct timeval tv; tv.tv_sec = 1;],
89c7e31c 1948 [ ac_cv_have_struct_timeval="yes" ],
1949 [ ac_cv_have_struct_timeval="no" ]
1950 )
1951])
1952if test "x$ac_cv_have_struct_timeval" = "xyes" ; then
1953 AC_DEFINE(HAVE_STRUCT_TIMEVAL)
1954 have_struct_timeval=1
1955fi
1956
5271b55c 1957AC_CHECK_TYPES(struct timespec)
1958
85abc74b 1959# We need int64_t or else certian parts of the compile will fail.
2c523de9 1960if test "x$ac_cv_have_int64_t" = "xno" -a \
1961 "x$ac_cv_sizeof_long_int" != "x8" -a \
1962 "x$ac_cv_sizeof_long_long_int" = "x0" ; then
85abc74b 1963 echo "OpenSSH requires int64_t support. Contact your vendor or install"
1964 echo "an alternative compiler (I.E., GCC) before continuing."
1965 echo ""
1966 exit 1;
733cf7f4 1967else
1968dnl test snprintf (broken on SCO w/gcc)
1a01a50c 1969 AC_RUN_IFELSE(
479cece8 1970 [AC_LANG_SOURCE([[
733cf7f4 1971#include <stdio.h>
1972#include <string.h>
1973#ifdef HAVE_SNPRINTF
1974main()
1975{
1976 char buf[50];
1977 char expected_out[50];
1978 int mazsize = 50 ;
1979#if (SIZEOF_LONG_INT == 8)
1980 long int num = 0x7fffffffffffffff;
1981#else
763a1a18 1982 long long num = 0x7fffffffffffffffll;
733cf7f4 1983#endif
1984 strcpy(expected_out, "9223372036854775807");
1985 snprintf(buf, mazsize, "%lld", num);
1986 if(strcmp(buf, expected_out) != 0)
aff51935 1987 exit(1);
733cf7f4 1988 exit(0);
1989}
1990#else
1991main() { exit(0); }
1992#endif
479cece8 1993 ]])], [ true ], [ AC_DEFINE(BROKEN_SNPRINTF) ],
1a01a50c 1994 AC_MSG_WARN([cross compiling: Assuming working snprintf()])
733cf7f4 1995 )
2c523de9 1996fi
1997
77bb0bca 1998dnl Checks for structure members
58d100bf 1999OSSH_CHECK_HEADER_FOR_FIELD(ut_host, utmp.h, HAVE_HOST_IN_UTMP)
2000OSSH_CHECK_HEADER_FOR_FIELD(ut_host, utmpx.h, HAVE_HOST_IN_UTMPX)
2001OSSH_CHECK_HEADER_FOR_FIELD(syslen, utmpx.h, HAVE_SYSLEN_IN_UTMPX)
2002OSSH_CHECK_HEADER_FOR_FIELD(ut_pid, utmp.h, HAVE_PID_IN_UTMP)
2003OSSH_CHECK_HEADER_FOR_FIELD(ut_type, utmp.h, HAVE_TYPE_IN_UTMP)
25422c70 2004OSSH_CHECK_HEADER_FOR_FIELD(ut_type, utmpx.h, HAVE_TYPE_IN_UTMPX)
58d100bf 2005OSSH_CHECK_HEADER_FOR_FIELD(ut_tv, utmp.h, HAVE_TV_IN_UTMP)
2006OSSH_CHECK_HEADER_FOR_FIELD(ut_id, utmp.h, HAVE_ID_IN_UTMP)
daaff4d5 2007OSSH_CHECK_HEADER_FOR_FIELD(ut_id, utmpx.h, HAVE_ID_IN_UTMPX)
58d100bf 2008OSSH_CHECK_HEADER_FOR_FIELD(ut_addr, utmp.h, HAVE_ADDR_IN_UTMP)
2009OSSH_CHECK_HEADER_FOR_FIELD(ut_addr, utmpx.h, HAVE_ADDR_IN_UTMPX)
2010OSSH_CHECK_HEADER_FOR_FIELD(ut_addr_v6, utmp.h, HAVE_ADDR_V6_IN_UTMP)
2011OSSH_CHECK_HEADER_FOR_FIELD(ut_addr_v6, utmpx.h, HAVE_ADDR_V6_IN_UTMPX)
1d7b9b20 2012OSSH_CHECK_HEADER_FOR_FIELD(ut_exit, utmp.h, HAVE_EXIT_IN_UTMP)
2013OSSH_CHECK_HEADER_FOR_FIELD(ut_time, utmp.h, HAVE_TIME_IN_UTMP)
2014OSSH_CHECK_HEADER_FOR_FIELD(ut_time, utmpx.h, HAVE_TIME_IN_UTMPX)
2015OSSH_CHECK_HEADER_FOR_FIELD(ut_tv, utmpx.h, HAVE_TV_IN_UTMPX)
98a7c37b 2016
2017AC_CHECK_MEMBERS([struct stat.st_blksize])
1d7b9b20 2018
58d100bf 2019AC_CACHE_CHECK([for ss_family field in struct sockaddr_storage],
2020 ac_cv_have_ss_family_in_struct_ss, [
2021 AC_TRY_COMPILE(
2022 [
18ba2aab 2023#include <sys/types.h>
2024#include <sys/socket.h>
58d100bf 2025 ],
2026 [ struct sockaddr_storage s; s.ss_family = 1; ],
2027 [ ac_cv_have_ss_family_in_struct_ss="yes" ],
2028 [ ac_cv_have_ss_family_in_struct_ss="no" ],
2029 )
2030])
2031if test "x$ac_cv_have_ss_family_in_struct_ss" = "xyes" ; then
2032 AC_DEFINE(HAVE_SS_FAMILY_IN_SS)
2033fi
2034
58d100bf 2035AC_CACHE_CHECK([for __ss_family field in struct sockaddr_storage],
2036 ac_cv_have___ss_family_in_struct_ss, [
2037 AC_TRY_COMPILE(
2038 [
18ba2aab 2039#include <sys/types.h>
2040#include <sys/socket.h>
58d100bf 2041 ],
2042 [ struct sockaddr_storage s; s.__ss_family = 1; ],
2043 [ ac_cv_have___ss_family_in_struct_ss="yes" ],
2044 [ ac_cv_have___ss_family_in_struct_ss="no" ]
2045 )
2046])
2047if test "x$ac_cv_have___ss_family_in_struct_ss" = "xyes" ; then
2048 AC_DEFINE(HAVE___SS_FAMILY_IN_SS)
2049fi
2050
2e73a022 2051AC_CACHE_CHECK([for pw_class field in struct passwd],
2052 ac_cv_have_pw_class_in_struct_passwd, [
2053 AC_TRY_COMPILE(
2054 [
2e73a022 2055#include <pwd.h>
2056 ],
97994d32 2057 [ struct passwd p; p.pw_class = 0; ],
2e73a022 2058 [ ac_cv_have_pw_class_in_struct_passwd="yes" ],
2059 [ ac_cv_have_pw_class_in_struct_passwd="no" ]
2060 )
2061])
2062if test "x$ac_cv_have_pw_class_in_struct_passwd" = "xyes" ; then
2063 AC_DEFINE(HAVE_PW_CLASS_IN_PASSWD)
2064fi
2065
7751d4eb 2066AC_CACHE_CHECK([for pw_expire field in struct passwd],
2067 ac_cv_have_pw_expire_in_struct_passwd, [
2068 AC_TRY_COMPILE(
2069 [
2070#include <pwd.h>
2071 ],
2072 [ struct passwd p; p.pw_expire = 0; ],
2073 [ ac_cv_have_pw_expire_in_struct_passwd="yes" ],
2074 [ ac_cv_have_pw_expire_in_struct_passwd="no" ]
2075 )
2076])
2077if test "x$ac_cv_have_pw_expire_in_struct_passwd" = "xyes" ; then
2078 AC_DEFINE(HAVE_PW_EXPIRE_IN_PASSWD)
2079fi
2080
2081AC_CACHE_CHECK([for pw_change field in struct passwd],
2082 ac_cv_have_pw_change_in_struct_passwd, [
2083 AC_TRY_COMPILE(
2084 [
2085#include <pwd.h>
2086 ],
2087 [ struct passwd p; p.pw_change = 0; ],
2088 [ ac_cv_have_pw_change_in_struct_passwd="yes" ],
2089 [ ac_cv_have_pw_change_in_struct_passwd="no" ]
2090 )
2091])
2092if test "x$ac_cv_have_pw_change_in_struct_passwd" = "xyes" ; then
2093 AC_DEFINE(HAVE_PW_CHANGE_IN_PASSWD)
2094fi
58d100bf 2095
637f9177 2096dnl make sure we're using the real structure members and not defines
6f34652e 2097AC_CACHE_CHECK([for msg_accrights field in struct msghdr],
2098 ac_cv_have_accrights_in_msghdr, [
1a01a50c 2099 AC_COMPILE_IFELSE(
6f34652e 2100 [
f95c8ce8 2101#include <sys/types.h>
6f34652e 2102#include <sys/socket.h>
2103#include <sys/uio.h>
637f9177 2104int main() {
2105#ifdef msg_accrights
1a01a50c 2106#error "msg_accrights is a macro"
637f9177 2107exit(1);
2108#endif
2109struct msghdr m;
2110m.msg_accrights = 0;
2111exit(0);
2112}
6f34652e 2113 ],
6f34652e 2114 [ ac_cv_have_accrights_in_msghdr="yes" ],
2115 [ ac_cv_have_accrights_in_msghdr="no" ]
2116 )
2117])
2118if test "x$ac_cv_have_accrights_in_msghdr" = "xyes" ; then
2119 AC_DEFINE(HAVE_ACCRIGHTS_IN_MSGHDR)
2120fi
2121
7176df4f 2122AC_CACHE_CHECK([for msg_control field in struct msghdr],
2123 ac_cv_have_control_in_msghdr, [
1a01a50c 2124 AC_COMPILE_IFELSE(
7176df4f 2125 [
f95c8ce8 2126#include <sys/types.h>
7176df4f 2127#include <sys/socket.h>
2128#include <sys/uio.h>
637f9177 2129int main() {
2130#ifdef msg_control
1a01a50c 2131#error "msg_control is a macro"
637f9177 2132exit(1);
2133#endif
2134struct msghdr m;
2135m.msg_control = 0;
2136exit(0);
2137}
7176df4f 2138 ],
7176df4f 2139 [ ac_cv_have_control_in_msghdr="yes" ],
2140 [ ac_cv_have_control_in_msghdr="no" ]
2141 )
2142])
2143if test "x$ac_cv_have_control_in_msghdr" = "xyes" ; then
2144 AC_DEFINE(HAVE_CONTROL_IN_MSGHDR)
2145fi
2146
58d100bf 2147AC_CACHE_CHECK([if libc defines __progname], ac_cv_libc_defines___progname, [
aff51935 2148 AC_TRY_LINK([],
2149 [ extern char *__progname; printf("%s", __progname); ],
58d100bf 2150 [ ac_cv_libc_defines___progname="yes" ],
2151 [ ac_cv_libc_defines___progname="no" ]
2152 )
2153])
2154if test "x$ac_cv_libc_defines___progname" = "xyes" ; then
2155 AC_DEFINE(HAVE___PROGNAME)
2156fi
8946db53 2157
c921ee00 2158AC_CACHE_CHECK([whether $CC implements __FUNCTION__], ac_cv_cc_implements___FUNCTION__, [
2159 AC_TRY_LINK([
2160#include <stdio.h>
aff51935 2161],
2162 [ printf("%s", __FUNCTION__); ],
c921ee00 2163 [ ac_cv_cc_implements___FUNCTION__="yes" ],
2164 [ ac_cv_cc_implements___FUNCTION__="no" ]
2165 )
2166])
2167if test "x$ac_cv_cc_implements___FUNCTION__" = "xyes" ; then
2168 AC_DEFINE(HAVE___FUNCTION__)
2169fi
2170
2171AC_CACHE_CHECK([whether $CC implements __func__], ac_cv_cc_implements___func__, [
2172 AC_TRY_LINK([
2173#include <stdio.h>
aff51935 2174],
2175 [ printf("%s", __func__); ],
c921ee00 2176 [ ac_cv_cc_implements___func__="yes" ],
2177 [ ac_cv_cc_implements___func__="no" ]
2178 )
2179])
2180if test "x$ac_cv_cc_implements___func__" = "xyes" ; then
2181 AC_DEFINE(HAVE___func__)
2182fi
2183
1812a662 2184AC_CACHE_CHECK([whether getopt has optreset support],
2185 ac_cv_have_getopt_optreset, [
2186 AC_TRY_LINK(
2187 [
2188#include <getopt.h>
2189 ],
2190 [ extern int optreset; optreset = 0; ],
2191 [ ac_cv_have_getopt_optreset="yes" ],
2192 [ ac_cv_have_getopt_optreset="no" ]
2193 )
2194])
2195if test "x$ac_cv_have_getopt_optreset" = "xyes" ; then
2196 AC_DEFINE(HAVE_GETOPT_OPTRESET)
2197fi
a0391976 2198
819b676f 2199AC_CACHE_CHECK([if libc defines sys_errlist], ac_cv_libc_defines_sys_errlist, [
aff51935 2200 AC_TRY_LINK([],
2201 [ extern const char *const sys_errlist[]; printf("%s", sys_errlist[0]);],
819b676f 2202 [ ac_cv_libc_defines_sys_errlist="yes" ],
2203 [ ac_cv_libc_defines_sys_errlist="no" ]
2204 )
2205])
2206if test "x$ac_cv_libc_defines_sys_errlist" = "xyes" ; then
2207 AC_DEFINE(HAVE_SYS_ERRLIST)
2208fi
2209
2210
416ed5a7 2211AC_CACHE_CHECK([if libc defines sys_nerr], ac_cv_libc_defines_sys_nerr, [
aff51935 2212 AC_TRY_LINK([],
2213 [ extern int sys_nerr; printf("%i", sys_nerr);],
416ed5a7 2214 [ ac_cv_libc_defines_sys_nerr="yes" ],
2215 [ ac_cv_libc_defines_sys_nerr="no" ]
2216 )
2217])
2218if test "x$ac_cv_libc_defines_sys_nerr" = "xyes" ; then
2219 AC_DEFINE(HAVE_SYS_NERR)
2220fi
2221
aff51935 2222SCARD_MSG="no"
295c8801 2223# Check whether user wants sectok support
2224AC_ARG_WITH(sectok,
2225 [ --with-sectok Enable smartcard support using libsectok],
d0b19c95 2226 [
2227 if test "x$withval" != "xno" ; then
2228 if test "x$withval" != "xyes" ; then
2229 CPPFLAGS="$CPPFLAGS -I${withval}"
2230 LDFLAGS="$LDFLAGS -L${withval}"
2231 if test ! -z "$need_dash_r" ; then
2232 LDFLAGS="$LDFLAGS -R${withval}"
2233 fi
2234 if test ! -z "$blibpath" ; then
2235 blibpath="$blibpath:${withval}"
2236 fi
2237 fi
2238 AC_CHECK_HEADERS(sectok.h)
2239 if test "$ac_cv_header_sectok_h" != yes; then
2240 AC_MSG_ERROR(Can't find sectok.h)
2241 fi
2242 AC_CHECK_LIB(sectok, sectok_open)
2243 if test "$ac_cv_lib_sectok_sectok_open" != yes; then
2244 AC_MSG_ERROR(Can't find libsectok)
2245 fi
2246 AC_DEFINE(SMARTCARD)
295c8801 2247 AC_DEFINE(USE_SECTOK)
aff51935 2248 SCARD_MSG="yes, using sectok"
295c8801 2249 fi
2250 ]
2251)
2252
2253# Check whether user wants OpenSC support
2254AC_ARG_WITH(opensc,
49ef62db 2255 AC_HELP_STRING([--with-opensc=PFX],
2256 [Enable smartcard support using OpenSC]),
2257 opensc_config_prefix="$withval", opensc_config_prefix="")
2258if test x$opensc_config_prefix != x ; then
2259 OPENSC_CONFIG=$opensc_config_prefix/bin/opensc-config
2260 AC_PATH_PROG(OPENSC_CONFIG, opensc-config, no)
2261 if test "$OPENSC_CONFIG" != "no"; then
2262 LIBOPENSC_CFLAGS=`$OPENSC_CONFIG --cflags`
2263 LIBOPENSC_LIBS=`$OPENSC_CONFIG --libs`
2264 CPPFLAGS="$CPPFLAGS $LIBOPENSC_CFLAGS"
2265 LDFLAGS="$LDFLAGS $LIBOPENSC_LIBS"
2266 AC_DEFINE(SMARTCARD)
2267 AC_DEFINE(USE_OPENSC)
aff51935 2268 SCARD_MSG="yes, using OpenSC"
49ef62db 2269 fi
2270fi
d0b19c95 2271
c31dc31c 2272# Check libraries needed by DNS fingerprint support
aff51935 2273AC_SEARCH_LIBS(getrrsetbyname, resolv,
c31dc31c 2274 [AC_DEFINE(HAVE_GETRRSETBYNAME)],
3e05e934 2275 [
c31dc31c 2276 # Needed by our getrrsetbyname()
2277 AC_SEARCH_LIBS(res_query, resolv)
2278 AC_SEARCH_LIBS(dn_expand, resolv)
dabb524a 2279 AC_MSG_CHECKING(if res_query will link)
2280 AC_TRY_LINK_FUNC(res_query, AC_MSG_RESULT(yes),
2281 [AC_MSG_RESULT(no)
2282 saved_LIBS="$LIBS"
2283 LIBS="$LIBS -lresolv"
2284 AC_MSG_CHECKING(for res_query in -lresolv)
2285 AC_LINK_IFELSE([
2286#include <resolv.h>
2287int main()
2288{
2289 res_query (0, 0, 0, 0, 0);
2290 return 0;
2291}
2292 ],
2293 [LIBS="$LIBS -lresolv"
2294 AC_MSG_RESULT(yes)],
2295 [LIBS="$saved_LIBS"
2296 AC_MSG_RESULT(no)])
2297 ])
c31dc31c 2298 AC_CHECK_FUNCS(_getshort _getlong)
2299 AC_CHECK_MEMBER(HEADER.ad,
2300 [AC_DEFINE(HAVE_HEADER_AD)],,
2301 [#include <arpa/nameser.h>])
2302 ])
3e05e934 2303
12928e80 2304# Check whether user wants Kerberos 5 support
aff51935 2305KRB5_MSG="no"
12928e80 2306AC_ARG_WITH(kerberos5,
aff51935 2307 [ --with-kerberos5=PATH Enable Kerberos 5 support],
5585c441 2308 [ if test "x$withval" != "xno" ; then
2309 if test "x$withval" = "xyes" ; then
2310 KRB5ROOT="/usr/local"
2311 else
2312 KRB5ROOT=${withval}
2313 fi
2314
2315 AC_DEFINE(KRB5)
2316 KRB5_MSG="yes"
2317
2318 AC_MSG_CHECKING(for krb5-config)
2319 if test -x $KRB5ROOT/bin/krb5-config ; then
2320 KRB5CONF=$KRB5ROOT/bin/krb5-config
2321 AC_MSG_RESULT($KRB5CONF)
2322
2323 AC_MSG_CHECKING(for gssapi support)
2324 if $KRB5CONF | grep gssapi >/dev/null ; then
2325 AC_MSG_RESULT(yes)
071970fb 2326 AC_DEFINE(GSSAPI)
2327 k5confopts=gssapi
aff51935 2328 else
5585c441 2329 AC_MSG_RESULT(no)
071970fb 2330 k5confopts=""
aff51935 2331 fi
071970fb 2332 K5CFLAGS="`$KRB5CONF --cflags $k5confopts`"
2333 K5LIBS="`$KRB5CONF --libs $k5confopts`"
5585c441 2334 CPPFLAGS="$CPPFLAGS $K5CFLAGS"
5585c441 2335 AC_MSG_CHECKING(whether we are using Heimdal)
2336 AC_TRY_COMPILE([ #include <krb5.h> ],
2337 [ char *tmp = heimdal_version; ],
2338 [ AC_MSG_RESULT(yes)
2339 AC_DEFINE(HEIMDAL) ],
2340 AC_MSG_RESULT(no)
2341 )
2342 else
2343 AC_MSG_RESULT(no)
12928e80 2344 CPPFLAGS="$CPPFLAGS -I${KRB5ROOT}/include"
aff51935 2345 LDFLAGS="$LDFLAGS -L${KRB5ROOT}/lib"
aff51935 2346 AC_MSG_CHECKING(whether we are using Heimdal)
2347 AC_TRY_COMPILE([ #include <krb5.h> ],
2348 [ char *tmp = heimdal_version; ],
2349 [ AC_MSG_RESULT(yes)
2350 AC_DEFINE(HEIMDAL)
41707f74 2351 K5LIBS="-lkrb5 -ldes"
2352 K5LIBS="$K5LIBS -lcom_err -lasn1"
2353 AC_CHECK_LIB(roken, net_write,
2354 [K5LIBS="$K5LIBS -lroken"])
aff51935 2355 ],
2356 [ AC_MSG_RESULT(no)
2357 K5LIBS="-lkrb5 -lk5crypto -lcom_err"
2358 ]
2359 )
4e00038c 2360 AC_SEARCH_LIBS(dn_expand, resolv)
12928e80 2361
749560dd 2362 AC_CHECK_LIB(gssapi,gss_init_sec_context,
2363 [ AC_DEFINE(GSSAPI)
2364 K5LIBS="-lgssapi $K5LIBS" ],
2365 [ AC_CHECK_LIB(gssapi_krb5,gss_init_sec_context,
2366 [ AC_DEFINE(GSSAPI)
aff51935 2367 K5LIBS="-lgssapi_krb5 $K5LIBS" ],
749560dd 2368 AC_MSG_WARN([Cannot find any suitable gss-api library - build may fail]),
2369 $K5LIBS)
2370 ],
2371 $K5LIBS)
2372
2373 AC_CHECK_HEADER(gssapi.h, ,
2374 [ unset ac_cv_header_gssapi_h
aff51935 2375 CPPFLAGS="$CPPFLAGS -I${KRB5ROOT}/include/gssapi"
749560dd 2376 AC_CHECK_HEADERS(gssapi.h, ,
2377 AC_MSG_WARN([Cannot find any suitable gss-api header - build may fail])
aff51935 2378 )
749560dd 2379 ]
2380 )
2381
2382 oldCPP="$CPPFLAGS"
2383 CPPFLAGS="$CPPFLAGS -I${KRB5ROOT}/include/gssapi"
2384 AC_CHECK_HEADER(gssapi_krb5.h, ,
2385 [ CPPFLAGS="$oldCPP" ])
2386
aff51935 2387 fi
5585c441 2388 if test ! -z "$need_dash_r" ; then
2389 LDFLAGS="$LDFLAGS -R${KRB5ROOT}/lib"
2390 fi
2391 if test ! -z "$blibpath" ; then
2392 blibpath="$blibpath:${KRB5ROOT}/lib"
2393 fi
071970fb 2394 fi
2395
2396 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h)
2397 AC_CHECK_HEADERS(gssapi_krb5.h gssapi/gssapi_krb5.h)
2398 AC_CHECK_HEADERS(gssapi_generic.h gssapi/gssapi_generic.h)
2399
2400 LIBS="$LIBS $K5LIBS"
2401 AC_SEARCH_LIBS(k_hasafs, kafs, AC_DEFINE(USE_AFS))
79753592 2402 AC_SEARCH_LIBS(krb5_init_ets, $K5LIBS, AC_DEFINE(KRB5_INIT_ETS))
071970fb 2403 ]
12928e80 2404)
b5b68128 2405
a0391976 2406# Looking for programs, paths and files
a0391976 2407
ecac8ee5 2408PRIVSEP_PATH=/var/empty
2409AC_ARG_WITH(privsep-path,
cda1ebcb 2410 [ --with-privsep-path=xxx Path for privilege separation chroot (default=/var/empty)],
ecac8ee5 2411 [
2412 if test "x$withval" != "$no" ; then
2413 PRIVSEP_PATH=$withval
2414 fi
2415 ]
2416)
2417AC_SUBST(PRIVSEP_PATH)
2418
a0391976 2419AC_ARG_WITH(xauth,
2420 [ --with-xauth=PATH Specify path to xauth program ],
2421 [
00937921 2422 if test "x$withval" != "xno" ; then
cbd7492e 2423 xauth_path=$withval
a0391976 2424 fi
2425 ],
2426 [
2bf42e4a 2427 TestPath="$PATH"
2428 TestPath="${TestPath}${PATH_SEPARATOR}/usr/X/bin"
2429 TestPath="${TestPath}${PATH_SEPARATOR}/usr/bin/X11"
2430 TestPath="${TestPath}${PATH_SEPARATOR}/usr/X11R6/bin"
2431 TestPath="${TestPath}${PATH_SEPARATOR}/usr/openwin/bin"
2432 AC_PATH_PROG(xauth_path, xauth, , $TestPath)
e5fe9a1f 2433 if (test ! -z "$xauth_path" && test -x "/usr/openwin/bin/xauth") ; then
a0391976 2434 xauth_path="/usr/openwin/bin/xauth"
2435 fi
2436 ]
2437)
2438
65a4b4af 2439STRIP_OPT=-s
2440AC_ARG_ENABLE(strip,
2441 [ --disable-strip Disable calling strip(1) on install],
2442 [
2443 if test "x$enableval" = "xno" ; then
2444 STRIP_OPT=
2445 fi
2446 ]
2447)
2448AC_SUBST(STRIP_OPT)
2449
b3ec54b4 2450if test -z "$xauth_path" ; then
2451 XAUTH_PATH="undefined"
2452 AC_SUBST(XAUTH_PATH)
2453else
a0391976 2454 AC_DEFINE_UNQUOTED(XAUTH_PATH, "$xauth_path")
b3ec54b4 2455 XAUTH_PATH=$xauth_path
2456 AC_SUBST(XAUTH_PATH)
a0391976 2457fi
a0391976 2458
2459# Check for mail directory (last resort if we cannot get it from headers)
2460if test ! -z "$MAIL" ; then
2461 maildir=`dirname $MAIL`
2462 AC_DEFINE_UNQUOTED(MAIL_DIRECTORY, "$maildir")
2463fi
2464
479cece8 2465if test ! -z "$cross_compiling" && test "x$cross_compiling" = "xyes"; then
1a01a50c 2466 AC_MSG_WARN([cross compiling: Disabling /dev/ptmx test])
2467 disable_ptmx_check=yes
2468fi
a0391976 2469if test -z "$no_dev_ptmx" ; then
6e879cb4 2470 if test "x$disable_ptmx_check" != "xyes" ; then
aff51935 2471 AC_CHECK_FILE("/dev/ptmx",
6e879cb4 2472 [
2473 AC_DEFINE_UNQUOTED(HAVE_DEV_PTMX)
2474 have_dev_ptmx=1
2475 ]
2476 )
2477 fi
3276571c 2478fi
1a01a50c 2479
479cece8 2480if test ! -z "$cross_compiling" && test "x$cross_compiling" != "xyes"; then
1a01a50c 2481 AC_CHECK_FILE("/dev/ptc",
2482 [
2483 AC_DEFINE_UNQUOTED(HAVE_DEV_PTS_AND_PTC)
2484 have_dev_ptc=1
2485 ]
2486 )
2487else
2488 AC_MSG_WARN([cross compiling: Disabling /dev/ptc test])
2489fi
3276571c 2490
a0391976 2491# Options from here on. Some of these are preset by platform above
fdf6b7aa 2492AC_ARG_WITH(mantype,
5d97cfbf 2493 [ --with-mantype=man|cat|doc Set man page type],
c54a6257 2494 [
5d97cfbf 2495 case "$withval" in
2496 man|cat|doc)
2497 MANTYPE=$withval
2498 ;;
2499 *)
2500 AC_MSG_ERROR(invalid man type: $withval)
2501 ;;
2502 esac
c54a6257 2503 ]
2504)
e0c4d3ac 2505if test -z "$MANTYPE"; then
2bf42e4a 2506 TestPath="/usr/bin${PATH_SEPARATOR}/usr/ucb"
2507 AC_PATH_PROGS(NROFF, nroff awf, /bin/false, $TestPath)
e0c4d3ac 2508 if ${NROFF} -mdoc ${srcdir}/ssh.1 >/dev/null 2>&1; then
2509 MANTYPE=doc
2510 elif ${NROFF} -man ${srcdir}/ssh.1 >/dev/null 2>&1; then
2511 MANTYPE=man
2512 else
2513 MANTYPE=cat
2514 fi
2515fi
c54a6257 2516AC_SUBST(MANTYPE)
e0c4d3ac 2517if test "$MANTYPE" = "doc"; then
2518 mansubdir=man;
2519else
2520 mansubdir=$MANTYPE;
2521fi
2522AC_SUBST(mansubdir)
0bc5b6fb 2523
a0391976 2524# Check whether to enable MD5 passwords
aff51935 2525MD5_MSG="no"
2ddcfdf3 2526AC_ARG_WITH(md5-passwords,
caf3bc51 2527 [ --with-md5-passwords Enable use of MD5 passwords],
0bc5b6fb 2528 [
bcf36c78 2529 if test "x$withval" != "xno" ; then
0bc5b6fb 2530 AC_DEFINE(HAVE_MD5_PASSWORDS)
aff51935 2531 MD5_MSG="yes"
0bc5b6fb 2532 fi
2533 ]
caf3bc51 2534)
2535
a0391976 2536# Whether to disable shadow password support
a7effaac 2537AC_ARG_WITH(shadow,
2538 [ --without-shadow Disable shadow password support],
2539 [
2540 if test "x$withval" = "xno" ; then
2541 AC_DEFINE(DISABLE_SHADOW)
4cb5ffa0 2542 disable_shadow=yes
a7effaac 2543 fi
2544 ]
2545)
2546
4cb5ffa0 2547if test -z "$disable_shadow" ; then
2548 AC_MSG_CHECKING([if the systems has expire shadow information])
2549 AC_TRY_COMPILE(
2550 [
2551#include <sys/types.h>
2552#include <shadow.h>
2553 struct spwd sp;
2554 ],[ sp.sp_expire = sp.sp_lstchg = sp.sp_inact = 0; ],
2555 [ sp_expire_available=yes ], []
2556 )
2557
2558 if test "x$sp_expire_available" = "xyes" ; then
2559 AC_MSG_RESULT(yes)
2560 AC_DEFINE(HAS_SHADOW_EXPIRE)
2561 else
2562 AC_MSG_RESULT(no)
2563 fi
2564fi
2565
a0391976 2566# Use ip address instead of hostname in $DISPLAY
44839801 2567if test ! -z "$IPADDR_IN_DISPLAY" ; then
2568 DISPLAY_HACK_MSG="yes"
2569 AC_DEFINE(IPADDR_IN_DISPLAY)
2570else
aff51935 2571 DISPLAY_HACK_MSG="no"
44839801 2572 AC_ARG_WITH(ipaddr-display,
2573 [ --with-ipaddr-display Use ip address instead of hostname in \$DISPLAY],
2574 [
2575 if test "x$withval" != "xno" ; then
2576 AC_DEFINE(IPADDR_IN_DISPLAY)
aff51935 2577 DISPLAY_HACK_MSG="yes"
44839801 2578 fi
2579 ]
2580 )
2581fi
a7effaac 2582
95b99395 2583# check for /etc/default/login and use it if present.
daa41e62 2584AC_ARG_ENABLE(etc-default-login,
2585 [ --disable-etc-default-login Disable using PATH from /etc/default/login [no]],,
1a01a50c 2586 [ AC_CHECK_FILE("/etc/default/login",
2587 [ external_path_file=/etc/default/login ])
95b99395 2588
479cece8 2589 if test ! -z "$cross_compiling" && test "x$cross_compiling" = "xyes";
2590 then
1a01a50c 2591 AC_MSG_WARN([cross compiling: Disabling /etc/default/login test])
2592 elif test "x$external_path_file" = "x/etc/default/login"; then
2593 AC_DEFINE(HAVE_ETC_DEFAULT_LOGIN)
2594 fi
2595 ]
2596)
95b99395 2597
8d184c09 2598dnl BSD systems use /etc/login.conf so --with-default-path= has no effect
2599if test $ac_cv_func_login_getcapbool = "yes" -a \
2600 $ac_cv_header_login_cap_h = "yes" ; then
95b99395 2601 external_path_file=/etc/login.conf
8d184c09 2602fi
95b99395 2603
a0391976 2604# Whether to mess with the default path
aff51935 2605SERVER_PATH_MSG="(default)"
c43d69a9 2606AC_ARG_WITH(default-path,
75817f90 2607 [ --with-default-path= Specify default \$PATH environment for server],
cb807f40 2608 [
95b99395 2609 if test "x$external_path_file" = "x/etc/login.conf" ; then
8d184c09 2610 AC_MSG_WARN([
2611--with-default-path=PATH has no effect on this system.
2612Edit /etc/login.conf instead.])
2613 elif test "x$withval" != "xno" ; then
89bbd457 2614 if test ! -z "$external_path_file" ; then
95b99395 2615 AC_MSG_WARN([
2616--with-default-path=PATH will only be used if PATH is not defined in
2617$external_path_file .])
2618 fi
b2d818e6 2619 user_path="$withval"
aff51935 2620 SERVER_PATH_MSG="$withval"
cb807f40 2621 fi
b2d818e6 2622 ],
95b99395 2623 [ if test "x$external_path_file" = "x/etc/login.conf" ; then
2624 AC_MSG_WARN([Make sure the path to scp is in /etc/login.conf])
8d184c09 2625 else
89bbd457 2626 if test ! -z "$external_path_file" ; then
95b99395 2627 AC_MSG_WARN([
2628If PATH is defined in $external_path_file, ensure the path to scp is included,
2629otherwise scp will not work.])
2630 fi
2631 AC_TRY_RUN(
2632 [
b2d818e6 2633/* find out what STDPATH is */
2634#include <stdio.h>
b2d818e6 2635#ifdef HAVE_PATHS_H
2636# include <paths.h>
2637#endif
2638#ifndef _PATH_STDPATH
d9a4e55b 2639# ifdef _PATH_USERPATH /* Irix */
2640# define _PATH_STDPATH _PATH_USERPATH
2641# else
2642# define _PATH_STDPATH "/usr/bin:/bin:/usr/sbin:/sbin"
2643# endif
b2d818e6 2644#endif
2645#include <sys/types.h>
2646#include <sys/stat.h>
2647#include <fcntl.h>
2648#define DATA "conftest.stdpath"
2649
2650main()
2651{
2652 FILE *fd;
2653 int rc;
2654
2655 fd = fopen(DATA,"w");
2656 if(fd == NULL)
2657 exit(1);
2658
2659 if ((rc = fprintf(fd,"%s", _PATH_STDPATH)) < 0)
2660 exit(1);
2661
2662 exit(0);
2663}
2664 ], [ user_path=`cat conftest.stdpath` ],
2665 [ user_path="/usr/bin:/bin:/usr/sbin:/sbin" ],
2666 [ user_path="/usr/bin:/bin:/usr/sbin:/sbin" ]
2667 )
2668# make sure $bindir is in USER_PATH so scp will work
2669 t_bindir=`eval echo ${bindir}`
2670 case $t_bindir in
2671 NONE/*) t_bindir=`echo $t_bindir | sed "s~NONE~$prefix~"` ;;
2672 esac
2673 case $t_bindir in
2674 NONE/*) t_bindir=`echo $t_bindir | sed "s~NONE~$ac_default_prefix~"` ;;
2675 esac
2676 echo $user_path | grep ":$t_bindir" > /dev/null 2>&1
2677 if test $? -ne 0 ; then
2678 echo $user_path | grep "^$t_bindir" > /dev/null 2>&1
2679 if test $? -ne 0 ; then
2680 user_path=$user_path:$t_bindir
2681 AC_MSG_RESULT(Adding $t_bindir to USER_PATH so scp will work)
2682 fi
2683 fi
8d184c09 2684 fi ]
cb807f40 2685)
95b99395 2686if test "x$external_path_file" != "x/etc/login.conf" ; then
8d184c09 2687 AC_DEFINE_UNQUOTED(USER_PATH, "$user_path")
2688 AC_SUBST(user_path)
2689fi
cb807f40 2690
06617857 2691# Set superuser path separately to user path
06617857 2692AC_ARG_WITH(superuser-path,
2693 [ --with-superuser-path= Specify different path for super-user],
2694 [
2695 if test "x$withval" != "xno" ; then
2696 AC_DEFINE_UNQUOTED(SUPERUSER_PATH, "$withval")
2697 superuser_path=$withval
2698 fi
2699 ]
2700)
2701
2702
58d100bf 2703AC_MSG_CHECKING([if we need to convert IPv4 in IPv6-mapped addresses])
aff51935 2704IPV4_IN6_HACK_MSG="no"
80faa19f 2705AC_ARG_WITH(4in6,
2706 [ --with-4in6 Check for and convert IPv4 in IPv6 mapped addresses],
2707 [
2708 if test "x$withval" != "xno" ; then
2709 AC_MSG_RESULT(yes)
2710 AC_DEFINE(IPV4_IN_IPV6)
aff51935 2711 IPV4_IN6_HACK_MSG="yes"
80faa19f 2712 else
2713 AC_MSG_RESULT(no)
2714 fi
2715 ],[
2716 if test "x$inet6_default_4in6" = "xyes"; then
2717 AC_MSG_RESULT([yes (default)])
2718 AC_DEFINE(IPV4_IN_IPV6)
aff51935 2719 IPV4_IN6_HACK_MSG="yes"
80faa19f 2720 else
2721 AC_MSG_RESULT([no (default)])
2722 fi
2723 ]
2724)
2725
af774732 2726# Whether to enable BSD auth support
f1b0ecc3 2727BSD_AUTH_MSG=no
af774732 2728AC_ARG_WITH(bsd-auth,
2729 [ --with-bsd-auth Enable BSD auth support],
2730 [
2731 if test "x$withval" != "xno" ; then
2732 AC_DEFINE(BSD_AUTH)
f1b0ecc3 2733 BSD_AUTH_MSG=yes
af774732 2734 fi
2735 ]
2736)
2737
a0391976 2738# Where to place sshd.pid
19d9ac2a 2739piddir=/var/run
81dadca3 2740# make sure the directory exists
2741if test ! -d $piddir ; then
2742 piddir=`eval echo ${sysconfdir}`
2743 case $piddir in
aff51935 2744 NONE/*) piddir=`echo $piddir | sed "s~NONE~$ac_default_prefix~"` ;;
81dadca3 2745 esac
2746fi
2747
47e45e44 2748AC_ARG_WITH(pid-dir,
2749 [ --with-pid-dir=PATH Specify location of ssh.pid file],
2750 [
2751 if test "x$withval" != "xno" ; then
19d9ac2a 2752 piddir=$withval
81dadca3 2753 if test ! -d $piddir ; then
2754 AC_MSG_WARN([** no $piddir directory on this system **])
2755 fi
47e45e44 2756 fi
2757 ]
2758)
b7a87eea 2759
42f11eb2 2760AC_DEFINE_UNQUOTED(_PATH_SSH_PIDDIR, "$piddir")
19d9ac2a 2761AC_SUBST(piddir)
47e45e44 2762
1d7b9b20 2763dnl allow user to disable some login recording features
2764AC_ARG_ENABLE(lastlog,
bfd550a2 2765 [ --disable-lastlog disable use of lastlog even if detected [no]],
ddb154b3 2766 [
2767 if test "x$enableval" = "xno" ; then
2768 AC_DEFINE(DISABLE_LASTLOG)
2769 fi
2770 ]
1d7b9b20 2771)
2772AC_ARG_ENABLE(utmp,
bfd550a2 2773 [ --disable-utmp disable use of utmp even if detected [no]],
ddb154b3 2774 [
2775 if test "x$enableval" = "xno" ; then
2776 AC_DEFINE(DISABLE_UTMP)
2777 fi
2778 ]
1d7b9b20 2779)
2780AC_ARG_ENABLE(utmpx,
bfd550a2 2781 [ --disable-utmpx disable use of utmpx even if detected [no]],
ddb154b3 2782 [
2783 if test "x$enableval" = "xno" ; then
2784 AC_DEFINE(DISABLE_UTMPX)
2785 fi
2786 ]
1d7b9b20 2787)
2788AC_ARG_ENABLE(wtmp,
bfd550a2 2789 [ --disable-wtmp disable use of wtmp even if detected [no]],
ddb154b3 2790 [
2791 if test "x$enableval" = "xno" ; then
2792 AC_DEFINE(DISABLE_WTMP)
2793 fi
2794 ]
1d7b9b20 2795)
2796AC_ARG_ENABLE(wtmpx,
bfd550a2 2797 [ --disable-wtmpx disable use of wtmpx even if detected [no]],
ddb154b3 2798 [
2799 if test "x$enableval" = "xno" ; then
2800 AC_DEFINE(DISABLE_WTMPX)
2801 fi
2802 ]
1d7b9b20 2803)
2804AC_ARG_ENABLE(libutil,
bfd550a2 2805 [ --disable-libutil disable use of libutil (login() etc.) [no]],
ddb154b3 2806 [
2807 if test "x$enableval" = "xno" ; then
2808 AC_DEFINE(DISABLE_LOGIN)
2809 fi
2810 ]
1d7b9b20 2811)
2812AC_ARG_ENABLE(pututline,
bfd550a2 2813 [ --disable-pututline disable use of pututline() etc. ([uw]tmp) [no]],
ddb154b3 2814 [
2815 if test "x$enableval" = "xno" ; then
aff51935 2816 AC_DEFINE(DISABLE_PUTUTLINE)
ddb154b3 2817 fi
2818 ]
1d7b9b20 2819)
2820AC_ARG_ENABLE(pututxline,
bfd550a2 2821 [ --disable-pututxline disable use of pututxline() etc. ([uw]tmpx) [no]],
ddb154b3 2822 [
2823 if test "x$enableval" = "xno" ; then
2824 AC_DEFINE(DISABLE_PUTUTXLINE)
2825 fi
2826 ]
1d7b9b20 2827)
2828AC_ARG_WITH(lastlog,
bfd550a2 2829 [ --with-lastlog=FILE|DIR specify lastlog location [common locations]],
8c89dd2b 2830 [
2831 if test "x$withval" = "xno" ; then
2832 AC_DEFINE(DISABLE_LASTLOG)
2833 else
2834 conf_lastlog_location=$withval
2835 fi
2836 ]
2837)
1d7b9b20 2838
2839dnl lastlog, [uw]tmpx? detection
2840dnl NOTE: set the paths in the platform section to avoid the
2841dnl need for command-line parameters
2842dnl lastlog and [uw]tmp are subject to a file search if all else fails
2843
2844dnl lastlog detection
2845dnl NOTE: the code itself will detect if lastlog is a directory
2846AC_MSG_CHECKING([if your system defines LASTLOG_FILE])
2847AC_TRY_COMPILE([
2848#include <sys/types.h>
2849#include <utmp.h>
2850#ifdef HAVE_LASTLOG_H
2851# include <lastlog.h>
2852#endif
d7c0f3d5 2853#ifdef HAVE_PATHS_H
1d7b9b20 2854# include <paths.h>
41cb4569 2855#endif
2856#ifdef HAVE_LOGIN_H
2857# include <login.h>
1d7b9b20 2858#endif
2859 ],
2860 [ char *lastlog = LASTLOG_FILE; ],
2861 [ AC_MSG_RESULT(yes) ],
d7c0f3d5 2862 [
2863 AC_MSG_RESULT(no)
2864 AC_MSG_CHECKING([if your system defines _PATH_LASTLOG])
2865 AC_TRY_COMPILE([
2866#include <sys/types.h>
2867#include <utmp.h>
2868#ifdef HAVE_LASTLOG_H
2869# include <lastlog.h>
2870#endif
2871#ifdef HAVE_PATHS_H
2872# include <paths.h>
2873#endif
2874 ],
2875 [ char *lastlog = _PATH_LASTLOG; ],
2876 [ AC_MSG_RESULT(yes) ],
2877 [
f282b668 2878 AC_MSG_RESULT(no)
d7c0f3d5 2879 system_lastlog_path=no
2880 ])
2881 ]
1d7b9b20 2882)
d7c0f3d5 2883
1d7b9b20 2884if test -z "$conf_lastlog_location"; then
2885 if test x"$system_lastlog_path" = x"no" ; then
2886 for f in /var/log/lastlog /usr/adm/lastlog /var/adm/lastlog /etc/security/lastlog ; do
e5fe9a1f 2887 if (test -d "$f" || test -f "$f") ; then
1d7b9b20 2888 conf_lastlog_location=$f
2889 fi
2890 done
2891 if test -z "$conf_lastlog_location"; then
f8119cef 2892 AC_MSG_WARN([** Cannot find lastlog **])
2893 dnl Don't define DISABLE_LASTLOG - that means we don't try wtmp/wtmpx
1d7b9b20 2894 fi
2895 fi
2896fi
2897
2898if test -n "$conf_lastlog_location"; then
2899 AC_DEFINE_UNQUOTED(CONF_LASTLOG_FILE, "$conf_lastlog_location")
2900fi
2901
2902dnl utmp detection
2903AC_MSG_CHECKING([if your system defines UTMP_FILE])
2904AC_TRY_COMPILE([
2905#include <sys/types.h>
2906#include <utmp.h>
d7c0f3d5 2907#ifdef HAVE_PATHS_H
1d7b9b20 2908# include <paths.h>
2909#endif
2910 ],
2911 [ char *utmp = UTMP_FILE; ],
2912 [ AC_MSG_RESULT(yes) ],
2913 [ AC_MSG_RESULT(no)
2914 system_utmp_path=no ]
2915)
2916if test -z "$conf_utmp_location"; then
2917 if test x"$system_utmp_path" = x"no" ; then
2918 for f in /etc/utmp /usr/adm/utmp /var/run/utmp; do
2919 if test -f $f ; then
2920 conf_utmp_location=$f
2921 fi
2922 done
2923 if test -z "$conf_utmp_location"; then
2924 AC_DEFINE(DISABLE_UTMP)
2925 fi
2926 fi
2927fi
2928if test -n "$conf_utmp_location"; then
2929 AC_DEFINE_UNQUOTED(CONF_UTMP_FILE, "$conf_utmp_location")
2930fi
2931
2932dnl wtmp detection
2933AC_MSG_CHECKING([if your system defines WTMP_FILE])
2934AC_TRY_COMPILE([
2935#include <sys/types.h>
2936#include <utmp.h>
d7c0f3d5 2937#ifdef HAVE_PATHS_H
1d7b9b20 2938# include <paths.h>
2939#endif
2940 ],
2941 [ char *wtmp = WTMP_FILE; ],
2942 [ AC_MSG_RESULT(yes) ],
2943 [ AC_MSG_RESULT(no)
2944 system_wtmp_path=no ]
2945)
2946if test -z "$conf_wtmp_location"; then
2947 if test x"$system_wtmp_path" = x"no" ; then
2948 for f in /usr/adm/wtmp /var/log/wtmp; do
2949 if test -f $f ; then
2950 conf_wtmp_location=$f
2951 fi
2952 done
2953 if test -z "$conf_wtmp_location"; then
2954 AC_DEFINE(DISABLE_WTMP)
2955 fi
2956 fi
2957fi
2958if test -n "$conf_wtmp_location"; then
2959 AC_DEFINE_UNQUOTED(CONF_WTMP_FILE, "$conf_wtmp_location")
2960fi
2961
2962
2963dnl utmpx detection - I don't know any system so perverse as to require
2964dnl utmpx, but not define UTMPX_FILE (ditto wtmpx.) No doubt it's out
2965dnl there, though.
2966AC_MSG_CHECKING([if your system defines UTMPX_FILE])
2967AC_TRY_COMPILE([
2968#include <sys/types.h>
2969#include <utmp.h>
2970#ifdef HAVE_UTMPX_H
2971#include <utmpx.h>
2972#endif
d7c0f3d5 2973#ifdef HAVE_PATHS_H
1d7b9b20 2974# include <paths.h>
2975#endif
2976 ],
2977 [ char *utmpx = UTMPX_FILE; ],
2978 [ AC_MSG_RESULT(yes) ],
2979 [ AC_MSG_RESULT(no)
2980 system_utmpx_path=no ]
2981)
2982if test -z "$conf_utmpx_location"; then
2983 if test x"$system_utmpx_path" = x"no" ; then
2984 AC_DEFINE(DISABLE_UTMPX)
2985 fi
2986else
2987 AC_DEFINE_UNQUOTED(CONF_UTMPX_FILE, "$conf_utmpx_location")
2988fi
2989
2990dnl wtmpx detection
2991AC_MSG_CHECKING([if your system defines WTMPX_FILE])
2992AC_TRY_COMPILE([
2993#include <sys/types.h>
2994#include <utmp.h>
2995#ifdef HAVE_UTMPX_H
2996#include <utmpx.h>
2997#endif
d7c0f3d5 2998#ifdef HAVE_PATHS_H
1d7b9b20 2999# include <paths.h>
3000#endif
3001 ],
3002 [ char *wtmpx = WTMPX_FILE; ],
3003 [ AC_MSG_RESULT(yes) ],
3004 [ AC_MSG_RESULT(no)
3005 system_wtmpx_path=no ]
3006)
3007if test -z "$conf_wtmpx_location"; then
3008 if test x"$system_wtmpx_path" = x"no" ; then
3009 AC_DEFINE(DISABLE_WTMPX)
3010 fi
3011else
3012 AC_DEFINE_UNQUOTED(CONF_WTMPX_FILE, "$conf_wtmpx_location")
3013fi
3014
b7a87eea 3015
bd499f9e 3016if test ! -z "$blibpath" ; then
68ece370 3017 LDFLAGS="$LDFLAGS $blibflags$blibpath"
3018 AC_MSG_WARN([Please check and edit blibpath in LDFLAGS in Makefile])
bd499f9e 3019fi
3020
ddceb1c8 3021dnl remove pam and dl because they are in $LIBPAM
3022if test "$PAM_MSG" = yes ; then
98f2d9d5 3023 LIBS=`echo $LIBS | sed 's/-lpam //'`
3024fi
3025if test "$ac_cv_lib_pam_pam_set_item" = yes ; then
3026 LIBS=`echo $LIBS | sed 's/-ldl //'`
ddceb1c8 3027fi
3028
3c62e7eb 3029AC_EXEEXT
d7cfdd7c 3030AC_CONFIG_FILES([Makefile buildpkg.sh opensshd.init openbsd-compat/Makefile \
3031 scard/Makefile ssh_prng_cmds survey.sh])
98a7c37b 3032AC_OUTPUT
d3083fbd 3033
cbd7492e 3034# Print summary of options
3035
cbd7492e 3036# Someone please show me a better way :)
3037A=`eval echo ${prefix}` ; A=`eval echo ${A}`
3038B=`eval echo ${bindir}` ; B=`eval echo ${B}`
3039C=`eval echo ${sbindir}` ; C=`eval echo ${C}`
3040D=`eval echo ${sysconfdir}` ; D=`eval echo ${D}`
f5665f6f 3041E=`eval echo ${libexecdir}/ssh-askpass` ; E=`eval echo ${E}`
e0c4d3ac 3042F=`eval echo ${mandir}/${mansubdir}X` ; F=`eval echo ${F}`
cbd7492e 3043G=`eval echo ${piddir}` ; G=`eval echo ${G}`
ecac8ee5 3044H=`eval echo ${PRIVSEP_PATH}` ; H=`eval echo ${H}`
3045I=`eval echo ${user_path}` ; I=`eval echo ${I}`
3046J=`eval echo ${superuser_path}` ; J=`eval echo ${J}`
cbd7492e 3047
3048echo ""
26de7942 3049echo "OpenSSH has been configured with the following options:"
ecac8ee5 3050echo " User binaries: $B"
3051echo " System binaries: $C"
3052echo " Configuration files: $D"
3053echo " Askpass program: $E"
3054echo " Manual pages: $F"
3055echo " PID file: $G"
3056echo " Privilege separation chroot path: $H"
95b99395 3057if test "x$external_path_file" = "x/etc/login.conf" ; then
3058echo " At runtime, sshd will use the path defined in $external_path_file"
3059echo " Make sure the path to scp is present, otherwise scp will not work"
8d184c09 3060else
ecac8ee5 3061echo " sshd default user PATH: $I"
89bbd457 3062 if test ! -z "$external_path_file"; then
95b99395 3063echo " (If PATH is set in $external_path_file it will be used instead. If"
3064echo " used, ensure the path to scp is present, otherwise scp will not work.)"
3065 fi
8d184c09 3066fi
06617857 3067if test ! -z "$superuser_path" ; then
ecac8ee5 3068echo " sshd superuser user PATH: $J"
3069fi
3070echo " Manpage format: $MANTYPE"
3e05e934 3071echo " PAM support: $PAM_MSG"
ecac8ee5 3072echo " KerberosV support: $KRB5_MSG"
3073echo " Smartcard support: $SCARD_MSG"
ecac8ee5 3074echo " S/KEY support: $SKEY_MSG"
3075echo " TCP Wrappers support: $TCPW_MSG"
3076echo " MD5 password support: $MD5_MSG"
59031773 3077echo " libedit support: $LIBEDIT_MSG"
3deb1408 3078echo " IP address in \$DISPLAY hack: $DISPLAY_HACK_MSG"
ecac8ee5 3079echo " Translate v4 in v6 hack: $IPV4_IN6_HACK_MSG"
3080echo " BSD Auth support: $BSD_AUTH_MSG"
3081echo " Random number source: $RAND_MSG"
f1b0ecc3 3082if test ! -z "$USE_RAND_HELPER" ; then
ecac8ee5 3083echo " ssh-rand-helper collects from: $RAND_HELPER_MSG"
af774732 3084fi
3085
cbd7492e 3086echo ""
3087
0c2fb82f 3088echo " Host: ${host}"
3089echo " Compiler: ${CC}"
3090echo " Compiler flags: ${CFLAGS}"
3091echo "Preprocessor flags: ${CPPFLAGS}"
3092echo " Linker flags: ${LDFLAGS}"
ddceb1c8 3093echo " Libraries: ${LIBWRAP} ${LIBPAM} ${LIBS}"
cbd7492e 3094
3095echo ""
3096
9cefe228 3097if test "x$MAKE_PACKAGE_SUPPORTED" = "xyes" ; then
b3146b5f 3098 echo "SVR4 style packages are supported with \"make package\""
3099 echo ""
9cefe228 3100fi
3101
adeebd37 3102if test "x$PAM_MSG" = "xyes" ; then
f1b0ecc3 3103 echo "PAM is enabled. You may need to install a PAM control file "
3104 echo "for sshd, otherwise password authentication may fail. "
aff51935 3105 echo "Example PAM control files can be found in the contrib/ "
f1b0ecc3 3106 echo "subdirectory"
adeebd37 3107 echo ""
3108fi
3109
f1b0ecc3 3110if test ! -z "$RAND_HELPER_CMDHASH" ; then
3111 echo "WARNING: you are using the builtin random number collection "
3112 echo "service. Please read WARNING.RNG and request that your OS "
3113 echo "vendor includes kernel-based random number collection in "
3114 echo "future versions of your OS."
2c523de9 3115 echo ""
3116fi
af774732 3117
2f6f9cff 3118if test ! -z "$NO_PEERCHECK" ; then
3119 echo "WARNING: the operating system that you are using does not "
3120 echo "appear to support either the getpeereid() API nor the "
3121 echo "SO_PEERCRED getsockopt() option. These facilities are used to "
3122 echo "enforce security checks to prevent unauthorised connections to "
3123 echo "ssh-agent. Their absence increases the risk that a malicious "
3124 echo "user can connect to your agent. "
3125 echo ""
3126fi
3127
This page took 0.810398 seconds and 5 git commands to generate.