diff options
234 files changed, 10755 insertions, 5736 deletions
@@ -1,6 +1,6 @@ | |||
1 | Tatu Ylonen <ylo@cs.hut.fi> - Creator of SSH | 1 | Tatu Ylonen <ylo@cs.hut.fi> - Creator of SSH |
2 | 2 | ||
3 | Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos, | 3 | Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos, |
4 | Theo de Raadt, and Dug Song - Creators of OpenSSH | 4 | Theo de Raadt, and Dug Song - Creators of OpenSSH |
5 | 5 | ||
6 | Alain St-Denis <Alain.St-Denis@ec.gc.ca> - Irix fix | 6 | Alain St-Denis <Alain.St-Denis@ec.gc.ca> - Irix fix |
@@ -88,11 +88,12 @@ Tom Bertelson's <tbert@abac.com> - AIX auth fixes | |||
88 | Tor-Ake Fransson <torake@hotmail.com> - AIX support | 88 | Tor-Ake Fransson <torake@hotmail.com> - AIX support |
89 | Tudor Bosman <tudorb@jm.nu> - MD5 password support | 89 | Tudor Bosman <tudorb@jm.nu> - MD5 password support |
90 | Udo Schweigert <ust@cert.siemens.de> - ReliantUNIX support | 90 | Udo Schweigert <ust@cert.siemens.de> - ReliantUNIX support |
91 | Wendy Palm <wendyp at cray.com> - Cray support. | ||
91 | Zack Weinberg <zack@wolery.cumb.org> - GNOME askpass enhancement | 92 | Zack Weinberg <zack@wolery.cumb.org> - GNOME askpass enhancement |
92 | 93 | ||
93 | Apologies to anyone I have missed. | 94 | Apologies to anyone I have missed. |
94 | 95 | ||
95 | Damien Miller <djm@mindrot.org> | 96 | Damien Miller <djm@mindrot.org> |
96 | 97 | ||
97 | $Id: CREDITS,v 1.74 2003/09/07 02:34:54 dtucker Exp $ | 98 | $Id: CREDITS,v 1.77 2004/01/30 04:00:50 dtucker Exp $ |
98 | 99 | ||
@@ -1,30 +1,714 @@ | |||
1 | 20030923 | 1 | 20040224 |
2 | - (dtucker) OpenBSD CVS Sync | 2 | - (dtucker) OpenBSD CVS Sync |
3 | - markus@cvs.openbsd.org 2003/09/18 07:52:54 | 3 | - markus@cvs.openbsd.org 2004/02/19 21:15:04 |
4 | [sftp-server.c] | ||
5 | switch to new license.template | ||
6 | - markus@cvs.openbsd.org 2004/02/23 12:02:33 | ||
7 | [sshd.c] | ||
8 | backout revision 1.279; set listen socket to non-block; ok henning. | ||
9 | - markus@cvs.openbsd.org 2004/02/23 15:12:46 | ||
10 | [bufaux.c] | ||
11 | encode 0 correctly in buffer_put_bignum2; noted by Mikulas Patocka | ||
12 | and drop support for negative BNs; ok otto@ | ||
13 | - markus@cvs.openbsd.org 2004/02/23 15:16:46 | ||
14 | [version.h] | ||
15 | enter 3.8 | ||
16 | - (dtucker) [configure.ac gss-serv-krb5.c ssh-gss.h] Define GSSAPI when found | ||
17 | with krb5-config, hunt down gssapi.h and friends. Based partially on patch | ||
18 | from deengert at anl.gov. ok djm@ | ||
19 | - (djm) [groupaccess.c uidswap.c] Bug #787: Size group arrays at runtime | ||
20 | using sysconf() if available Based on patches from | ||
21 | holger AT van-lengerich.de and openssh_bugzilla AT hockin.org | ||
22 | - (dtucker) [uidswap.c] Minor KNF. ok djm@ | ||
23 | - (tim) [openbsd-compat/getrrsetbyname.c] Make gcc 2.7.2.3 happy. ok djm@ | ||
24 | - (djm) Crank RPM spec versions | ||
25 | - (dtucker) [README] Add pointer to release notes. ok djm@ | ||
26 | - (dtucker) {README.platform] Add platform-specific notes. | ||
27 | - (tim) [configure.ac] SCO3 needs -lcrypt_i for -lprot | ||
28 | - (djm) Release 3.8p1 | ||
29 | |||
30 | 20040223 | ||
31 | - (dtucker) [session.c] Bug #789: Only make setcred call for !privsep in the | ||
32 | non-interactive path. ok djm@ | ||
33 | |||
34 | 20040222 | ||
35 | - (dtucker) [auth-shadow.c auth.c auth.h] Move shadow account expiry test | ||
36 | to auth-shadow.c, no functional change. ok djm@ | ||
37 | - (dtucker) [auth-shadow.c auth.h] Provide warnings of impending account or | ||
38 | password expiry. ok djm@ | ||
39 | - (dtucker) [auth-passwd.c] Only check password expiry once. Prevents | ||
40 | multiple warnings if a wrong password is entered. | ||
41 | - (dtucker) [configure.ac] Apply krb5-config --libs fix to non-gssapi path | ||
42 | too. | ||
43 | |||
44 | 20040220 | ||
45 | - (djm) [openbsd-compat/setproctitle.c] fix comments; from grange@ | ||
46 | |||
47 | 20040218 | ||
48 | - (dtucker) [configure.ac] Handle case where krb5-config --libs returns a | ||
49 | path with a "-" in it. From Sergio.Gelato at astro.su.se. | ||
50 | - (djm) OpenBSD CVS Sync | ||
51 | - djm@cvs.openbsd.org 2004/02/17 07:17:29 | ||
52 | [sftp-glob.c sftp.c] | ||
53 | Remove useless headers; ok deraadt@ | ||
54 | - djm@cvs.openbsd.org 2004/02/17 11:03:08 | ||
55 | [sftp.c] | ||
56 | sftp.c and sftp-int.c, together at last; ok markus@ | ||
57 | - jmc@cvs.openbsd.org 2004/02/17 19:35:21 | ||
58 | [sshd_config.5] | ||
59 | remove cruft left over from RhostsAuthentication removal; | ||
60 | ok markus@ | ||
61 | - (djm) [log.c] Correct use of HAVE_OPENLOG_R | ||
62 | - (djm) [log.c] Tighten openlog_r tests | ||
63 | |||
64 | 20040217 | ||
65 | - (djm) Simplify the license on code I have written. No code changes. | ||
66 | - (djm) OpenBSD CVS Sync | ||
67 | - djm@cvs.openbsd.org 2004/02/17 05:39:51 | ||
68 | [sftp-client.c sftp-client.h sftp-glob.c sftp-glob.h sftp-int.c] | ||
69 | [sftp-int.h sftp.c] | ||
70 | switch to license.template for code written by me (belated, I know...) | ||
71 | - (djm) Bug #698: Specify FILE: for KRB5CCNAME; patch from | ||
72 | stadal@suse.cz and simon@sxw.org.uk | ||
73 | - (dtucker) [auth-pam.c] Tidy up PAM debugging. ok djm@ | ||
74 | - (dtucker) [auth-pam.c] Store output from pam_session and pam_setcred for | ||
75 | display after login. Should fix problems like pam_motd not displaying | ||
76 | anything, noticed by cjwatson at debian.org. ok djm@ | ||
77 | |||
78 | 20040212 | ||
79 | - (tim) [Makefile.in regress/sftp-badcmds.sh regress/test-exec.sh] | ||
80 | Portablity fixes. Data sftp transfers needs to be world readable. Some | ||
81 | older shells hang on while loops when doing sh -n some_script. OK dtucker@ | ||
82 | - (tim) [configure.ac] Make sure -lcrypto is before -lsocket for sco3. | ||
83 | ok mouring@ | ||
84 | |||
85 | 20040211 | ||
86 | - (dtucker) [auth-passwd.c auth-shadow.c] Only enable shadow expiry check | ||
87 | if HAS_SHADOW_EXPIRY is set. | ||
88 | - (tim) [configure.ac] Fix comment to match code changes in ver 1.117 | ||
89 | |||
90 | 20040210 | ||
91 | - (dtucker) [auth-passwd.c auth.h openbsd-compat/port-aix.c | ||
92 | openbsd-compat/port-aix.h] Bug #14: Use do_pwchange to support AIX's | ||
93 | native password expiry. | ||
94 | - (dtucker) [LICENCE Makefile.in auth-passwd.c auth-shadow.c auth.c auth.h | ||
95 | defines.h] Bug #14: Use do_pwchange to support password expiry and force | ||
96 | change for platforms using /etc/shadow. ok djm@ | ||
97 | - (dtucker) [openbsd-compat/fake-rfc2553.h] Bug #563: Prepend ssh_ to compat | ||
98 | functions to avoid conflicts with Heimdal's libroken. ok djm@ | ||
99 | - (dtucker) [auth-pam.c auth-pam.h session.c] Bug #14: Use do_pwchange to | ||
100 | change expired PAM passwords for SSHv1 connections without privsep. | ||
101 | pam_chauthtok is still used when privsep is disabled. ok djm@ | ||
102 | - (dtucker) [openbsd-compat/port-aix.c openbsd-compat/port-aix.h] Move | ||
103 | include from port-aix.h to port-aix.c and remove unnecessary function | ||
104 | definition. Fixes build errors on AIX. | ||
105 | - (dtucker) [configure.ac loginrec.c] Bug #464: Use updwtmpx on platforms | ||
106 | that support it. from & ok mouring@ | ||
107 | - (dtucker) [configure.ac] Bug #345: Do not disable utmp on HP-UX 10.x. | ||
108 | ok djm@ | ||
109 | |||
110 | 20040207 | ||
111 | - (dtucker) OpenBSD CVS Sync | ||
112 | - dtucker@cvs.openbsd.org 2004/02/06 23:41:13 | ||
113 | [cipher-ctr.c] | ||
114 | Use EVP_CIPHER_CTX_key_length for key length. ok markus@ | ||
115 | (This will fix builds with OpenSSL 0.9.5) | ||
116 | - (dtucker) [cipher.c] enable AES counter modes with OpenSSL 0.9.5. | ||
117 | ok djm@, markus@ | ||
118 | |||
119 | 20040206 | ||
120 | - (dtucker) [acss.c acss.h] Fix $Id tags. | ||
121 | - (dtucker) [cipher-acss.c cipher.c] Enable acss only if building with | ||
122 | OpenSSL >= 0.9.7. ok djm@ | ||
123 | - (dtucker) [session.c] Bug #789: Do not call do_pam_setcred as a non-root | ||
124 | user, since some modules might fail due to lack of privilege. ok djm@ | ||
125 | - (dtucker) [configure.ac] Bug #748: Always define BROKEN_GETADDRINFO | ||
126 | for HP-UX 11.11. If there are known-good configs where this is not | ||
127 | required, please report them. ok djm@ | ||
128 | - (dtucker) [sshd.c] Bug #757: Clear child's environment to prevent | ||
129 | accidentally inheriting from root's environment. ok djm@ | ||
130 | - (dtucker) [openbsd-compat/port-aix.c openbsd-compat/port-aix.h] Bug #796: | ||
131 | Restore previous authdb setting after auth calls. Fixes problems with | ||
132 | setpcred failing on accounts that use AFS or NIS password registries. | ||
133 | - (dtucker) [configure.ac includes.h] Include <sys/stream.h> if present, | ||
134 | required on Solaris 2.5.1 for queue_t, which is used by <sys/ptms.h>. | ||
135 | - (dtucker) OpenBSD CVS Sync | ||
136 | - markus@cvs.openbsd.org 2004/01/30 09:48:57 | ||
137 | [auth-passwd.c auth.h pathnames.h session.c] | ||
138 | support for password change; ok dtucker@ | ||
139 | (set password-dead=1w in login.conf to use this). | ||
140 | In -Portable, this is currently only platforms using bsdauth. | ||
141 | - dtucker@cvs.openbsd.org 2004/02/05 05:37:17 | ||
142 | [monitor.c sshd.c] | ||
143 | Pass SIGALRM through to privsep child if LoginGraceTime expires. ok markus@ | ||
144 | - markus@cvs.openbsd.org 2004/02/05 15:33:33 | ||
145 | [progressmeter.c] | ||
146 | fix ETA for > 4GB; bugzilla #791; ok henning@ deraadt@ | ||
147 | |||
148 | 20040129 | ||
149 | - (dtucker) OpenBSD CVS Sync regress/ | ||
150 | - dtucker@cvs.openbsd.org 2003/10/11 11:49:49 | ||
151 | [Makefile banner.sh] | ||
152 | Test missing banner file, suppression of banner with ssh -q, check return | ||
153 | code from ssh. ok markus@ | ||
154 | - jmc@cvs.openbsd.org 2003/11/07 10:16:44 | ||
155 | [ssh-com.sh] | ||
156 | adress -> address, and a few more; all from Jonathon Gray; | ||
157 | - djm@cvs.openbsd.org 2004/01/13 09:49:06 | ||
158 | [sftp-batch.sh] | ||
159 | - (dtucker) [configure.ac] Add --without-zlib-version-check. Feedback from | ||
160 | tim@, ok several | ||
161 | - (dtucker) [configure.ac openbsd-compat/bsd-cray.c openbsd-compat/bsd-cray.h] | ||
162 | Bug #775: Cray fixes from wendy at cray.com | ||
163 | |||
164 | 20040128 | ||
165 | - (dtucker) [regress/README.regress] Add tcpwrappers issue, noted by tim@ | ||
166 | - (dtucker) [moduli] Import new moduli file from OpenBSD. | ||
167 | |||
168 | 20040127 | ||
169 | - (djm) OpenBSD CVS Sync | ||
170 | - hshoexer@cvs.openbsd.org 2004/01/23 17:06:03 | ||
171 | [cipher.c] | ||
172 | enable acss for ssh | ||
173 | ok deraadt@ markus@ | ||
174 | - mouring@cvs.openbsd.org 2004/01/23 17:57:48 | ||
175 | [sftp-int.c] | ||
176 | Fix issue pointed out with ls not handling large directories | ||
177 | with embeded paths correctly. OK damien@ | ||
178 | - hshoexer@cvs.openbsd.org 2004/01/23 19:26:33 | ||
179 | [cipher.c] | ||
180 | rename acss@opebsd.org to acss@openssh.org | ||
181 | ok deraadt@ | ||
182 | - djm@cvs.openbsd.org 2004/01/25 03:49:09 | ||
4 | [sshconnect.c] | 183 | [sshconnect.c] |
5 | missing {}; bug #656; jclonguet at free.fr | 184 | reset nonblocking flag after ConnectTimeout > 0 connect; (bugzilla #785) |
6 | - markus@cvs.openbsd.org 2003/09/18 07:54:48 | 185 | from jclonguet AT free.fr; ok millert@ |
7 | [buffer.c] | 186 | - djm@cvs.openbsd.org 2004/01/27 10:08:10 |
8 | protect against double free; #660; zardoz at users.sf.net | 187 | [sftp.c] |
9 | - markus@cvs.openbsd.org 2003/09/18 08:49:45 | 188 | reorder parsing so user:skey@host:file works (bugzilla #777) |
10 | [deattack.c misc.c session.c ssh-agent.c] | 189 | patch from admorten AT umich.edu; ok markus@ |
11 | more buffer allocation fixes; from Solar Designer; CAN-2003-0682; | 190 | - (djm) [acss.c acss.h cipher-acss.c] Portable support for ACSS |
12 | ok millert@ | 191 | if libcrypto lacks it |
13 | - markus@cvs.openbsd.org 2003/09/19 09:02:02 | 192 | |
14 | [packet.c] | 193 | 20040126 |
15 | buffer_dump only if PACKET_DEBUG is defined; Jedi/Sector One; pr 3471 | 194 | - (tim) Typo in regress/README.regress |
16 | - (djm) Fix SSH1 challenge kludge | 195 | - (tim) [regress/test-exec.sh] RhostsAuthentication is deprecated. |
17 | - (djm) Bug #671: Fix builds on OpenBSD | 196 | - (tim) [defines.h] Add defines for HFIXEDSZ and T_SIG |
18 | - (djm) Bug #676: Fix PAM stack corruption | 197 | - (tim) [configure.ac includes.h] add <sys/ptms.h> for grantpt() and friends. |
19 | - (djm) Fix bad free() in PAM code | 198 | - (tim) [defines.h openbsd-compat/getrrsetbyname.h] Move defines for HFIXEDSZ |
20 | - (djm) Don't call pam_end before pam_init | 199 | and T_SIG to getrrsetbyname.h |
21 | - (djm) Enable build with old OpenSSL again | 200 | |
22 | - (djm) Trim deprecated options from INSTALL. Mention UsePAM | 201 | 20040124 |
23 | - (djm) Fix quote handling in sftp; Patch from admorten AT umich.edu | 202 | - (djm) Typo in openbsd-compat/bsd-openpty.c; from wendyp AT cray.com |
24 | - (djm) Crank version.h and spec version numbers | 203 | |
25 | - (djm) Release 3.7.1p2 | 204 | 20040123 |
26 | 205 | - (djm) Do pam_session processing for systems with HAVE_LOGIN_CAP; from | |
27 | 20030922 | 206 | ralf.hack AT pipex.net; ok dtucker@ |
207 | - (djm) Bug #776: Update contrib/redhat/openssh.spec to dynamically detect | ||
208 | Kerberos location (and thus work with Fedora Core 1); | ||
209 | from jason AT devrandom.org | ||
210 | - (dtucker) [configure.ac] Bug #788: Test for zlib.h presence and for | ||
211 | zlib >= 1.1.4. Partly from jbasney at ncsa.uiuc.edu. ok djm@ | ||
212 | - (dtucker) [contrib/cygwin/README] Document new ssh-host-config options. | ||
213 | Patch from vinschen at redhat.com. | ||
214 | - (dtucker) [acconfig.h configure.ac includes.h servconf.c session.c] | ||
215 | Change AFS symbol to USE_AFS to prevent namespace collisions, do not | ||
216 | include kafs.h unless necessary. From deengert at anl.gov. | ||
217 | - (tim) [configure.ac] Remove hard coded -L/usr/local/lib and | ||
218 | -I/usr/local/include. Users can do LDFLAGS="-L/usr/local/lib" \ | ||
219 | CPPFLAGS="-I/usr/local/include" ./configure if needed. | ||
220 | |||
221 | 20040122 | ||
222 | - (dtucker) [configure.ac] Use krb5-config where available for Kerberos/ | ||
223 | GSSAPI detection, libs and includes. ok djm@ | ||
224 | - (dtucker) [session.c] Enable AFS support in conjunction with KRB5 not | ||
225 | just HEIMDAL. | ||
226 | - (tim) [contrib/solaris/buildpkg.sh] Allow for the possibility of | ||
227 | /usr/local being a symbolic link. Fixes problem reported by Henry Grebler. | ||
228 | |||
229 | 20040121 | ||
230 | - (djm) OpenBSD CVS Sync | ||
231 | - djm@cvs.openbsd.org 2004/01/13 09:25:05 | ||
232 | [sftp-int.c sftp.1 sftp.c] | ||
233 | Tidy sftp batchmode handling, eliminate junk to stderr (bugzilla #754) and | ||
234 | enable use of "-b -" to accept batchfile from stdin; ok markus@ | ||
235 | - jmc@cvs.openbsd.org 2004/01/13 12:17:33 | ||
236 | [sftp.1] | ||
237 | remove unnecessary Ic's; | ||
238 | kill whitespace at EOL; | ||
239 | ok djm@ | ||
240 | - markus@cvs.openbsd.org 2004/01/13 19:23:15 | ||
241 | [compress.c session.c] | ||
242 | -Wall; ok henning | ||
243 | - markus@cvs.openbsd.org 2004/01/13 19:45:15 | ||
244 | [compress.c] | ||
245 | cast for portability; millert@ | ||
246 | - markus@cvs.openbsd.org 2004/01/19 09:24:21 | ||
247 | [channels.c] | ||
248 | fake consumption for half closed channels since the peer is waiting for | ||
249 | window adjust messages; bugzilla #790 Matthew Dillon; test + ok dtucker@ | ||
250 | reproduce with sh -c 'ulimit -f 10; ssh host -n od /bsd | cat > foo' | ||
251 | - markus@cvs.openbsd.org 2004/01/19 21:25:15 | ||
252 | [auth2-hostbased.c auth2-pubkey.c serverloop.c ssh-keysign.c sshconnect2.c] | ||
253 | fix mem leaks; some fixes from Pete Flugstad; tested dtucker@ | ||
254 | - djm@cvs.openbsd.org 2004/01/21 03:07:59 | ||
255 | [sftp.c] | ||
256 | initialise infile in main, rather than statically - from portable | ||
257 | - deraadt@cvs.openbsd.org 2004/01/11 21:55:06 | ||
258 | [sshpty.c] | ||
259 | for pty opening, only use the openpty() path. the other stuff only needs | ||
260 | to be in openssh-p; markus ok | ||
261 | - (djm) [openbsd-compat/bsd-openpty.c] Rework old sshpty.c code into an | ||
262 | openpty() replacement | ||
263 | |||
264 | 20040114 | ||
265 | - (dtucker) [auth-pam.c] Have monitor die if PAM authentication thread exits | ||
266 | unexpectedly. with & ok djm@ | ||
267 | - (dtucker) [auth-pam.c] Reset signal handler in pthread_cancel too, add | ||
268 | test for case where cleanup has already run. | ||
269 | - (dtucker) [auth-pam.c] Add minor debugging. | ||
270 | |||
271 | 20040113 | ||
272 | - (dtucker) [auth-pam.c] Relocate struct pam_ctxt and prototypes. No | ||
273 | functional changes. | ||
274 | |||
275 | 20040108 | ||
276 | - (dtucker) [auth-pam.c defines.h] Bug #783: move __unused to defines.h and | ||
277 | only define if not already. From des at freebsd.org. | ||
278 | - (dtucker) [configure.ac] Remove extra (typo) comma. | ||
279 | |||
280 | 20040105 | ||
281 | - (dtucker) [contrib/ssh-copy-id] Bug #781: exit if ssh fails. Patch from | ||
282 | cjwatson at debian.org. | ||
283 | - (dtucker) [acconfig.h configure.ac includes.h servconf.c session.c] | ||
284 | Only enable KerberosGetAFSToken if Heimdal's libkafs is found. with jakob@ | ||
285 | |||
286 | 20040102 | ||
287 | - (djm) OSX/Darwin needs BIND_8_COMPAT to build getrrsetbyname. Report from | ||
288 | jakob@ | ||
289 | - (djm) Remove useless DNS support configure summary message. from jakob@ | ||
290 | - (djm) OSX/Darwin put the PAM headers in a different place, detect this. | ||
291 | Report from jakob@ | ||
292 | |||
293 | 20031231 | ||
294 | - (dtucker) OpenBSD CVS Sync | ||
295 | - djm@cvs.openbsd.org 2003/12/22 09:16:58 | ||
296 | [moduli.c ssh-keygen.1 ssh-keygen.c] | ||
297 | tidy up moduli generation debugging, add -v (verbose/debug) option to | ||
298 | ssh-keygen; ok markus@ | ||
299 | - markus@cvs.openbsd.org 2003/12/22 20:29:55 | ||
300 | [cipher-3des1.c] | ||
301 | EVP_CIPHER_CTX_cleanup() for the des contexts; pruiksma@freesurf.fr | ||
302 | - jakob@cvs.openbsd.org 2003/12/23 16:12:10 | ||
303 | [servconf.c servconf.h session.c sshd_config] | ||
304 | implement KerberosGetAFSToken server option. ok markus@, beck@ | ||
305 | - millert@cvs.openbsd.org 2003/12/29 16:39:50 | ||
306 | [sshd_config] | ||
307 | KeepAlive has been obsoleted, use TCPKeepAlive instead; markus@ OK | ||
308 | - dtucker@cvs.openbsd.org 2003/12/31 00:24:50 | ||
309 | [auth2-passwd.c] | ||
310 | Ignore password change request during password auth (which we currently | ||
311 | don't support) and discard proposed new password. corrections/ok markus@ | ||
312 | - (dtucker) [configure.ac] Only test setresuid and setresgid if they exist. | ||
313 | |||
314 | 20031219 | ||
315 | - (dtucker) [defines.h] Bug #458: Define SIZE_T_MAX as UINT_MAX if we | ||
316 | typedef size_t ourselves. | ||
317 | |||
318 | 20031218 | ||
319 | - (dtucker) [configure.ac] Don't use setre[ug]id on DG-UX, from Tom Orban. | ||
320 | - (dtucker) [auth-pam.c] Do PAM chauthtok during SSH2 keyboard-interactive | ||
321 | authentication. Partially fixes bug #423. Feedback & ok djm@ | ||
322 | |||
323 | 20031217 | ||
324 | - (djm) OpenBSD CVS Sync | ||
325 | - markus@cvs.openbsd.org 2003/12/09 15:28:43 | ||
326 | [serverloop.c] | ||
327 | make ClientKeepAlive work for ssh -N, too (no login shell requested). | ||
328 | 1) send a bogus channel request if we find a channel | ||
329 | 2) send a bogus global request if we don't have a channel | ||
330 | ok + test beck@ | ||
331 | - markus@cvs.openbsd.org 2003/12/09 17:29:04 | ||
332 | [sshd.c] | ||
333 | fix -o and HUP; ok henning@ | ||
334 | - markus@cvs.openbsd.org 2003/12/09 17:30:05 | ||
335 | [ssh.c] | ||
336 | don't modify argv for ssh -o; similar to sshd.c 1.283 | ||
337 | - markus@cvs.openbsd.org 2003/12/09 21:53:37 | ||
338 | [readconf.c readconf.h scp.1 servconf.c servconf.h sftp.1 ssh.1] | ||
339 | [ssh_config.5 sshconnect.c sshd.c sshd_config.5] | ||
340 | rename keepalive to tcpkeepalive; the old name causes too much | ||
341 | confusion; ok djm, dtucker; with help from jmc@ | ||
342 | - dtucker@cvs.openbsd.org 2003/12/09 23:45:32 | ||
343 | [clientloop.c] | ||
344 | Clear exit code when ssh -N is terminated with a SIGTERM. ok markus@ | ||
345 | - markus@cvs.openbsd.org 2003/12/14 12:37:21 | ||
346 | [ssh_config.5] | ||
347 | we don't support GSS KEX; from Simon Wilkinson | ||
348 | - markus@cvs.openbsd.org 2003/12/16 15:49:51 | ||
349 | [clientloop.c clientloop.h readconf.c readconf.h scp.1 sftp.1 ssh.1] | ||
350 | [ssh.c ssh_config.5] | ||
351 | application layer keep alive (ServerAliveInterval ServerAliveCountMax) | ||
352 | for ssh(1), similar to the sshd(8) option; ok beck@; with help from | ||
353 | jmc and dtucker@ | ||
354 | - markus@cvs.openbsd.org 2003/12/16 15:51:54 | ||
355 | [dh.c] | ||
356 | use <= instead of < in dh_estimate; ok provos/hshoexer; | ||
357 | do not return < DH_GRP_MIN | ||
358 | - (dtucker) [acconfig.h configure.ac uidswap.c] Bug #645: Check for | ||
359 | setres[ug]id() present but not implemented (eg some Linux/glibc | ||
360 | combinations). | ||
361 | - (bal) [openbsd-compat/bsd-misc.c] unset 'signal' defined if we are | ||
362 | using a real 'signal()' (Noticed by a NeXT Compile) | ||
363 | |||
364 | 20031209 | ||
365 | - (dtucker) OpenBSD CVS Sync | ||
366 | - matthieu@cvs.openbsd.org 2003/11/25 23:10:08 | ||
367 | [ssh-add.1] | ||
368 | ssh-add doesn't need to be a descendant of ssh-agent. Ok markus@, jmc@. | ||
369 | - djm@cvs.openbsd.org 2003/11/26 21:44:29 | ||
370 | [cipher-aes.c] | ||
371 | fix #ifdef before #define; ok markus@ | ||
372 | (RCS ID sync only, Portable already had this) | ||
373 | - markus@cvs.openbsd.org 2003/12/02 12:15:10 | ||
374 | [progressmeter.c] | ||
375 | improvments from andreas@: | ||
376 | * saner speed estimate for transfers that takes less than a second by | ||
377 | rounding the time to 1 second. | ||
378 | * when the transfer is finished calculate the actual total speed | ||
379 | rather than the current speed which is given during the transfer | ||
380 | - markus@cvs.openbsd.org 2003/12/02 17:01:15 | ||
381 | [channels.c session.c ssh-agent.c ssh.h sshd.c] | ||
382 | use SSH_LISTEN_BACKLOG (=128) in listen(2). | ||
383 | - djm@cvs.openbsd.org 2003/12/07 06:34:18 | ||
384 | [moduli.c] | ||
385 | remove unused debugging #define templates | ||
386 | - markus@cvs.openbsd.org 2003/12/08 11:00:47 | ||
387 | [kexgexc.c] | ||
388 | print requested group size in debug; ok djm | ||
389 | - dtucker@cvs.openbsd.org 2003/12/09 13:52:55 | ||
390 | [moduli.c] | ||
391 | Prevent ssh-keygen -T from outputting moduli with a generator of 0, since | ||
392 | they can't be used for Diffie-Hellman. Assistance and ok djm@ | ||
393 | - (dtucker) [ssh-keyscan.c] Sync RCSIDs, missed in SSH_SSFDMAX change below. | ||
394 | |||
395 | 20031208 | ||
396 | - (tim) [configure.ac] Bug 770. Fix --without-rpath. | ||
397 | |||
398 | 20031123 | ||
399 | - (djm) [canohost.c] Move IPv4inV6 mapped address normalisation to its own | ||
400 | function and call it unconditionally | ||
401 | - (djm) OpenBSD CVS Sync | ||
402 | - djm@cvs.openbsd.org 2003/11/23 23:17:34 | ||
403 | [ssh-keyscan.c] | ||
404 | from portable - use sysconf to detect fd limit; ok markus@ | ||
405 | (tidy diff by adding SSH_SSFDMAX macro to defines.h) | ||
406 | - djm@cvs.openbsd.org 2003/11/23 23:18:45 | ||
407 | [ssh-keygen.c] | ||
408 | consistency PATH_MAX -> MAXPATHLEN; ok markus@ | ||
409 | (RCS ID sync only) | ||
410 | - djm@cvs.openbsd.org 2003/11/23 23:21:21 | ||
411 | [scp.c] | ||
412 | from portable: rename clashing variable limit-> limit_rate; ok markus@ | ||
413 | (RCS ID sync only) | ||
414 | - dtucker@cvs.openbsd.org 2003/11/24 00:16:35 | ||
415 | [ssh.1 ssh.c] | ||
416 | Make ssh -k mean GSSAPIDelegateCredentials=no. Suggestion & ok markus@ | ||
417 | - (djm) Annotate OpenBSD-derived files in openbsd-compat/ with original | ||
418 | source file path (in OpenBSD tree). | ||
419 | |||
420 | 20031122 | ||
421 | - (dtucker) [channels.c] Make AIX write limit code clearer. Suggested by djm@ | ||
422 | - (dtucker) [auth-passwd.c openbsd-compat/port-aix.c openbsd-compat/port-aix.h] | ||
423 | Move AIX specific password authentication code to port-aix.c, call | ||
424 | authenticate() until reenter flag is clear. | ||
425 | - (dtucker) [auth-sia.c configure.ac] Tru64 update from cmadams at hiwaay.net. | ||
426 | Use permanently_set_uid for SIA, only define DISABLE_FD_PASSING when SIA | ||
427 | is enabled, rely on SIA to check for locked accounts if enabled. ok djm@ | ||
428 | - (djm) [scp.c] Rename limitbw -> limit_rate to match upstreamed patch | ||
429 | - (djm) [sftp-int.c] Remove duplicated code from bogus sync | ||
430 | - (djm) [packet.c] Shuffle #ifdef to reduce conditionally compiled code | ||
431 | |||
432 | 20031121 | ||
433 | - (djm) OpenBSD CVS Sync | ||
434 | - markus@cvs.openbsd.org 2003/11/20 11:39:28 | ||
435 | [progressmeter.c] | ||
436 | fix rounding errors; from andreas@ | ||
437 | - djm@cvs.openbsd.org 2003/11/21 11:57:03 | ||
438 | [everything] | ||
439 | unexpand and delete whitespace at EOL; ok markus@ | ||
440 | (done locally and RCS IDs synced) | ||
441 | |||
442 | 20031118 | ||
443 | - (djm) Fix early exit for root auth success when UsePAM=yes and | ||
444 | PermitRootLogin=no | ||
445 | - (dtucker) [auth-pam.c] Convert chauthtok_conv into a generic tty_conv, | ||
446 | and use it for do_pam_session. Fixes problems like pam_motd not | ||
447 | displaying anything. ok djm@ | ||
448 | - (dtucker) [auth-pam.c] Only use pam_putenv if our platform has it. ok djm@ | ||
449 | - (djm) OpenBSD CVS Sync | ||
450 | - dtucker@cvs.openbsd.org 2003/11/18 00:40:05 | ||
451 | [serverloop.c] | ||
452 | Correct check for authctxt->valid. ok djm@ | ||
453 | - djm@cvs.openbsd.org 2003/11/18 10:53:07 | ||
454 | [monitor.c] | ||
455 | unbreak fake authloop for non-existent users (my screwup). Spotted and | ||
456 | tested by dtucker@; ok markus@ | ||
457 | |||
458 | 20031117 | ||
459 | - (djm) OpenBSD CVS Sync | ||
460 | - djm@cvs.openbsd.org 2003/11/03 09:03:37 | ||
461 | [auth-chall.c] | ||
462 | make this a little more idiot-proof; ok markus@ | ||
463 | (includes portable-specific changes) | ||
464 | - jakob@cvs.openbsd.org 2003/11/03 09:09:41 | ||
465 | [sshconnect.c] | ||
466 | move changed key warning into warn_changed_key(). ok markus@ | ||
467 | - jakob@cvs.openbsd.org 2003/11/03 09:37:32 | ||
468 | [sshconnect.c] | ||
469 | do not free static type pointer in warn_changed_key() | ||
470 | - djm@cvs.openbsd.org 2003/11/04 08:54:09 | ||
471 | [auth1.c auth2.c auth2-pubkey.c auth.h auth-krb5.c auth-passwd.c] | ||
472 | [auth-rhosts.c auth-rh-rsa.c auth-rsa.c monitor.c serverloop.c] | ||
473 | [session.c] | ||
474 | standardise arguments to auth methods - they should all take authctxt. | ||
475 | check authctxt->valid rather then pw != NULL; ok markus@ | ||
476 | - jakob@cvs.openbsd.org 2003/11/08 16:02:40 | ||
477 | [auth1.c] | ||
478 | remove unused variable (pw). ok djm@ | ||
479 | (id sync only - still used in portable) | ||
480 | - jmc@cvs.openbsd.org 2003/11/08 19:17:29 | ||
481 | [sftp-int.c] | ||
482 | typos from Jonathon Gray; | ||
483 | - jakob@cvs.openbsd.org 2003/11/10 16:23:41 | ||
484 | [bufaux.c bufaux.h cipher.c cipher.h hostfile.c hostfile.h key.c] | ||
485 | [key.h sftp-common.c sftp-common.h sftp-server.c sshconnect.c sshd.c] | ||
486 | [ssh-dss.c ssh-rsa.c uuencode.c uuencode.h] | ||
487 | constify. ok markus@ & djm@ | ||
488 | - dtucker@cvs.openbsd.org 2003/11/12 10:12:15 | ||
489 | [scp.c] | ||
490 | When called with -q, pass -q to ssh; suppresses SSH2 banner. ok markus@ | ||
491 | - jakob@cvs.openbsd.org 2003/11/12 16:39:58 | ||
492 | [dns.c dns.h readconf.c ssh_config.5 sshconnect.c] | ||
493 | update SSHFP validation. ok markus@ | ||
494 | - jmc@cvs.openbsd.org 2003/11/12 20:14:51 | ||
495 | [ssh_config.5] | ||
496 | make verb agree with subject, and kill some whitespace; | ||
497 | - markus@cvs.openbsd.org 2003/11/14 13:19:09 | ||
498 | [sshconnect2.c] | ||
499 | cleanup and minor fixes for the client code; from Simon Wilkinson | ||
500 | - djm@cvs.openbsd.org 2003/11/17 09:45:39 | ||
501 | [msg.c msg.h sshconnect2.c ssh-keysign.c] | ||
502 | return error on msg send/receive failure (rather than fatal); ok markus@ | ||
503 | - markus@cvs.openbsd.org 2003/11/17 11:06:07 | ||
504 | [auth2-gss.c gss-genr.c gss-serv.c monitor.c monitor.h monitor_wrap.c] | ||
505 | [monitor_wrap.h sshconnect2.c ssh-gss.h] | ||
506 | replace "gssapi" with "gssapi-with-mic"; from Simon Wilkinson; | ||
507 | test + ok jakob. | ||
508 | - (djm) Bug #632: Don't call pam_end indirectly from within kbd-int | ||
509 | conversation function | ||
510 | - (djm) Export environment variables from authentication subprocess to | ||
511 | parent. Part of Bug #717 | ||
512 | |||
513 | 20031115 | ||
514 | - (dtucker) [regress/agent-ptrace.sh] Test for GDB output from Solaris and | ||
515 | HP-UX, skip test on AIX. | ||
516 | |||
517 | 20031113 | ||
518 | - (dtucker) [auth-pam.c] Append newlines to lines output by the | ||
519 | pam_chauthtok_conv(). | ||
520 | - (dtucker) [README ssh-host-config ssh-user-config Makefile] (All | ||
521 | contrib/cygwin). Major update from vinschen at redhat.com. | ||
522 | - Makefile provides a `cygwin-postinstall' target to run right after | ||
523 | `make install'. | ||
524 | - Better support for Windows 2003 Server. | ||
525 | - Try to get permissions as correct as possible. | ||
526 | - New command line options to allow full automated host configuration. | ||
527 | - Create configs from skeletons in /etc/defaults/etc. | ||
528 | - Use /bin/bash, allows reading user input with readline support. | ||
529 | - Remove really old configs from /usr/local. | ||
530 | - (dtucker) [auth-pam.c] Add newline to accumulated PAM_TEXT_INFO and | ||
531 | PAM_ERROR_MSG messages. | ||
532 | |||
533 | 20031106 | ||
534 | - (djm) Clarify UsePAM consequences a little more | ||
535 | |||
536 | 20031103 | ||
537 | - (dtucker) [contrib/cygwin/ssh-host-config] Ensure entries in /etc/services | ||
538 | are created correctly with CRLF line terminations. Patch from vinschen at | ||
539 | redhat.com. | ||
540 | - (dtucker) OpenBSD CVS Sync | ||
541 | - markus@cvs.openbsd.org 2003/10/15 09:48:45 | ||
542 | [monitor_wrap.c] | ||
543 | check pmonitor != NULL | ||
544 | - markus@cvs.openbsd.org 2003/10/21 09:50:06 | ||
545 | [auth2-gss.c] | ||
546 | make sure the doid is larger than 2 | ||
547 | - avsm@cvs.openbsd.org 2003/10/26 16:57:43 | ||
548 | [sshconnect2.c] | ||
549 | rename 'supported' static var in userauth_gssapi() to 'gss_supported' | ||
550 | to avoid shadowing the global version. markus@ ok | ||
551 | - markus@cvs.openbsd.org 2003/10/28 09:08:06 | ||
552 | [misc.c] | ||
553 | error->debug for getsockopt+TCP_NODELAY; several requests | ||
554 | - markus@cvs.openbsd.org 2003/11/02 11:01:03 | ||
555 | [auth2-gss.c compat.c compat.h sshconnect2.c] | ||
556 | remove support for SSH_BUG_GSSAPI_BER; simon@sxw.org.uk | ||
557 | - (dtucker) [regress/agent-ptrace.sh] Use numeric uid and gid. | ||
558 | |||
559 | 20031021 | ||
560 | - (dtucker) [INSTALL] Some system crypt() functions support MD5 passwords | ||
561 | directly. Noted by Darren.Moffat at sun.com. | ||
562 | - (dtucker) [regress/agent-ptrace.sh] Skip agent-test unless SUDO is set, | ||
563 | make agent setgid during test. | ||
564 | |||
565 | 20031017 | ||
566 | - (dtucker) [INSTALL] Note that --with-md5 is now required on platforms with | ||
567 | MD5 passwords even if PAM support is enabled. From steev at detritus.net. | ||
568 | |||
569 | 20031015 | ||
570 | - (dtucker) OpenBSD CVS Sync | ||
571 | - jmc@cvs.openbsd.org 2003/10/08 08:27:36 | ||
572 | [scp.1 scp.c sftp-server.8 sftp.1 sftp.c ssh.1 sshd.8] | ||
573 | scp and sftp: add options list and sort options. options list requested | ||
574 | by deraadt@ | ||
575 | sshd: use same format as ssh | ||
576 | ssh: remove wrong option from list | ||
577 | sftp-server: Subsystem is documented in ssh_config(5), not sshd(8) | ||
578 | ok deraadt@ markus@ | ||
579 | - markus@cvs.openbsd.org 2003/10/08 15:21:24 | ||
580 | [readconf.c ssh_config.5] | ||
581 | default GSS API to no in client, too; ok jakob, deraadt@ | ||
582 | - markus@cvs.openbsd.org 2003/10/11 08:24:08 | ||
583 | [readconf.c readconf.h ssh.1 ssh.c ssh_config.5] | ||
584 | remote x11 clients are now untrusted by default, uses xauth(8) to generate | ||
585 | untrusted cookies; ForwardX11Trusted=yes restores old behaviour. | ||
586 | ok deraadt; feedback and ok djm/fries | ||
587 | - markus@cvs.openbsd.org 2003/10/11 08:26:43 | ||
588 | [sshconnect2.c] | ||
589 | search keys in reverse order; fixes #684 | ||
590 | - markus@cvs.openbsd.org 2003/10/11 11:36:23 | ||
591 | [monitor_wrap.c] | ||
592 | return NULL for missing banner; ok djm@ | ||
593 | - jmc@cvs.openbsd.org 2003/10/12 13:12:13 | ||
594 | [ssh_config.5] | ||
595 | note that EnableSSHKeySign should be in the non-hostspecific section; | ||
596 | remove unnecessary .Pp; | ||
597 | ok markus@ | ||
598 | - markus@cvs.openbsd.org 2003/10/13 08:22:25 | ||
599 | [scp.1 sftp.1] | ||
600 | don't refer to options related to forwarding; ok jmc@ | ||
601 | - jakob@cvs.openbsd.org 2003/10/14 19:42:10 | ||
602 | [dns.c dns.h readconf.c ssh-keygen.c sshconnect.c] | ||
603 | include SSHFP lookup code (not enabled by default). ok markus@ | ||
604 | - jakob@cvs.openbsd.org 2003/10/14 19:43:23 | ||
605 | [README.dns] | ||
606 | update | ||
607 | - markus@cvs.openbsd.org 2003/10/14 19:54:39 | ||
608 | [session.c ssh-agent.c] | ||
609 | 10X for mkdtemp; djm@ | ||
610 | - (dtucker) [acconfig.h configure.ac dns.c openbsd-compat/getrrsetbyname.c | ||
611 | openbsd-compat/getrrsetbyname.h] DNS fingerprint support is now always | ||
612 | compiled in but disabled in config. | ||
613 | - (dtucker) [auth.c] Check for disabled password expiry on HP-UX Trusted Mode. | ||
614 | - (tim) [regress/banner.sh] portability fix. | ||
615 | |||
616 | 20031009 | ||
617 | - (dtucker) [sshd_config.5] UsePAM defaults to "no". ok djm@ | ||
618 | |||
619 | 20031008 | ||
620 | - (dtucker) OpenBSD CVS Sync | ||
621 | - dtucker@cvs.openbsd.org 2003/10/07 01:47:27 | ||
622 | [sshconnect2.c] | ||
623 | Don't use logit for banner, since it truncates to MSGBUFSIZ; bz #668 & | ||
624 | #707. ok markus@ | ||
625 | - djm@cvs.openbsd.org 2003/10/07 07:04:16 | ||
626 | [sftp-int.c] | ||
627 | sftp quoting fix from admorten AT umich.edu; ok markus@ | ||
628 | - deraadt@cvs.openbsd.org 2003/10/07 21:58:28 | ||
629 | [sshconnect2.c] | ||
630 | set ptr to NULL after free | ||
631 | - dtucker@cvs.openbsd.org 2003/10/07 01:52:13 | ||
632 | [regress/Makefile regress/banner.sh] | ||
633 | Test SSH2 banner. ok markus@ | ||
634 | - djm@cvs.openbsd.org 2003/10/07 07:04:52 | ||
635 | [regress/sftp-cmds.sh] | ||
636 | more sftp quoting regress tests; ok markus | ||
637 | |||
638 | 20031007 | ||
639 | - (djm) Delete autom4te.cache after autoreconf | ||
640 | - (dtucker) [auth-pam.c auth-pam.h session.c] Make PAM use the new static | ||
641 | cleanup functions. With & ok djm@ | ||
642 | - (dtucker) [contrib/redhat/openssh.spec] Bug #714: Now that UsePAM is a | ||
643 | run-time switch, always build --with-md5-passwords. | ||
644 | - (dtucker) [configure.ac openbsd-compat/Makefile.in openbsd-compat/strtoul.c] | ||
645 | Bug #670: add strtoul() to openbsd-compat for platforms lacking it. ok djm@ | ||
646 | - (dtucker) [configure.ac] Bug #715: Set BROKEN_SETREUID and BROKEN_SETREGID | ||
647 | on Reliant Unix. Patch from Robert.Dahlem at siemens.com. | ||
648 | - (dtucker) [configure.ac] Bug #710: Check for dlsym() in libdl on | ||
649 | Reliant Unix. Based on patch from Robert.Dahlem at siemens.com. | ||
650 | |||
651 | 20031003 | ||
652 | - (dtucker) OpenBSD CVS Sync | ||
653 | - markus@cvs.openbsd.org 2003/10/02 10:41:59 | ||
654 | [sshd.c] | ||
655 | print openssl version, too, several requests; ok henning/djm. | ||
656 | - markus@cvs.openbsd.org 2003/10/02 08:26:53 | ||
657 | [ssh-gss.h] | ||
658 | missing $OpenBSD:; dtucker | ||
659 | - (tim) [contrib/caldera/openssh.spec] Remove obsolete --with-ipv4-default | ||
660 | option. | ||
661 | |||
662 | 20031002 | ||
663 | - (dtucker) OpenBSD CVS Sync | ||
664 | - markus@cvs.openbsd.org 2003/09/23 20:17:11 | ||
665 | [Makefile.in auth1.c auth2.c auth.c auth.h auth-krb5.c canohost.c | ||
666 | cleanup.c clientloop.c fatal.c gss-serv.c log.c log.h monitor.c monitor.h | ||
667 | monitor_wrap.c monitor_wrap.h packet.c serverloop.c session.c session.h | ||
668 | ssh-agent.c sshd.c] | ||
669 | replace fatal_cleanup() and linked list of fatal callbacks with static | ||
670 | cleanup_exit() function. re-refine cleanup_exit() where appropriate, | ||
671 | allocate sshd's authctxt eary to allow simpler cleanup in sshd. | ||
672 | tested by many, ok deraadt@ | ||
673 | - markus@cvs.openbsd.org 2003/09/23 20:18:52 | ||
674 | [progressmeter.c] | ||
675 | don't print trailing \0; bug #709; Robert.Dahlem@siemens.com | ||
676 | ok millert/deraadt@ | ||
677 | - markus@cvs.openbsd.org 2003/09/23 20:41:11 | ||
678 | [channels.c channels.h clientloop.c] | ||
679 | move client only agent code to clientloop.c | ||
680 | - markus@cvs.openbsd.org 2003/09/26 08:19:29 | ||
681 | [sshd.c] | ||
682 | no need to set the listen sockets to non-block; ok deraadt@ | ||
683 | - jmc@cvs.openbsd.org 2003/09/29 11:40:51 | ||
684 | [ssh.1] | ||
685 | - add list of options to -o and .Xr ssh_config(5) | ||
686 | - some other cleanup | ||
687 | requested by deraadt@; | ||
688 | ok deraadt@ markus@ | ||
689 | - markus@cvs.openbsd.org 2003/09/29 20:19:57 | ||
690 | [servconf.c sshd_config] | ||
691 | GSSAPICleanupCreds -> GSSAPICleanupCredentials | ||
692 | - (dtucker) [configure.ac] Don't set DISABLE_SHADOW when configuring | ||
693 | --with-pam. ok djm@ | ||
694 | - (dtucker) [ssh-gss.h] Prototype change missed in sync. | ||
695 | - (dtucker) [session.c] Fix bus errors on some 64-bit Solaris configurations. | ||
696 | Based on patches by Matthias Koeppe and Thomas Baden. ok djm@ | ||
697 | |||
698 | 20030930 | ||
699 | - (bal) Fix issues in openbsd-compat/realpath.c | ||
700 | |||
701 | 20030925 | ||
702 | - (dtucker) [configure.ac openbsd-compat/xcrypt.c] Bug #633: Remove | ||
703 | DISABLE_SHADOW for HP-UX, use getspnam instead of getprpwnam. Patch from | ||
704 | michael_steffens at hp.com, ok djm@ | ||
705 | - (tim) [sshd_config] UsePAM defaults to no. | ||
706 | |||
707 | 20030924 | ||
708 | - (djm) Update version.h and spec files for HEAD | ||
709 | - (dtucker) [configure.ac] IRIX5 needs the same setre[ug]id defines as IRIX6. | ||
710 | |||
711 | 20030923 | ||
28 | - (dtucker) [Makefile.in] Bug #644: Fix "make clean" for out-of-tree | 712 | - (dtucker) [Makefile.in] Bug #644: Fix "make clean" for out-of-tree |
29 | builds. Portability corrections from tim@. | 713 | builds. Portability corrections from tim@. |
30 | - (dtucker) [configure.ac] Bug #665: uid swapping issues on Mac OS X. | 714 | - (dtucker) [configure.ac] Bug #665: uid swapping issues on Mac OS X. |
@@ -55,30 +739,89 @@ | |||
55 | Report by distler AT golem ph utexas edu. | 739 | Report by distler AT golem ph utexas edu. |
56 | - (dtucker) [contrib/aix/pam.conf] Include example pam.conf for AIX from | 740 | - (dtucker) [contrib/aix/pam.conf] Include example pam.conf for AIX from |
57 | article by genty at austin.ibm.com, included with the author's permission. | 741 | article by genty at austin.ibm.com, included with the author's permission. |
742 | - (dtucker) OpenBSD CVS Sync | ||
743 | - markus@cvs.openbsd.org 2003/09/18 07:52:54 | ||
744 | [sshconnect.c] | ||
745 | missing {}; bug #656; jclonguet at free.fr | ||
746 | - markus@cvs.openbsd.org 2003/09/18 07:54:48 | ||
747 | [buffer.c] | ||
748 | protect against double free; #660; zardoz at users.sf.net | ||
749 | - markus@cvs.openbsd.org 2003/09/18 07:56:05 | ||
750 | [authfile.c] | ||
751 | missing buffer_free(&encrypted); #662; zardoz at users.sf.net | ||
752 | - markus@cvs.openbsd.org 2003/09/18 08:49:45 | ||
753 | [deattack.c misc.c session.c ssh-agent.c] | ||
754 | more buffer allocation fixes; from Solar Designer; CAN-2003-0682; | ||
755 | ok millert@ | ||
756 | - miod@cvs.openbsd.org 2003/09/18 13:02:21 | ||
757 | [authfd.c bufaux.c dh.c mac.c ssh-keygen.c] | ||
758 | A few signedness fixes for harmless situations; markus@ ok | ||
759 | - markus@cvs.openbsd.org 2003/09/19 09:02:02 | ||
760 | [packet.c] | ||
761 | buffer_dump only if PACKET_DEBUG is defined; Jedi/Sector One; pr 3471 | ||
762 | - markus@cvs.openbsd.org 2003/09/19 09:03:00 | ||
763 | [buffer.c] | ||
764 | sign fix in buffer_dump; Jedi/Sector One; pr 3473 | ||
765 | - markus@cvs.openbsd.org 2003/09/19 11:29:40 | ||
766 | [ssh-agent.c] | ||
767 | provide a ssh-agent specific fatal() function; ok deraadt | ||
768 | - markus@cvs.openbsd.org 2003/09/19 11:30:39 | ||
769 | [ssh-keyscan.c] | ||
770 | avoid fatal_cleanup, just call exit(); ok deraadt | ||
771 | - markus@cvs.openbsd.org 2003/09/19 11:31:33 | ||
772 | [channels.c] | ||
773 | do not call channel_free_all on fatal; ok deraadt | ||
774 | - markus@cvs.openbsd.org 2003/09/19 11:33:09 | ||
775 | [packet.c sshd.c] | ||
776 | do not call packet_close on fatal; ok deraadt | ||
777 | - markus@cvs.openbsd.org 2003/09/19 17:40:20 | ||
778 | [scp.c] | ||
779 | error handling for remote-remote copy; #638; report Harald Koenig; | ||
780 | ok millert, fgs, henning, deraadt | ||
781 | - markus@cvs.openbsd.org 2003/09/19 17:43:35 | ||
782 | [clientloop.c sshtty.c sshtty.h] | ||
783 | remove fatal callbacks from client code; ok deraadt | ||
784 | - (bal) "extration" -> "extraction" in ssh-rand-helper.c; repoted by john | ||
785 | on #unixhelp@efnet | ||
58 | - (tim) [configure.ac] add --disable-etc-default-login option. ok djm | 786 | - (tim) [configure.ac] add --disable-etc-default-login option. ok djm |
787 | - (djm) Sync with V_3_7 branch: | ||
788 | - (djm) Fix SSH1 challenge kludge | ||
789 | - (djm) Bug #671: Fix builds on OpenBSD | ||
790 | - (djm) Bug #676: Fix PAM stack corruption | ||
791 | - (djm) Fix bad free() in PAM code | ||
792 | - (djm) Don't call pam_end before pam_init | ||
793 | - (djm) Enable build with old OpenSSL again | ||
794 | - (djm) Trim deprecated options from INSTALL. Mention UsePAM | ||
795 | - (djm) Fix quote handling in sftp; Patch from admorten AT umich.edu | ||
59 | 796 | ||
60 | 20030919 | 797 | 20030919 |
61 | - (djm) Bug #683: Remove reference to --with-ipv4-default from INSTALL; | 798 | - (djm) Bug #683: Remove reference to --with-ipv4-default from INSTALL; |
62 | djast AT cs.toronto.edu | 799 | djast AT cs.toronto.edu |
63 | - (djm) Bug #680: Remove missing inet_ntoa.h header reference | 800 | - (djm) Bug #661: Remove duplicate check for basename; from |
801 | bugzilla-openssh AT thewrittenword.com | ||
802 | - (djm) Bug #641: Allow RedHat RPM building without GTK-2; Patch from | ||
803 | jason AT devrandom.org | ||
64 | - (djm) Bug #646: Fix location of x11-ssh-askpass; Jim | 804 | - (djm) Bug #646: Fix location of x11-ssh-askpass; Jim |
65 | - (dtucker) [openbsd-compat/port-aix.h] Bug #640: Don't include audit.h | 805 | - (dtucker) [openbsd-compat/port-aix.h] Bug #640: Don't include audit.h |
66 | unless required. Reorder to reduce warnings. | 806 | unless required. Reorder to reduce warnings. |
67 | - (dtucker) [session.c] Bug #643: Fix size_t -> u_int and fix null deref | 807 | - (dtucker) [session.c] Bug #643: Fix size_t -> u_int and fix null deref |
68 | when /etc/default/login doesn't exist or isn't readable. Fixes from | 808 | when /etc/default/login doesn't exist or isn't readable. Fixes from |
69 | jparsons-lists at saffron.net and georg.oppenberg at deu mci com. | 809 | jparsons-lists at saffron.net and georg.oppenberg at deu mci com. |
810 | - (dtucker) [acconfig.h] Updated basename test needs HAVE_BASENAME | ||
70 | 811 | ||
71 | 20030918 | 812 | 20030918 |
72 | - (djm) Bug #652: Fix empty password auth | 813 | - (djm) Bug #652: Fix empty password auth |
73 | 814 | ||
74 | 20030917 | 815 | 20030917 |
816 | - (djm) Sync with V_3_7 branch | ||
75 | - (djm) OpenBSD Sync | 817 | - (djm) OpenBSD Sync |
76 | - markus@cvs.openbsd.org 2003/09/16 21:02:40 | 818 | - markus@cvs.openbsd.org 2003/09/16 21:02:40 |
77 | [buffer.c channels.c version.h] | 819 | [buffer.c channels.c version.h] |
78 | more malloc/fatal fixes; ok millert/deraadt; ghudson at MIT.EDU | 820 | more malloc/fatal fixes; ok millert/deraadt; ghudson at MIT.EDU |
79 | - (djm) Crank RPM spec versions | 821 | - (djm) Crank RPM spec file versions |
80 | - (djm) Release 3.7.1p1 | 822 | - (tim) [openbsd-compat/inet_ntoa.c] 20030917 "Sync with V_3_7 branch" undid |
81 | 823 | 20030916 "Missed dead header in inet_ntoa.c" | |
824 | |||
82 | 20030916 | 825 | 20030916 |
83 | - (dtucker) [acconfig.h configure.ac defines.h session.c] Bug #252: Retrieve | 826 | - (dtucker) [acconfig.h configure.ac defines.h session.c] Bug #252: Retrieve |
84 | PATH (or SUPATH) and UMASK from /etc/default/login on platforms that have it | 827 | PATH (or SUPATH) and UMASK from /etc/default/login on platforms that have it |
@@ -88,10 +831,8 @@ | |||
88 | - deraadt@cvs.openbsd.org 2003/09/16 03:03:47 | 831 | - deraadt@cvs.openbsd.org 2003/09/16 03:03:47 |
89 | [buffer.c] | 832 | [buffer.c] |
90 | do not expand buffer before attempting to reallocate it; markus ok | 833 | do not expand buffer before attempting to reallocate it; markus ok |
91 | - (djm) Crank spec versions | ||
92 | - (djm) Banish (safe) sprintf from auth-pam.c. Patch from bal | ||
93 | - (tim) [configure.ac] Fix portability issues. | 834 | - (tim) [configure.ac] Fix portability issues. |
94 | - (djm) Release 3.7p1 | 835 | - (bal) Missed dead header in inet_ntoa.c |
95 | 836 | ||
96 | 20030914 | 837 | 20030914 |
97 | - (dtucker) [Makefile regress/Makefile] Fix portability issues preventing | 838 | - (dtucker) [Makefile regress/Makefile] Fix portability issues preventing |
@@ -1188,4 +1929,4 @@ | |||
1188 | - Fix sshd BindAddress and -b options for systems using fake-getaddrinfo. | 1929 | - Fix sshd BindAddress and -b options for systems using fake-getaddrinfo. |
1189 | Report from murple@murple.net, diagnosis from dtucker@zip.com.au | 1930 | Report from murple@murple.net, diagnosis from dtucker@zip.com.au |
1190 | 1931 | ||
1191 | $Id: ChangeLog,v 1.2994.2.34 2003/09/23 09:33:17 djm Exp $ | 1932 | $Id: ChangeLog,v 1.3257 2004/02/24 06:13:28 djm Exp $ |
@@ -4,21 +4,21 @@ | |||
4 | You will need working installations of Zlib and OpenSSL. | 4 | You will need working installations of Zlib and OpenSSL. |
5 | 5 | ||
6 | Zlib 1.1.4 or greater: | 6 | Zlib 1.1.4 or greater: |
7 | http://www.gzip.org/zlib/ | 7 | http://www.gzip.org/zlib/ |
8 | 8 | ||
9 | OpenSSL 0.9.6 or greater: | 9 | OpenSSL 0.9.6 or greater: |
10 | http://www.openssl.org/ | 10 | http://www.openssl.org/ |
11 | 11 | ||
12 | (OpenSSL 0.9.5a is partially supported, but some ciphers (SSH protocol 1 | 12 | (OpenSSL 0.9.5a is partially supported, but some ciphers (SSH protocol 1 |
13 | Blowfish) do not work correctly.) | 13 | Blowfish) do not work correctly.) |
14 | 14 | ||
15 | OpenSSH can utilise Pluggable Authentication Modules (PAM) if your system | 15 | OpenSSH can utilise Pluggable Authentication Modules (PAM) if your system |
16 | supports it. PAM is standard on Redhat and Debian Linux, Solaris and | 16 | supports it. PAM is standard on Redhat and Debian Linux, Solaris and |
17 | HP-UX 11. | 17 | HP-UX 11. |
18 | 18 | ||
19 | NB. If you operating system supports /dev/random, you should configure | 19 | NB. If you operating system supports /dev/random, you should configure |
20 | OpenSSL to use it. OpenSSH relies on OpenSSL's direct support of | 20 | OpenSSL to use it. OpenSSH relies on OpenSSL's direct support of |
21 | /dev/random. If you don't you will have to rely on ssh-rand-helper, which | 21 | /dev/random. If you don't you will have to rely on ssh-rand-helper, which |
22 | is inferior to a good kernel-based solution. | 22 | is inferior to a good kernel-based solution. |
23 | 23 | ||
24 | PAM: | 24 | PAM: |
@@ -37,7 +37,7 @@ http://www.jmknoble.net/software/x11-ssh-askpass/ | |||
37 | 37 | ||
38 | PRNGD: | 38 | PRNGD: |
39 | 39 | ||
40 | If your system lacks Kernel based random collection, the use of Lutz | 40 | If your system lacks Kernel based random collection, the use of Lutz |
41 | Jaenicke's PRNGd is recommended. | 41 | Jaenicke's PRNGd is recommended. |
42 | 42 | ||
43 | http://www.aet.tu-cottbus.de/personen/jaenicke/postfix_tls/prngd.html | 43 | http://www.aet.tu-cottbus.de/personen/jaenicke/postfix_tls/prngd.html |
@@ -54,7 +54,7 @@ http://www.sparc.spb.su/solaris/skey/ | |||
54 | 54 | ||
55 | If you wish to use --with-skey then you will need the above library | 55 | If you wish to use --with-skey then you will need the above library |
56 | installed. No other current S/Key library is currently known to be | 56 | installed. No other current S/Key library is currently known to be |
57 | supported. | 57 | supported. |
58 | 58 | ||
59 | 2. Building / Installation | 59 | 2. Building / Installation |
60 | -------------------------- | 60 | -------------------------- |
@@ -73,7 +73,7 @@ installation prefix, use the --prefix option to configure: | |||
73 | make | 73 | make |
74 | make install | 74 | make install |
75 | 75 | ||
76 | Will install OpenSSH in /opt/{bin,etc,lib,sbin}. You can also override | 76 | Will install OpenSSH in /opt/{bin,etc,lib,sbin}. You can also override |
77 | specific paths, for example: | 77 | specific paths, for example: |
78 | 78 | ||
79 | ./configure --prefix=/opt --sysconfdir=/etc/ssh | 79 | ./configure --prefix=/opt --sysconfdir=/etc/ssh |
@@ -104,40 +104,42 @@ There are a few other options to the configure script: | |||
104 | --with-pam enables PAM support. If PAM support is compiled in, it must | 104 | --with-pam enables PAM support. If PAM support is compiled in, it must |
105 | also be enabled in sshd_config (refer to the UsePAM directive). | 105 | also be enabled in sshd_config (refer to the UsePAM directive). |
106 | 106 | ||
107 | --with-prngd-socket=/some/file allows you to enable EGD or PRNGD | 107 | --with-prngd-socket=/some/file allows you to enable EGD or PRNGD |
108 | support and to specify a PRNGd socket. Use this if your Unix lacks | 108 | support and to specify a PRNGd socket. Use this if your Unix lacks |
109 | /dev/random and you don't want to use OpenSSH's builtin entropy | 109 | /dev/random and you don't want to use OpenSSH's builtin entropy |
110 | collection support. | 110 | collection support. |
111 | 111 | ||
112 | --with-prngd-port=portnum allows you to enable EGD or PRNGD support | 112 | --with-prngd-port=portnum allows you to enable EGD or PRNGD support |
113 | and to specify a EGD localhost TCP port. Use this if your Unix lacks | 113 | and to specify a EGD localhost TCP port. Use this if your Unix lacks |
114 | /dev/random and you don't want to use OpenSSH's builtin entropy | 114 | /dev/random and you don't want to use OpenSSH's builtin entropy |
115 | collection support. | 115 | collection support. |
116 | 116 | ||
117 | --with-lastlog=FILE will specify the location of the lastlog file. | 117 | --with-lastlog=FILE will specify the location of the lastlog file. |
118 | ./configure searches a few locations for lastlog, but may not find | 118 | ./configure searches a few locations for lastlog, but may not find |
119 | it if lastlog is installed in a different place. | 119 | it if lastlog is installed in a different place. |
120 | 120 | ||
121 | --without-lastlog will disable lastlog support entirely. | 121 | --without-lastlog will disable lastlog support entirely. |
122 | 122 | ||
123 | --with-osfsia, --without-osfsia will enable or disable OSF1's Security | 123 | --with-osfsia, --without-osfsia will enable or disable OSF1's Security |
124 | Integration Architecture. The default for OSF1 machines is enable. | 124 | Integration Architecture. The default for OSF1 machines is enable. |
125 | 125 | ||
126 | --with-skey=PATH will enable S/Key one time password support. You will | 126 | --with-skey=PATH will enable S/Key one time password support. You will |
127 | need the S/Key libraries and header files installed for this to work. | 127 | need the S/Key libraries and header files installed for this to work. |
128 | 128 | ||
129 | --with-tcp-wrappers will enable TCP Wrappers (/etc/hosts.allow|deny) | 129 | --with-tcp-wrappers will enable TCP Wrappers (/etc/hosts.allow|deny) |
130 | support. You will need libwrap.a and tcpd.h installed. | 130 | support. You will need libwrap.a and tcpd.h installed. |
131 | 131 | ||
132 | --with-md5-passwords will enable the use of MD5 passwords. Enable this | 132 | --with-md5-passwords will enable the use of MD5 passwords. Enable this |
133 | if your operating system uses MD5 passwords without using PAM. | 133 | if your operating system uses MD5 passwords and the system crypt() does |
134 | not support them directly (see the crypt(3/3c) man page). If enabled, the | ||
135 | resulting binary will support both MD5 and traditional crypt passwords. | ||
134 | 136 | ||
135 | --with-utmpx enables utmpx support. utmpx support is automatic for | 137 | --with-utmpx enables utmpx support. utmpx support is automatic for |
136 | some platforms. | 138 | some platforms. |
137 | 139 | ||
138 | --without-shadow disables shadow password support. | 140 | --without-shadow disables shadow password support. |
139 | 141 | ||
140 | --with-ipaddr-display forces the use of a numeric IP address in the | 142 | --with-ipaddr-display forces the use of a numeric IP address in the |
141 | $DISPLAY environment variable. Some broken systems need this. | 143 | $DISPLAY environment variable. Some broken systems need this. |
142 | 144 | ||
143 | --with-default-path=PATH allows you to specify a default $PATH for sessions | 145 | --with-default-path=PATH allows you to specify a default $PATH for sessions |
@@ -167,35 +169,35 @@ CFLAGS="-O -m486" LDFLAGS="-s" LIBS="-lrubbish" LD="/usr/foo/ld" ./configure | |||
167 | 3. Configuration | 169 | 3. Configuration |
168 | ---------------- | 170 | ---------------- |
169 | 171 | ||
170 | The runtime configuration files are installed by in ${prefix}/etc or | 172 | The runtime configuration files are installed by in ${prefix}/etc or |
171 | whatever you specified as your --sysconfdir (/usr/local/etc by default). | 173 | whatever you specified as your --sysconfdir (/usr/local/etc by default). |
172 | 174 | ||
173 | The default configuration should be instantly usable, though you should | 175 | The default configuration should be instantly usable, though you should |
174 | review it to ensure that it matches your security requirements. | 176 | review it to ensure that it matches your security requirements. |
175 | 177 | ||
176 | To generate a host key, run "make host-key". Alternately you can do so | 178 | To generate a host key, run "make host-key". Alternately you can do so |
177 | manually using the following commands: | 179 | manually using the following commands: |
178 | 180 | ||
179 | ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_key -N "" | 181 | ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_key -N "" |
180 | ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N "" | 182 | ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N "" |
181 | ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N "" | 183 | ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N "" |
182 | 184 | ||
183 | Replacing /etc/ssh with the correct path to the configuration directory. | 185 | Replacing /etc/ssh with the correct path to the configuration directory. |
184 | (${prefix}/etc or whatever you specified with --sysconfdir during | 186 | (${prefix}/etc or whatever you specified with --sysconfdir during |
185 | configuration) | 187 | configuration) |
186 | 188 | ||
187 | If you have configured OpenSSH with EGD support, ensure that EGD is | 189 | If you have configured OpenSSH with EGD support, ensure that EGD is |
188 | running and has collected some Entropy. | 190 | running and has collected some Entropy. |
189 | 191 | ||
190 | For more information on configuration, please refer to the manual pages | 192 | For more information on configuration, please refer to the manual pages |
191 | for sshd, ssh and ssh-agent. | 193 | for sshd, ssh and ssh-agent. |
192 | 194 | ||
193 | 4. Problems? | 195 | 4. Problems? |
194 | ------------ | 196 | ------------ |
195 | 197 | ||
196 | If you experience problems compiling, installing or running OpenSSH. | 198 | If you experience problems compiling, installing or running OpenSSH. |
197 | Please refer to the "reporting bugs" section of the webpage at | 199 | Please refer to the "reporting bugs" section of the webpage at |
198 | http://www.openssh.com/ | 200 | http://www.openssh.com/ |
199 | 201 | ||
200 | 202 | ||
201 | $Id: INSTALL,v 1.56.2.4 2003/09/23 09:24:21 djm Exp $ | 203 | $Id: INSTALL,v 1.63 2003/11/21 12:48:55 djm Exp $ |
@@ -45,16 +45,16 @@ OpenSSH contains no GPL code. | |||
45 | software are publicly available on the Internet and at any major | 45 | software are publicly available on the Internet and at any major |
46 | bookstore, scientific library, and patent office worldwide. More | 46 | bookstore, scientific library, and patent office worldwide. More |
47 | information can be found e.g. at "http://www.cs.hut.fi/crypto". | 47 | information can be found e.g. at "http://www.cs.hut.fi/crypto". |
48 | 48 | ||
49 | The legal status of this program is some combination of all these | 49 | The legal status of this program is some combination of all these |
50 | permissions and restrictions. Use only at your own responsibility. | 50 | permissions and restrictions. Use only at your own responsibility. |
51 | You will be responsible for any legal consequences yourself; I am not | 51 | You will be responsible for any legal consequences yourself; I am not |
52 | making any claims whether possessing or using this is legal or not in | 52 | making any claims whether possessing or using this is legal or not in |
53 | your country, and I am not taking any responsibility on your behalf. | 53 | your country, and I am not taking any responsibility on your behalf. |
54 | 54 | ||
55 | 55 | ||
56 | NO WARRANTY | 56 | NO WARRANTY |
57 | 57 | ||
58 | BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY | 58 | BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY |
59 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN | 59 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN |
60 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES | 60 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES |
@@ -64,7 +64,7 @@ OpenSSH contains no GPL code. | |||
64 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE | 64 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE |
65 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, | 65 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, |
66 | REPAIR OR CORRECTION. | 66 | REPAIR OR CORRECTION. |
67 | 67 | ||
68 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING | 68 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING |
69 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR | 69 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR |
70 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, | 70 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, |
@@ -112,15 +112,15 @@ OpenSSH contains no GPL code. | |||
112 | with the following license: | 112 | with the following license: |
113 | 113 | ||
114 | * @version 3.0 (December 2000) | 114 | * @version 3.0 (December 2000) |
115 | * | 115 | * |
116 | * Optimised ANSI C code for the Rijndael cipher (now AES) | 116 | * Optimised ANSI C code for the Rijndael cipher (now AES) |
117 | * | 117 | * |
118 | * @author Vincent Rijmen <vincent.rijmen@esat.kuleuven.ac.be> | 118 | * @author Vincent Rijmen <vincent.rijmen@esat.kuleuven.ac.be> |
119 | * @author Antoon Bosselaers <antoon.bosselaers@esat.kuleuven.ac.be> | 119 | * @author Antoon Bosselaers <antoon.bosselaers@esat.kuleuven.ac.be> |
120 | * @author Paulo Barreto <paulo.barreto@terra.com.br> | 120 | * @author Paulo Barreto <paulo.barreto@terra.com.br> |
121 | * | 121 | * |
122 | * This code is hereby placed in the public domain. | 122 | * This code is hereby placed in the public domain. |
123 | * | 123 | * |
124 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS | 124 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS |
125 | * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | 125 | * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
126 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | 126 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
@@ -177,13 +177,12 @@ OpenSSH contains no GPL code. | |||
177 | Damien Miller | 177 | Damien Miller |
178 | Kevin Steves | 178 | Kevin Steves |
179 | Daniel Kouril | 179 | Daniel Kouril |
180 | Per Allansson | ||
181 | Wesley Griffin | 180 | Wesley Griffin |
182 | Per Allansson | 181 | Per Allansson |
183 | Nils Nordman | 182 | Nils Nordman |
184 | Simon Wilkinson | 183 | Simon Wilkinson |
185 | 184 | ||
186 | Portable OpenSSH additionally includes code from the following copyright | 185 | Portable OpenSSH additionally includes code from the following copyright |
187 | holders, also under the 2-term BSD license: | 186 | holders, also under the 2-term BSD license: |
188 | 187 | ||
189 | Ben Lindstrom | 188 | Ben Lindstrom |
@@ -203,6 +202,7 @@ OpenSSH contains no GPL code. | |||
203 | Todd C. Miller | 202 | Todd C. Miller |
204 | Wayne Schroeder | 203 | Wayne Schroeder |
205 | William Jones | 204 | William Jones |
205 | Darren Tucker | ||
206 | 206 | ||
207 | * Redistribution and use in source and binary forms, with or without | 207 | * Redistribution and use in source and binary forms, with or without |
208 | * modification, are permitted provided that the following conditions | 208 | * modification, are permitted provided that the following conditions |
@@ -229,24 +229,24 @@ OpenSSH contains no GPL code. | |||
229 | a) md5crypt.c, md5crypt.h | 229 | a) md5crypt.c, md5crypt.h |
230 | 230 | ||
231 | * "THE BEER-WARE LICENSE" (Revision 42): | 231 | * "THE BEER-WARE LICENSE" (Revision 42): |
232 | * <phk@login.dknet.dk> wrote this file. As long as you retain this | 232 | * <phk@login.dknet.dk> wrote this file. As long as you retain this |
233 | * notice you can do whatever you want with this stuff. If we meet | 233 | * notice you can do whatever you want with this stuff. If we meet |
234 | * some day, and you think this stuff is worth it, you can buy me a | 234 | * some day, and you think this stuff is worth it, you can buy me a |
235 | * beer in return. Poul-Henning Kamp | 235 | * beer in return. Poul-Henning Kamp |
236 | 236 | ||
237 | b) snprintf replacement | 237 | b) snprintf replacement |
238 | 238 | ||
239 | * Copyright Patrick Powell 1995 | 239 | * Copyright Patrick Powell 1995 |
240 | * This code is based on code written by Patrick Powell | 240 | * This code is based on code written by Patrick Powell |
241 | * (papowell@astart.com) It may be used for any purpose as long as this | 241 | * (papowell@astart.com) It may be used for any purpose as long as this |
242 | * notice remains intact on all source code distributions | 242 | * notice remains intact on all source code distributions |
243 | 243 | ||
244 | c) Compatibility code (openbsd-compat) | 244 | c) Compatibility code (openbsd-compat) |
245 | 245 | ||
246 | Apart from the previously mentioned licenses, various pieces of code | 246 | Apart from the previously mentioned licenses, various pieces of code |
247 | in the openbsd-compat/ subdirectory are licensed as follows: | 247 | in the openbsd-compat/ subdirectory are licensed as follows: |
248 | 248 | ||
249 | Some code is licensed under a 3-term BSD license, to the following | 249 | Some code is licensed under a 3-term BSD license, to the following |
250 | copyright holders: | 250 | copyright holders: |
251 | 251 | ||
252 | Todd C. Miller | 252 | Todd C. Miller |
@@ -279,7 +279,7 @@ OpenSSH contains no GPL code. | |||
279 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | 279 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
280 | * SUCH DAMAGE. | 280 | * SUCH DAMAGE. |
281 | 281 | ||
282 | Some code is licensed under an ISC-style license, to the following | 282 | Some code is licensed under an ISC-style license, to the following |
283 | copyright holders: | 283 | copyright holders: |
284 | 284 | ||
285 | Internet Software Consortium. | 285 | Internet Software Consortium. |
@@ -297,7 +297,7 @@ OpenSSH contains no GPL code. | |||
297 | * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | 297 | * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN |
298 | * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | 298 | * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
299 | 299 | ||
300 | Some code is licensed under a MIT-style license to the following | 300 | Some code is licensed under a MIT-style license to the following |
301 | copyright holders: | 301 | copyright holders: |
302 | 302 | ||
303 | Free Software Foundation, Inc. | 303 | Free Software Foundation, Inc. |
@@ -329,4 +329,4 @@ OpenSSH contains no GPL code. | |||
329 | 329 | ||
330 | 330 | ||
331 | ------ | 331 | ------ |
332 | $OpenBSD: LICENCE,v 1.17 2003/08/22 20:55:06 markus Exp $ | 332 | $OpenBSD: LICENCE,v 1.18 2003/11/21 11:57:02 djm Exp $ |
diff --git a/Makefile.in b/Makefile.in index c90b17d10..919b36819 100644 --- a/Makefile.in +++ b/Makefile.in | |||
@@ -1,4 +1,4 @@ | |||
1 | # $Id: Makefile.in,v 1.249.2.1 2003/09/22 01:00:12 dtucker Exp $ | 1 | # $Id: Makefile.in,v 1.257 2004/02/18 03:35:11 djm Exp $ |
2 | 2 | ||
3 | # uncomment if you run a non bourne compatable shell. Ie. csh | 3 | # uncomment if you run a non bourne compatable shell. Ie. csh |
4 | #SHELL = @SH@ | 4 | #SHELL = @SH@ |
@@ -61,12 +61,13 @@ INSTALL_SSH_RAND_HELPER=@INSTALL_SSH_RAND_HELPER@ | |||
61 | 61 | ||
62 | TARGETS=ssh$(EXEEXT) sshd$(EXEEXT) ssh-add$(EXEEXT) ssh-keygen$(EXEEXT) ssh-keyscan${EXEEXT} ssh-keysign${EXEEXT} ssh-agent$(EXEEXT) scp$(EXEEXT) ssh-rand-helper${EXEEXT} sftp-server$(EXEEXT) sftp$(EXEEXT) | 62 | TARGETS=ssh$(EXEEXT) sshd$(EXEEXT) ssh-add$(EXEEXT) ssh-keygen$(EXEEXT) ssh-keyscan${EXEEXT} ssh-keysign${EXEEXT} ssh-agent$(EXEEXT) scp$(EXEEXT) ssh-rand-helper${EXEEXT} sftp-server$(EXEEXT) sftp$(EXEEXT) |
63 | 63 | ||
64 | LIBSSH_OBJS=authfd.o authfile.o bufaux.o buffer.o canohost.o channels.o \ | 64 | LIBSSH_OBJS=acss.o authfd.o authfile.o bufaux.o buffer.o \ |
65 | cipher.o cipher-aes.o cipher-bf1.o cipher-ctr.o cipher-3des1.o \ | 65 | canohost.o channels.o cipher.o cipher-acss.o cipher-aes.o \ |
66 | compat.o compress.o crc32.o deattack.o fatal.o \ | 66 | cipher-bf1.o cipher-ctr.o cipher-3des1.o cleanup.o \ |
67 | hostfile.o log.o match.o moduli.o mpaux.o nchan.o packet.o \ | 67 | compat.o compress.o crc32.o deattack.o fatal.o hostfile.o \ |
68 | readpass.o rsa.o tildexpand.o ttymodes.o xmalloc.o atomicio.o \ | 68 | log.o match.o moduli.o mpaux.o nchan.o packet.o \ |
69 | key.o dispatch.o kex.o mac.o uuencode.o misc.o \ | 69 | readpass.o rsa.o tildexpand.o ttymodes.o xmalloc.o \ |
70 | atomicio.o key.o dispatch.o kex.o mac.o uuencode.o misc.o \ | ||
70 | rijndael.o ssh-dss.o ssh-rsa.o dh.o kexdh.o kexgex.o \ | 71 | rijndael.o ssh-dss.o ssh-rsa.o dh.o kexdh.o kexgex.o \ |
71 | kexdhc.o kexgexc.o scard.o msg.o progressmeter.o dns.o \ | 72 | kexdhc.o kexgexc.o scard.o msg.o progressmeter.o dns.o \ |
72 | entropy.o scard-opensc.o gss-genr.o | 73 | entropy.o scard-opensc.o gss-genr.o |
@@ -84,7 +85,7 @@ SSHDOBJS=sshd.o auth-rhosts.o auth-passwd.o auth-rsa.o auth-rh-rsa.o \ | |||
84 | kexdhs.o kexgexs.o \ | 85 | kexdhs.o kexgexs.o \ |
85 | auth-krb5.o \ | 86 | auth-krb5.o \ |
86 | auth2-gss.o gss-serv.o gss-serv-krb5.o \ | 87 | auth2-gss.o gss-serv.o gss-serv-krb5.o \ |
87 | loginrec.o auth-pam.o auth-sia.o md5crypt.o | 88 | loginrec.o auth-pam.o auth-shadow.o auth-sia.o md5crypt.o |
88 | 89 | ||
89 | MANPAGES = scp.1.out ssh-add.1.out ssh-agent.1.out ssh-keygen.1.out ssh-keyscan.1.out ssh.1.out sshd.8.out sftp-server.8.out sftp.1.out ssh-rand-helper.8.out ssh-keysign.8.out sshd_config.5.out ssh_config.5.out | 90 | MANPAGES = scp.1.out ssh-add.1.out ssh-agent.1.out ssh-keygen.1.out ssh-keyscan.1.out ssh.1.out sshd.8.out sftp-server.8.out sftp.1.out ssh-rand-helper.8.out ssh-keysign.8.out sshd_config.5.out ssh_config.5.out |
90 | MANPAGES_IN = scp.1 ssh-add.1 ssh-agent.1 ssh-keygen.1 ssh-keyscan.1 ssh.1 sshd.8 sftp-server.8 sftp.1 ssh-rand-helper.8 ssh-keysign.8 sshd_config.5 ssh_config.5 | 91 | MANPAGES_IN = scp.1 ssh-add.1 ssh-agent.1 ssh-keygen.1 ssh-keyscan.1 ssh.1 sshd.8 sftp-server.8 sftp.1 ssh-rand-helper.8 ssh-keysign.8 sshd_config.5 ssh_config.5 |
@@ -140,25 +141,25 @@ scp$(EXEEXT): $(LIBCOMPAT) libssh.a scp.o progressmeter.o | |||
140 | $(LD) -o $@ scp.o progressmeter.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) | 141 | $(LD) -o $@ scp.o progressmeter.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) |
141 | 142 | ||
142 | ssh-add$(EXEEXT): $(LIBCOMPAT) libssh.a ssh-add.o | 143 | ssh-add$(EXEEXT): $(LIBCOMPAT) libssh.a ssh-add.o |
143 | $(LD) -o $@ ssh-add.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) | 144 | $(LD) -o $@ ssh-add.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) |
144 | 145 | ||
145 | ssh-agent$(EXEEXT): $(LIBCOMPAT) libssh.a ssh-agent.o | 146 | ssh-agent$(EXEEXT): $(LIBCOMPAT) libssh.a ssh-agent.o |
146 | $(LD) -o $@ ssh-agent.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) | 147 | $(LD) -o $@ ssh-agent.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) |
147 | 148 | ||
148 | ssh-keygen$(EXEEXT): $(LIBCOMPAT) libssh.a ssh-keygen.o | 149 | ssh-keygen$(EXEEXT): $(LIBCOMPAT) libssh.a ssh-keygen.o |
149 | $(LD) -o $@ ssh-keygen.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) | 150 | $(LD) -o $@ ssh-keygen.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) |
150 | 151 | ||
151 | ssh-keysign$(EXEEXT): $(LIBCOMPAT) libssh.a ssh-keysign.o | 152 | ssh-keysign$(EXEEXT): $(LIBCOMPAT) libssh.a ssh-keysign.o |
152 | $(LD) -o $@ ssh-keysign.o readconf.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) | 153 | $(LD) -o $@ ssh-keysign.o readconf.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) |
153 | 154 | ||
154 | ssh-keyscan$(EXEEXT): $(LIBCOMPAT) libssh.a ssh-keyscan.o | 155 | ssh-keyscan$(EXEEXT): $(LIBCOMPAT) libssh.a ssh-keyscan.o |
155 | $(LD) -o $@ ssh-keyscan.o $(LDFLAGS) -lssh -lopenbsd-compat -lssh $(LIBS) | 156 | $(LD) -o $@ ssh-keyscan.o $(LDFLAGS) -lssh -lopenbsd-compat -lssh $(LIBS) |
156 | 157 | ||
157 | sftp-server$(EXEEXT): $(LIBCOMPAT) libssh.a sftp.o sftp-common.o sftp-server.o | 158 | sftp-server$(EXEEXT): $(LIBCOMPAT) libssh.a sftp.o sftp-common.o sftp-server.o |
158 | $(LD) -o $@ sftp-server.o sftp-common.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) | 159 | $(LD) -o $@ sftp-server.o sftp-common.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) |
159 | 160 | ||
160 | sftp$(EXEEXT): $(LIBCOMPAT) libssh.a sftp.o sftp-client.o sftp-int.o sftp-common.o sftp-glob.o progressmeter.o | 161 | sftp$(EXEEXT): $(LIBCOMPAT) libssh.a sftp.o sftp-client.o sftp-common.o sftp-glob.o progressmeter.o |
161 | $(LD) -o $@ progressmeter.o sftp.o sftp-client.o sftp-common.o sftp-int.o sftp-glob.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) | 162 | $(LD) -o $@ progressmeter.o sftp.o sftp-client.o sftp-common.o sftp-glob.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) |
162 | 163 | ||
163 | ssh-rand-helper${EXEEXT}: $(LIBCOMPAT) libssh.a ssh-rand-helper.o | 164 | ssh-rand-helper${EXEEXT}: $(LIBCOMPAT) libssh.a ssh-rand-helper.o |
164 | $(LD) -o $@ ssh-rand-helper.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) | 165 | $(LD) -o $@ ssh-rand-helper.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) |
@@ -193,12 +194,12 @@ moduli: | |||
193 | echo | 194 | echo |
194 | 195 | ||
195 | clean: regressclean | 196 | clean: regressclean |
196 | rm -f *.o *.a $(TARGETS) logintest config.cache config.log | 197 | rm -f *.o *.a $(TARGETS) logintest config.cache config.log |
197 | rm -f *.out core | 198 | rm -f *.out core |
198 | (cd openbsd-compat && $(MAKE) clean) | 199 | (cd openbsd-compat && $(MAKE) clean) |
199 | 200 | ||
200 | distclean: regressclean | 201 | distclean: regressclean |
201 | rm -f *.o *.a $(TARGETS) logintest config.cache config.log | 202 | rm -f *.o *.a $(TARGETS) logintest config.cache config.log |
202 | rm -f *.out core | 203 | rm -f *.out core |
203 | rm -f Makefile config.h config.status ssh_prng_cmds *~ | 204 | rm -f Makefile config.h config.status ssh_prng_cmds *~ |
204 | rm -rf autom4te.cache | 205 | rm -rf autom4te.cache |
@@ -222,6 +223,7 @@ catman-do: | |||
222 | 223 | ||
223 | distprep: catman-do | 224 | distprep: catman-do |
224 | $(AUTORECONF) | 225 | $(AUTORECONF) |
226 | -rm -rf autom4te.cache | ||
225 | (cd scard && $(MAKE) -f Makefile.in distprep) | 227 | (cd scard && $(MAKE) -f Makefile.in distprep) |
226 | 228 | ||
227 | install: $(CONFIGFILES) ssh_prng_cmds.out $(MANPAGES) $(TARGETS) install-files host-key check-config | 229 | install: $(CONFIGFILES) ssh_prng_cmds.out $(MANPAGES) $(TARGETS) install-files host-key check-config |
@@ -342,7 +344,7 @@ uninstallall: uninstall | |||
342 | -rmdir $(DESTDIR)$(mandir) | 344 | -rmdir $(DESTDIR)$(mandir) |
343 | -rmdir $(DESTDIR)$(libexecdir) | 345 | -rmdir $(DESTDIR)$(libexecdir) |
344 | 346 | ||
345 | uninstall: | 347 | uninstall: |
346 | -rm -f $(DESTDIR)$(bindir)/slogin | 348 | -rm -f $(DESTDIR)$(bindir)/slogin |
347 | -rm -f $(DESTDIR)$(bindir)/ssh$(EXEEXT) | 349 | -rm -f $(DESTDIR)$(bindir)/ssh$(EXEEXT) |
348 | -rm -f $(DESTDIR)$(bindir)/scp$(EXEEXT) | 350 | -rm -f $(DESTDIR)$(bindir)/scp$(EXEEXT) |
@@ -373,6 +375,7 @@ tests: $(TARGETS) | |||
373 | [ -d `pwd`/regress ] || mkdir -p `pwd`/regress; \ | 375 | [ -d `pwd`/regress ] || mkdir -p `pwd`/regress; \ |
374 | [ -f `pwd`/regress/Makefile ] || \ | 376 | [ -f `pwd`/regress/Makefile ] || \ |
375 | ln -s $(srcdir)/regress/Makefile `pwd`/regress/Makefile ; \ | 377 | ln -s $(srcdir)/regress/Makefile `pwd`/regress/Makefile ; \ |
378 | TEST_SHELL="@TEST_MINUS_S_SH@"; \ | ||
376 | TEST_SSH_SSH="$${BUILDDIR}/ssh"; \ | 379 | TEST_SSH_SSH="$${BUILDDIR}/ssh"; \ |
377 | TEST_SSH_SSHD="$${BUILDDIR}/sshd"; \ | 380 | TEST_SSH_SSHD="$${BUILDDIR}/sshd"; \ |
378 | TEST_SSH_SSHAGENT="$${BUILDDIR}/ssh-agent"; \ | 381 | TEST_SSH_SSHAGENT="$${BUILDDIR}/ssh-agent"; \ |
@@ -388,6 +391,7 @@ tests: $(TARGETS) | |||
388 | BUILDDIR="$${BUILDDIR}" \ | 391 | BUILDDIR="$${BUILDDIR}" \ |
389 | OBJ="$${BUILDDIR}/regress/" \ | 392 | OBJ="$${BUILDDIR}/regress/" \ |
390 | PATH="$${BUILDDIR}:$${PATH}" \ | 393 | PATH="$${BUILDDIR}:$${PATH}" \ |
394 | TEST_SHELL="$${TEST_SHELL}" \ | ||
391 | TEST_SSH_SSH="$${TEST_SSH_SSH}" \ | 395 | TEST_SSH_SSH="$${TEST_SSH_SSH}" \ |
392 | TEST_SSH_SSHD="$${TEST_SSH_SSHD}" \ | 396 | TEST_SSH_SSHD="$${TEST_SSH_SSHD}" \ |
393 | TEST_SSH_SSHAGENT="$${TEST_SSH_SSHAGENT}" \ | 397 | TEST_SSH_SSHAGENT="$${TEST_SSH_SSHAGENT}" \ |
@@ -5,7 +5,7 @@ to developers.] | |||
5 | 5 | ||
6 | This document is intended for those who wish to read the ssh source | 6 | This document is intended for those who wish to read the ssh source |
7 | code. This tries to give an overview of the structure of the code. | 7 | code. This tries to give an overview of the structure of the code. |
8 | 8 | ||
9 | Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi> | 9 | Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi> |
10 | Updated 17 Nov 1995. | 10 | Updated 17 Nov 1995. |
11 | Updated 19 Oct 1999 for OpenSSH-1.2 | 11 | Updated 19 Oct 1999 for OpenSSH-1.2 |
@@ -20,7 +20,7 @@ There are some subsystems/abstractions that are used by a number of | |||
20 | these programs. | 20 | these programs. |
21 | 21 | ||
22 | Buffer manipulation routines | 22 | Buffer manipulation routines |
23 | 23 | ||
24 | - These provide an arbitrary size buffer, where data can be appended. | 24 | - These provide an arbitrary size buffer, where data can be appended. |
25 | Data can be consumed from either end. The code is used heavily | 25 | Data can be consumed from either end. The code is used heavily |
26 | throughout ssh. The basic buffer manipulation functions are in | 26 | throughout ssh. The basic buffer manipulation functions are in |
@@ -28,7 +28,7 @@ these programs. | |||
28 | data types is in bufaux.c. | 28 | data types is in bufaux.c. |
29 | 29 | ||
30 | Compression Library | 30 | Compression Library |
31 | 31 | ||
32 | - Ssh uses the GNU GZIP compression library (ZLIB). | 32 | - Ssh uses the GNU GZIP compression library (ZLIB). |
33 | 33 | ||
34 | Encryption/Decryption | 34 | Encryption/Decryption |
@@ -89,7 +89,7 @@ these programs. | |||
89 | code is linked into the server. The routines also manipulate | 89 | code is linked into the server. The routines also manipulate |
90 | known hosts files using code in hostfile.c. Code in canohost.c | 90 | known hosts files using code in hostfile.c. Code in canohost.c |
91 | is used to retrieve the canonical host name of the remote host. | 91 | is used to retrieve the canonical host name of the remote host. |
92 | Code in match.c is used to match host names. | 92 | Code in match.c is used to match host names. |
93 | 93 | ||
94 | - In the client end, authentication code is in sshconnect.c. It | 94 | - In the client end, authentication code is in sshconnect.c. It |
95 | reads Passwords/passphrases using code in readpass.c. It reads | 95 | reads Passwords/passphrases using code in readpass.c. It reads |
@@ -147,10 +147,10 @@ these programs. | |||
147 | operations, and finally the server enters the normal session | 147 | operations, and finally the server enters the normal session |
148 | mode by calling server_loop in serverloop.c. This does the real | 148 | mode by calling server_loop in serverloop.c. This does the real |
149 | work, calling functions in other modules. | 149 | work, calling functions in other modules. |
150 | 150 | ||
151 | - The code for the server is in sshd.c. It contains a lot of | 151 | - The code for the server is in sshd.c. It contains a lot of |
152 | stuff, including: | 152 | stuff, including: |
153 | - server main program | 153 | - server main program |
154 | - waiting for connections | 154 | - waiting for connections |
155 | - processing new connection | 155 | - processing new connection |
156 | - authentication | 156 | - authentication |
@@ -162,9 +162,9 @@ these programs. | |||
162 | 162 | ||
163 | - There are several other files in the distribution that contain | 163 | - There are several other files in the distribution that contain |
164 | various auxiliary routines: | 164 | various auxiliary routines: |
165 | ssh.h the main header file for ssh (various definitions) | 165 | ssh.h the main header file for ssh (various definitions) |
166 | getput.h byte-order independent storage of integers | 166 | getput.h byte-order independent storage of integers |
167 | includes.h includes most system headers. Lots of #ifdefs. | 167 | includes.h includes most system headers. Lots of #ifdefs. |
168 | tildexpand.c expand tilde in file names | 168 | tildexpand.c expand tilde in file names |
169 | uidswap.c uid-swapping | 169 | uidswap.c uid-swapping |
170 | xmalloc.c "safe" malloc routines | 170 | xmalloc.c "safe" malloc routines |
@@ -1,4 +1,7 @@ | |||
1 | - A Japanese translation of this document and of the OpenSSH FAQ is | 1 | See: |
2 | http://www.openssh.com/txt/release-3.8 for the release notes. | ||
3 | |||
4 | - A Japanese translation of this document and of the OpenSSH FAQ is | ||
2 | - available at http://www.unixuser.org/~haruyama/security/openssh/index.html | 5 | - available at http://www.unixuser.org/~haruyama/security/openssh/index.html |
3 | - Thanks to HARUYAMA Seigo <haruyama@unixuser.org> | 6 | - Thanks to HARUYAMA Seigo <haruyama@unixuser.org> |
4 | 7 | ||
@@ -13,10 +16,10 @@ Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos, Theo de Raadt, | |||
13 | and Dug Song. It has a homepage at http://www.openssh.com/ | 16 | and Dug Song. It has a homepage at http://www.openssh.com/ |
14 | 17 | ||
15 | This port consists of the re-introduction of autoconf support, PAM | 18 | This port consists of the re-introduction of autoconf support, PAM |
16 | support (for Linux and Solaris), EGD[1]/PRNGD[2] support and replacements | 19 | support (for Linux and Solaris), EGD[1]/PRNGD[2] support and replacements |
17 | for OpenBSD library functions that are (regrettably) absent from other | 20 | for OpenBSD library functions that are (regrettably) absent from other |
18 | unices. This port has been best tested on Linux, Solaris, HP-UX, NetBSD, | 21 | unices. This port has been best tested on Linux, Solaris, HP-UX, NetBSD, |
19 | Irix and AIX. Support for SCO, NeXT and other Unices is underway. | 22 | Irix and AIX. Support for SCO, NeXT and other Unices is underway. |
20 | This version actively tracks changes in the OpenBSD CVS repository. | 23 | This version actively tracks changes in the OpenBSD CVS repository. |
21 | 24 | ||
22 | The PAM support is now more functional than the popular packages of | 25 | The PAM support is now more functional than the popular packages of |
@@ -32,20 +35,20 @@ Please send bug reports and patches to the mailing list | |||
32 | openssh-unix-dev@mindrot.org. The list is open to posting by | 35 | openssh-unix-dev@mindrot.org. The list is open to posting by |
33 | unsubscribed users. | 36 | unsubscribed users. |
34 | 37 | ||
35 | If you are a citizen of an USA-embargoed country to which export of | 38 | If you are a citizen of an USA-embargoed country to which export of |
36 | cryptographic products is restricted, then please refrain from sending | 39 | cryptographic products is restricted, then please refrain from sending |
37 | crypto-related code or patches to the list. We cannot accept them. | 40 | crypto-related code or patches to the list. We cannot accept them. |
38 | Other code contribution are accepted, but please follow the OpenBSD | 41 | Other code contribution are accepted, but please follow the OpenBSD |
39 | style guidelines[6]. | 42 | style guidelines[6]. |
40 | 43 | ||
41 | Please refer to the INSTALL document for information on how to install | 44 | Please refer to the INSTALL document for information on how to install |
42 | OpenSSH on your system. There are a number of differences between this | 45 | OpenSSH on your system. There are a number of differences between this |
43 | port of OpenSSH and F-Secure SSH 1.x, please refer to the OpenSSH FAQ[7] | 46 | port of OpenSSH and F-Secure SSH 1.x, please refer to the OpenSSH FAQ[7] |
44 | for details and general tips. | 47 | for details and general tips. |
45 | 48 | ||
46 | Damien Miller <djm@mindrot.org> | 49 | Damien Miller <djm@mindrot.org> |
47 | 50 | ||
48 | Miscellania - | 51 | Miscellania - |
49 | 52 | ||
50 | This version of OpenSSH is based upon code retrieved from the OpenBSD | 53 | This version of OpenSSH is based upon code retrieved from the OpenBSD |
51 | CVS repository which in turn was based on the last free sample | 54 | CVS repository which in turn was based on the last free sample |
@@ -63,4 +66,4 @@ References - | |||
63 | [6] http://www.openbsd.org/cgi-bin/man.cgi?query=style&sektion=9 | 66 | [6] http://www.openbsd.org/cgi-bin/man.cgi?query=style&sektion=9 |
64 | [7] http://www.openssh.com/faq.html | 67 | [7] http://www.openssh.com/faq.html |
65 | 68 | ||
66 | $Id: README,v 1.51 2003/01/08 12:28:40 djm Exp $ | 69 | $Id: README,v 1.53 2004/02/24 05:13:24 dtucker Exp $ |
diff --git a/README.dns b/README.dns index e24092e03..97879183e 100644 --- a/README.dns +++ b/README.dns | |||
@@ -1,17 +1,13 @@ | |||
1 | How to verify host keys using OpenSSH and DNS | 1 | How to verify host keys using OpenSSH and DNS |
2 | --------------------------------------------- | 2 | --------------------------------------------- |
3 | 3 | ||
4 | OpenSSH contains experimental support for verifying host keys using DNS | 4 | OpenSSH contains support for verifying host keys using DNS as described in |
5 | as described in draft-ietf-secsh-dns-xx.txt. The document contains | 5 | draft-ietf-secsh-dns-05.txt. The document contains very brief instructions |
6 | very brief instructions on how to test this feature. Configuring DNS | 6 | on how to use this feature. Configuring DNS is out of the scope of this |
7 | and DNSSEC is out of the scope of this document. | 7 | document. |
8 | 8 | ||
9 | 9 | ||
10 | (1) Enable DNS fingerprint support in OpenSSH | 10 | (1) Server: Generate and publish the DNS RR |
11 | |||
12 | configure --with-dns | ||
13 | |||
14 | (2) Generate and publish the DNS RR | ||
15 | 11 | ||
16 | To create a DNS resource record (RR) containing a fingerprint of the | 12 | To create a DNS resource record (RR) containing a fingerprint of the |
17 | public host key, use the following command: | 13 | public host key, use the following command: |
@@ -24,15 +20,14 @@ you should generate one RR for each key. | |||
24 | 20 | ||
25 | In the example above, ssh-keygen will print the fingerprint in a | 21 | In the example above, ssh-keygen will print the fingerprint in a |
26 | generic DNS RR format parsable by most modern name server | 22 | generic DNS RR format parsable by most modern name server |
27 | implementations. If your nameserver has support for the SSHFP RR, as | 23 | implementations. If your nameserver has support for the SSHFP RR |
28 | defined by the draft, you can omit the -g flag and ssh-keygen will | 24 | you can omit the -g flag and ssh-keygen will print a standard SSHFP RR. |
29 | print a standard RR. | ||
30 | 25 | ||
31 | To publish the fingerprint using the DNS you must add the generated RR | 26 | To publish the fingerprint using the DNS you must add the generated RR |
32 | to your DNS zone file and sign your zone. | 27 | to your DNS zone file and sign your zone. |
33 | 28 | ||
34 | 29 | ||
35 | (3) Enable the ssh client to verify host keys using DNS | 30 | (2) Client: Enable ssh to verify host keys using DNS |
36 | 31 | ||
37 | To enable the ssh client to verify host keys using DNS, you have to | 32 | To enable the ssh client to verify host keys using DNS, you have to |
38 | add the following option to the ssh configuration file | 33 | add the following option to the ssh configuration file |
@@ -49,4 +44,4 @@ the remote host key, the user will be notified. | |||
49 | Wesley Griffin | 44 | Wesley Griffin |
50 | 45 | ||
51 | 46 | ||
52 | $OpenBSD: README.dns,v 1.1 2003/05/14 18:16:20 jakob Exp $ | 47 | $OpenBSD: README.dns,v 1.2 2003/10/14 19:43:23 jakob Exp $ |
diff --git a/README.platform b/README.platform new file mode 100644 index 000000000..c4d0c74f8 --- /dev/null +++ b/README.platform | |||
@@ -0,0 +1,22 @@ | |||
1 | This file contains notes about OpenSSH on specific platforms. | ||
2 | |||
3 | AIX | ||
4 | --- | ||
5 | As of OpenSSH 3.8p1, sshd will now honour an accounts password expiry | ||
6 | settings, where previously it did not. Because of this, it's possible for | ||
7 | sites that have used OpenSSH's sshd exclusively to have accounts which | ||
8 | have passwords expired longer than the inactive time (ie the "Weeks between | ||
9 | password EXPIRATION and LOCKOUT" setting in SMIT or the maxexpired | ||
10 | chuser attribute). | ||
11 | |||
12 | Accounts in this state must have their passwords reset manually by the | ||
13 | administrator. As a precaution, it is recommended that the administrative | ||
14 | passwords be reset before upgrading from OpenSSH <3.8. | ||
15 | |||
16 | Solaris | ||
17 | ------- | ||
18 | Currently, sshd does not support BSM auditting. This can show up as errors | ||
19 | when editting cron entries via crontab. See. | ||
20 | http://bugzilla.mindrot.org/show_bug.cgi?id=125 | ||
21 | |||
22 | $Id: README.platform,v 1.1 2004/02/24 05:14:41 dtucker Exp $ | ||
diff --git a/README.privsep b/README.privsep index 64adad83b..9d48bbcf9 100644 --- a/README.privsep +++ b/README.privsep | |||
@@ -1,15 +1,15 @@ | |||
1 | Privilege separation, or privsep, is method in OpenSSH by which | 1 | Privilege separation, or privsep, is method in OpenSSH by which |
2 | operations that require root privilege are performed by a separate | 2 | operations that require root privilege are performed by a separate |
3 | privileged monitor process. Its purpose is to prevent privilege | 3 | privileged monitor process. Its purpose is to prevent privilege |
4 | escalation by containing corruption to an unprivileged process. | 4 | escalation by containing corruption to an unprivileged process. |
5 | More information is available at: | 5 | More information is available at: |
6 | http://www.citi.umich.edu/u/provos/ssh/privsep.html | 6 | http://www.citi.umich.edu/u/provos/ssh/privsep.html |
7 | 7 | ||
8 | Privilege separation is now enabled by default; see the | 8 | Privilege separation is now enabled by default; see the |
9 | UsePrivilegeSeparation option in sshd_config(5). | 9 | UsePrivilegeSeparation option in sshd_config(5). |
10 | 10 | ||
11 | On systems which lack mmap or anonymous (MAP_ANON) memory mapping, | 11 | On systems which lack mmap or anonymous (MAP_ANON) memory mapping, |
12 | compression must be disabled in order for privilege separation to | 12 | compression must be disabled in order for privilege separation to |
13 | function. | 13 | function. |
14 | 14 | ||
15 | When privsep is enabled, during the pre-authentication phase sshd will | 15 | When privsep is enabled, during the pre-authentication phase sshd will |
@@ -38,9 +38,9 @@ privsep user and chroot directory: | |||
38 | Privsep requires operating system support for file descriptor passing. | 38 | Privsep requires operating system support for file descriptor passing. |
39 | Compression will be disabled on systems without a working mmap MAP_ANON. | 39 | Compression will be disabled on systems without a working mmap MAP_ANON. |
40 | 40 | ||
41 | PAM-enabled OpenSSH is known to function with privsep on Linux. | 41 | PAM-enabled OpenSSH is known to function with privsep on Linux. |
42 | It does not function on HP-UX with a trusted system | 42 | It does not function on HP-UX with a trusted system |
43 | configuration. | 43 | configuration. |
44 | 44 | ||
45 | On Compaq Tru64 Unix, only the pre-authentication part of privsep is | 45 | On Compaq Tru64 Unix, only the pre-authentication part of privsep is |
46 | supported. Post-authentication privsep is disabled automatically (so | 46 | supported. Post-authentication privsep is disabled automatically (so |
@@ -61,4 +61,4 @@ process 1005 is the sshd process listening for new connections. | |||
61 | process 6917 is the privileged monitor process, 6919 is the user owned | 61 | process 6917 is the privileged monitor process, 6919 is the user owned |
62 | sshd process and 6921 is the shell process. | 62 | sshd process and 6921 is the shell process. |
63 | 63 | ||
64 | $Id: README.privsep,v 1.12 2003/08/26 00:48:15 djm Exp $ | 64 | $Id: README.privsep,v 1.13 2003/11/21 12:48:55 djm Exp $ |
diff --git a/README.smartcard b/README.smartcard index 88810fc83..fdf83ecab 100644 --- a/README.smartcard +++ b/README.smartcard | |||
@@ -1,7 +1,7 @@ | |||
1 | How to use smartcards with OpenSSH? | 1 | How to use smartcards with OpenSSH? |
2 | 2 | ||
3 | OpenSSH contains experimental support for authentication using | 3 | OpenSSH contains experimental support for authentication using |
4 | Cyberflex smartcards and TODOS card readers, in addition to the cards | 4 | Cyberflex smartcards and TODOS card readers, in addition to the cards |
5 | with PKCS#15 structure supported by OpenSC. To enable this you | 5 | with PKCS#15 structure supported by OpenSC. To enable this you |
6 | need to: | 6 | need to: |
7 | 7 | ||
@@ -27,8 +27,8 @@ Using libsectok: | |||
27 | sectok> login -d | 27 | sectok> login -d |
28 | sectok> jload /usr/libdata/ssh/Ssh.bin | 28 | sectok> jload /usr/libdata/ssh/Ssh.bin |
29 | sectok> setpass | 29 | sectok> setpass |
30 | Enter new AUT0 passphrase: | 30 | Enter new AUT0 passphrase: |
31 | Re-enter passphrase: | 31 | Re-enter passphrase: |
32 | sectok> quit | 32 | sectok> quit |
33 | 33 | ||
34 | Do not forget the passphrase. There is no way to | 34 | Do not forget the passphrase. There is no way to |
@@ -51,9 +51,9 @@ Using libsectok: | |||
51 | 51 | ||
52 | $ sectok | 52 | $ sectok |
53 | sectok> login -d | 53 | sectok> login -d |
54 | sectok> acl 0012 world: w | 54 | sectok> acl 0012 world: w |
55 | world: w | 55 | world: w |
56 | AUT0: w inval | 56 | AUT0: w inval |
57 | sectok> quit | 57 | sectok> quit |
58 | 58 | ||
59 | If you do this, anyone who has access to your card | 59 | If you do this, anyone who has access to your card |
@@ -90,4 +90,4 @@ Common operations: | |||
90 | -markus, | 90 | -markus, |
91 | Tue Jul 17 23:54:51 CEST 2001 | 91 | Tue Jul 17 23:54:51 CEST 2001 |
92 | 92 | ||
93 | $OpenBSD: README.smartcard,v 1.8 2002/03/26 18:56:23 rees Exp $ | 93 | $OpenBSD: README.smartcard,v 1.9 2003/11/21 11:57:02 djm Exp $ |
@@ -137,7 +137,7 @@ pseudo tty, starting X11 [X11] or TCP/IP port forwarding, starting | |||
137 | authentication agent forwarding, and executing the shell or a command. | 137 | authentication agent forwarding, and executing the shell or a command. |
138 | 138 | ||
139 | When a shell or command is executed, the connection enters interactive | 139 | When a shell or command is executed, the connection enters interactive |
140 | session mode. In this mode, data is passed in both directions, | 140 | session mode. In this mode, data is passed in both directions, |
141 | new forwarded connections may be opened, etc. The interactive session | 141 | new forwarded connections may be opened, etc. The interactive session |
142 | normally terminates when the server sends the exit status of the | 142 | normally terminates when the server sends the exit status of the |
143 | program to the client. | 143 | program to the client. |
@@ -372,7 +372,7 @@ previous versions keep the same major protocol version; changes that | |||
372 | are not compatible increment the major version (which will hopefully | 372 | are not compatible increment the major version (which will hopefully |
373 | never happen). The version described in this document is 1.3. | 373 | never happen). The version described in this document is 1.3. |
374 | 374 | ||
375 | The client will | 375 | The client will |
376 | 376 | ||
377 | .ti 0 | 377 | .ti 0 |
378 | Key Exchange and Server Host Authentication | 378 | Key Exchange and Server Host Authentication |
@@ -8,7 +8,7 @@ Documentation: | |||
8 | - Install FAQ? | 8 | - Install FAQ? |
9 | 9 | ||
10 | - General FAQ on S/Key, TIS, RSA, RSA2, DSA, etc and suggestions on when it | 10 | - General FAQ on S/Key, TIS, RSA, RSA2, DSA, etc and suggestions on when it |
11 | would be best to use them. | 11 | would be best to use them. |
12 | 12 | ||
13 | - Create a Documentation/ directory? | 13 | - Create a Documentation/ directory? |
14 | 14 | ||
@@ -17,7 +17,7 @@ Programming: | |||
17 | - Grep for 'XXX' comments and fix | 17 | - Grep for 'XXX' comments and fix |
18 | 18 | ||
19 | - Link order is incorrect for some systems using Kerberos 4 and AFS. Result | 19 | - Link order is incorrect for some systems using Kerberos 4 and AFS. Result |
20 | is multiple inclusion of DES symbols. Holger Trapp | 20 | is multiple inclusion of DES symbols. Holger Trapp |
21 | <holger.trapp@hrz.tu-chemnitz.de> reports that changing the configure | 21 | <holger.trapp@hrz.tu-chemnitz.de> reports that changing the configure |
22 | generated link order from: | 22 | generated link order from: |
23 | -lresolv -lkrb -lz -lnsl -lutil -lkafs -lkrb -ldes -lcrypto | 23 | -lresolv -lkrb -lz -lnsl -lutil -lkafs -lkrb -ldes -lcrypto |
@@ -26,12 +26,10 @@ Programming: | |||
26 | fixing the problem. | 26 | fixing the problem. |
27 | 27 | ||
28 | - Write a test program that calls stat() to search for EGD/PRNGd socket | 28 | - Write a test program that calls stat() to search for EGD/PRNGd socket |
29 | rather than use the (non-portable) "test -S". | 29 | rather than use the (non-portable) "test -S". |
30 | 30 | ||
31 | - More platforms for for setproctitle() emulation (testing needed) | 31 | - More platforms for for setproctitle() emulation (testing needed) |
32 | 32 | ||
33 | - Handle changing passwords for the non-PAM expired password case | ||
34 | |||
35 | - Improve PAM support (a pam_lastlog module will cause sshd to exit) | 33 | - Improve PAM support (a pam_lastlog module will cause sshd to exit) |
36 | and maybe support alternate forms of authentications like OPIE via | 34 | and maybe support alternate forms of authentications like OPIE via |
37 | pam? | 35 | pam? |
@@ -70,7 +68,7 @@ Clean up configure/makefiles: | |||
70 | to allow people to (right/wrongfully) link against Bind directly. | 68 | to allow people to (right/wrongfully) link against Bind directly. |
71 | 69 | ||
72 | - Consider splitting configure.ac into seperate files which do logically | 70 | - Consider splitting configure.ac into seperate files which do logically |
73 | similar tests. E.g move all the type detection stuff into one file, | 71 | similar tests. E.g move all the type detection stuff into one file, |
74 | entropy related stuff into another. | 72 | entropy related stuff into another. |
75 | 73 | ||
76 | Packaging: | 74 | Packaging: |
@@ -86,7 +84,7 @@ PrivSep Issues: | |||
86 | + /dev/zero solution (Solaris) | 84 | + /dev/zero solution (Solaris) |
87 | + No/broken MAP_ANON (Irix) | 85 | + No/broken MAP_ANON (Irix) |
88 | + broken /dev/zero parse (Linux) | 86 | + broken /dev/zero parse (Linux) |
89 | - PAM | 87 | - PAM |
90 | + See above PAM notes | 88 | + See above PAM notes |
91 | - AIX | 89 | - AIX |
92 | + usrinfo() does not set TTY, but only required for legacy systems. Works | 90 | + usrinfo() does not set TTY, but only required for legacy systems. Works |
@@ -96,4 +94,4 @@ PrivSep Issues: | |||
96 | - Cygwin | 94 | - Cygwin |
97 | + Privsep for Pre-auth only (no fd passing) | 95 | + Privsep for Pre-auth only (no fd passing) |
98 | 96 | ||
99 | $Id: TODO,v 1.55 2003/06/11 13:56:41 dtucker Exp $ | 97 | $Id: TODO,v 1.57 2004/02/11 09:44:13 dtucker Exp $ |
diff --git a/WARNING.RNG b/WARNING.RNG index ae43930a7..5d4ea8753 100644 --- a/WARNING.RNG +++ b/WARNING.RNG | |||
@@ -44,16 +44,16 @@ the specified program. | |||
44 | 44 | ||
45 | The random number code will also read and save a seed file to | 45 | The random number code will also read and save a seed file to |
46 | ~/.ssh/prng_seed. This contents of this file are added to the random | 46 | ~/.ssh/prng_seed. This contents of this file are added to the random |
47 | number generator at startup. The goal here is to maintain as much | 47 | number generator at startup. The goal here is to maintain as much |
48 | randomness between sessions as possible. | 48 | randomness between sessions as possible. |
49 | 49 | ||
50 | The default entropy collection code has two main problems: | 50 | The default entropy collection code has two main problems: |
51 | 51 | ||
52 | 1. It is slow. | 52 | 1. It is slow. |
53 | 53 | ||
54 | Executing each program in the list can take a large amount of time, | 54 | Executing each program in the list can take a large amount of time, |
55 | especially on slower machines. Additionally some program can take a | 55 | especially on slower machines. Additionally some program can take a |
56 | disproportionate time to execute. | 56 | disproportionate time to execute. |
57 | 57 | ||
58 | Tuning the default entropy collection code is difficult at this point. | 58 | Tuning the default entropy collection code is difficult at this point. |
59 | It requires doing 'times ./ssh-rand-helper' and modifying the | 59 | It requires doing 'times ./ssh-rand-helper' and modifying the |
@@ -93,4 +93,4 @@ If you are forced to use ssh-rand-helper consider still downloading | |||
93 | prngd/egd and configure OpenSSH using --with-prngd-port=xx or | 93 | prngd/egd and configure OpenSSH using --with-prngd-port=xx or |
94 | --with-prngd-socket=xx (refer to INSTALL for more information). | 94 | --with-prngd-socket=xx (refer to INSTALL for more information). |
95 | 95 | ||
96 | $Id: WARNING.RNG,v 1.5 2002/04/14 13:16:05 djm Exp $ | 96 | $Id: WARNING.RNG,v 1.6 2003/11/21 12:48:55 djm Exp $ |
diff --git a/acconfig.h b/acconfig.h index 9bfb9b6c9..62252d760 100644 --- a/acconfig.h +++ b/acconfig.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: acconfig.h,v 1.166 2003/09/16 01:52:19 dtucker Exp $ */ | 1 | /* $Id: acconfig.h,v 1.173 2004/02/06 05:24:31 dtucker Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 1999-2003 Damien Miller. All rights reserved. | 4 | * Copyright (c) 1999-2003 Damien Miller. All rights reserved. |
@@ -41,6 +41,12 @@ | |||
41 | /* Define if your setregid() is broken */ | 41 | /* Define if your setregid() is broken */ |
42 | #undef BROKEN_SETREGID | 42 | #undef BROKEN_SETREGID |
43 | 43 | ||
44 | /* Define if your setresuid() is broken */ | ||
45 | #undef BROKEN_SETRESUID | ||
46 | |||
47 | /* Define if your setresgid() is broken */ | ||
48 | #undef BROKEN_SETRESGID | ||
49 | |||
44 | /* Define to a Set Process Title type if your system is */ | 50 | /* Define to a Set Process Title type if your system is */ |
45 | /* supported by bsd-setproctitle.c */ | 51 | /* supported by bsd-setproctitle.c */ |
46 | #undef SPT_TYPE | 52 | #undef SPT_TYPE |
@@ -59,6 +65,9 @@ | |||
59 | /* from environment and PATH */ | 65 | /* from environment and PATH */ |
60 | #undef LOGIN_PROGRAM_FALLBACK | 66 | #undef LOGIN_PROGRAM_FALLBACK |
61 | 67 | ||
68 | /* Full path of your "passwd" program */ | ||
69 | #undef _PATH_PASSWD_PROG | ||
70 | |||
62 | /* Define if your password has a pw_class field */ | 71 | /* Define if your password has a pw_class field */ |
63 | #undef HAVE_PW_CLASS_IN_PASSWD | 72 | #undef HAVE_PW_CLASS_IN_PASSWD |
64 | 73 | ||
@@ -89,6 +98,9 @@ | |||
89 | /* Define if you have the getuserattr function. */ | 98 | /* Define if you have the getuserattr function. */ |
90 | #undef HAVE_GETUSERATTR | 99 | #undef HAVE_GETUSERATTR |
91 | 100 | ||
101 | /* Define if you have the basename function. */ | ||
102 | #undef HAVE_BASENAME | ||
103 | |||
92 | /* Work around problematic Linux PAM modules handling of PAM_TTY */ | 104 | /* Work around problematic Linux PAM modules handling of PAM_TTY */ |
93 | #undef PAM_TTY_KLUDGE | 105 | #undef PAM_TTY_KLUDGE |
94 | 106 | ||
@@ -247,6 +259,9 @@ | |||
247 | /* Define this if you are using the Heimdal version of Kerberos V5 */ | 259 | /* Define this if you are using the Heimdal version of Kerberos V5 */ |
248 | #undef HEIMDAL | 260 | #undef HEIMDAL |
249 | 261 | ||
262 | /* Define this if you want to use libkafs' AFS support */ | ||
263 | #undef USE_AFS | ||
264 | |||
250 | /* Define if you want S/Key support */ | 265 | /* Define if you want S/Key support */ |
251 | #undef SKEY | 266 | #undef SKEY |
252 | 267 | ||
@@ -415,15 +430,15 @@ | |||
415 | #undef LOCKED_PASSWD_PREFIX | 430 | #undef LOCKED_PASSWD_PREFIX |
416 | #undef LOCKED_PASSWD_SUBSTR | 431 | #undef LOCKED_PASSWD_SUBSTR |
417 | 432 | ||
418 | /* Define if DNS support is to be activated */ | ||
419 | #undef DNS | ||
420 | |||
421 | /* Define if getrrsetbyname() exists */ | 433 | /* Define if getrrsetbyname() exists */ |
422 | #undef HAVE_GETRRSETBYNAME | 434 | #undef HAVE_GETRRSETBYNAME |
423 | 435 | ||
424 | /* Define if HEADER.ad exists in arpa/nameser.h */ | 436 | /* Define if HEADER.ad exists in arpa/nameser.h */ |
425 | #undef HAVE_HEADER_AD | 437 | #undef HAVE_HEADER_AD |
426 | 438 | ||
439 | /* Define if your resolver libs need this for getrrsetbyname */ | ||
440 | #undef BIND_8_COMPAT | ||
441 | |||
427 | @BOTTOM@ | 442 | @BOTTOM@ |
428 | 443 | ||
429 | /* ******************* Shouldn't need to edit below this line ************** */ | 444 | /* ******************* Shouldn't need to edit below this line ************** */ |
@@ -0,0 +1,264 @@ | |||
1 | /* $Id: acss.c,v 1.2 2004/02/06 04:22:43 dtucker Exp $ */ | ||
2 | /* | ||
3 | * Copyright (c) 2004 The OpenBSD project | ||
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. | ||
16 | */ | ||
17 | |||
18 | #include "includes.h" | ||
19 | #include <openssl/evp.h> | ||
20 | |||
21 | #if !defined(EVP_CTRL_SET_ACSS_MODE) && (OPENSSL_VERSION_NUMBER >= 0x00906000L) | ||
22 | |||
23 | #include "acss.h" | ||
24 | |||
25 | /* decryption sbox */ | ||
26 | static unsigned char sboxdec[] = { | ||
27 | 0x33, 0x73, 0x3b, 0x26, 0x63, 0x23, 0x6b, 0x76, | ||
28 | 0x3e, 0x7e, 0x36, 0x2b, 0x6e, 0x2e, 0x66, 0x7b, | ||
29 | 0xd3, 0x93, 0xdb, 0x06, 0x43, 0x03, 0x4b, 0x96, | ||
30 | 0xde, 0x9e, 0xd6, 0x0b, 0x4e, 0x0e, 0x46, 0x9b, | ||
31 | 0x57, 0x17, 0x5f, 0x82, 0xc7, 0x87, 0xcf, 0x12, | ||
32 | 0x5a, 0x1a, 0x52, 0x8f, 0xca, 0x8a, 0xc2, 0x1f, | ||
33 | 0xd9, 0x99, 0xd1, 0x00, 0x49, 0x09, 0x41, 0x90, | ||
34 | 0xd8, 0x98, 0xd0, 0x01, 0x48, 0x08, 0x40, 0x91, | ||
35 | 0x3d, 0x7d, 0x35, 0x24, 0x6d, 0x2d, 0x65, 0x74, | ||
36 | 0x3c, 0x7c, 0x34, 0x25, 0x6c, 0x2c, 0x64, 0x75, | ||
37 | 0xdd, 0x9d, 0xd5, 0x04, 0x4d, 0x0d, 0x45, 0x94, | ||
38 | 0xdc, 0x9c, 0xd4, 0x05, 0x4c, 0x0c, 0x44, 0x95, | ||
39 | 0x59, 0x19, 0x51, 0x80, 0xc9, 0x89, 0xc1, 0x10, | ||
40 | 0x58, 0x18, 0x50, 0x81, 0xc8, 0x88, 0xc0, 0x11, | ||
41 | 0xd7, 0x97, 0xdf, 0x02, 0x47, 0x07, 0x4f, 0x92, | ||
42 | 0xda, 0x9a, 0xd2, 0x0f, 0x4a, 0x0a, 0x42, 0x9f, | ||
43 | 0x53, 0x13, 0x5b, 0x86, 0xc3, 0x83, 0xcb, 0x16, | ||
44 | 0x5e, 0x1e, 0x56, 0x8b, 0xce, 0x8e, 0xc6, 0x1b, | ||
45 | 0xb3, 0xf3, 0xbb, 0xa6, 0xe3, 0xa3, 0xeb, 0xf6, | ||
46 | 0xbe, 0xfe, 0xb6, 0xab, 0xee, 0xae, 0xe6, 0xfb, | ||
47 | 0x37, 0x77, 0x3f, 0x22, 0x67, 0x27, 0x6f, 0x72, | ||
48 | 0x3a, 0x7a, 0x32, 0x2f, 0x6a, 0x2a, 0x62, 0x7f, | ||
49 | 0xb9, 0xf9, 0xb1, 0xa0, 0xe9, 0xa9, 0xe1, 0xf0, | ||
50 | 0xb8, 0xf8, 0xb0, 0xa1, 0xe8, 0xa8, 0xe0, 0xf1, | ||
51 | 0x5d, 0x1d, 0x55, 0x84, 0xcd, 0x8d, 0xc5, 0x14, | ||
52 | 0x5c, 0x1c, 0x54, 0x85, 0xcc, 0x8c, 0xc4, 0x15, | ||
53 | 0xbd, 0xfd, 0xb5, 0xa4, 0xed, 0xad, 0xe5, 0xf4, | ||
54 | 0xbc, 0xfc, 0xb4, 0xa5, 0xec, 0xac, 0xe4, 0xf5, | ||
55 | 0x39, 0x79, 0x31, 0x20, 0x69, 0x29, 0x61, 0x70, | ||
56 | 0x38, 0x78, 0x30, 0x21, 0x68, 0x28, 0x60, 0x71, | ||
57 | 0xb7, 0xf7, 0xbf, 0xa2, 0xe7, 0xa7, 0xef, 0xf2, | ||
58 | 0xba, 0xfa, 0xb2, 0xaf, 0xea, 0xaa, 0xe2, 0xff | ||
59 | }; | ||
60 | |||
61 | /* encryption sbox */ | ||
62 | static unsigned char sboxenc[] = { | ||
63 | 0x33, 0x3b, 0x73, 0x15, 0x53, 0x5b, 0x13, 0x75, | ||
64 | 0x3d, 0x35, 0x7d, 0x1b, 0x5d, 0x55, 0x1d, 0x7b, | ||
65 | 0x67, 0x6f, 0x27, 0x81, 0xc7, 0xcf, 0x87, 0x21, | ||
66 | 0x69, 0x61, 0x29, 0x8f, 0xc9, 0xc1, 0x89, 0x2f, | ||
67 | 0xe3, 0xeb, 0xa3, 0x05, 0x43, 0x4b, 0x03, 0xa5, | ||
68 | 0xed, 0xe5, 0xad, 0x0b, 0x4d, 0x45, 0x0d, 0xab, | ||
69 | 0xea, 0xe2, 0xaa, 0x00, 0x4a, 0x42, 0x0a, 0xa0, | ||
70 | 0xe8, 0xe0, 0xa8, 0x02, 0x48, 0x40, 0x08, 0xa2, | ||
71 | 0x3e, 0x36, 0x7e, 0x14, 0x5e, 0x56, 0x1e, 0x74, | ||
72 | 0x3c, 0x34, 0x7c, 0x16, 0x5c, 0x54, 0x1c, 0x76, | ||
73 | 0x6a, 0x62, 0x2a, 0x80, 0xca, 0xc2, 0x8a, 0x20, | ||
74 | 0x68, 0x60, 0x28, 0x82, 0xc8, 0xc0, 0x88, 0x22, | ||
75 | 0xee, 0xe6, 0xae, 0x04, 0x4e, 0x46, 0x0e, 0xa4, | ||
76 | 0xec, 0xe4, 0xac, 0x06, 0x4c, 0x44, 0x0c, 0xa6, | ||
77 | 0xe7, 0xef, 0xa7, 0x01, 0x47, 0x4f, 0x07, 0xa1, | ||
78 | 0xe9, 0xe1, 0xa9, 0x0f, 0x49, 0x41, 0x09, 0xaf, | ||
79 | 0x63, 0x6b, 0x23, 0x85, 0xc3, 0xcb, 0x83, 0x25, | ||
80 | 0x6d, 0x65, 0x2d, 0x8b, 0xcd, 0xc5, 0x8d, 0x2b, | ||
81 | 0x37, 0x3f, 0x77, 0x11, 0x57, 0x5f, 0x17, 0x71, | ||
82 | 0x39, 0x31, 0x79, 0x1f, 0x59, 0x51, 0x19, 0x7f, | ||
83 | 0xb3, 0xbb, 0xf3, 0x95, 0xd3, 0xdb, 0x93, 0xf5, | ||
84 | 0xbd, 0xb5, 0xfd, 0x9b, 0xdd, 0xd5, 0x9d, 0xfb, | ||
85 | 0xba, 0xb2, 0xfa, 0x90, 0xda, 0xd2, 0x9a, 0xf0, | ||
86 | 0xb8, 0xb0, 0xf8, 0x92, 0xd8, 0xd0, 0x98, 0xf2, | ||
87 | 0x6e, 0x66, 0x2e, 0x84, 0xce, 0xc6, 0x8e, 0x24, | ||
88 | 0x6c, 0x64, 0x2c, 0x86, 0xcc, 0xc4, 0x8c, 0x26, | ||
89 | 0x3a, 0x32, 0x7a, 0x10, 0x5a, 0x52, 0x1a, 0x70, | ||
90 | 0x38, 0x30, 0x78, 0x12, 0x58, 0x50, 0x18, 0x72, | ||
91 | 0xbe, 0xb6, 0xfe, 0x94, 0xde, 0xd6, 0x9e, 0xf4, | ||
92 | 0xbc, 0xb4, 0xfc, 0x96, 0xdc, 0xd4, 0x9c, 0xf6, | ||
93 | 0xb7, 0xbf, 0xf7, 0x91, 0xd7, 0xdf, 0x97, 0xf1, | ||
94 | 0xb9, 0xb1, 0xf9, 0x9f, 0xd9, 0xd1, 0x99, 0xff | ||
95 | }; | ||
96 | |||
97 | static unsigned char reverse[] = { | ||
98 | 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, | ||
99 | 0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0, | ||
100 | 0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8, | ||
101 | 0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8, | ||
102 | 0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4, | ||
103 | 0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4, | ||
104 | 0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec, | ||
105 | 0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc, | ||
106 | 0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2, | ||
107 | 0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2, | ||
108 | 0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea, | ||
109 | 0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa, | ||
110 | 0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6, | ||
111 | 0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6, | ||
112 | 0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee, | ||
113 | 0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe, | ||
114 | 0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1, | ||
115 | 0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1, | ||
116 | 0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9, | ||
117 | 0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9, | ||
118 | 0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5, | ||
119 | 0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5, | ||
120 | 0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed, | ||
121 | 0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd, | ||
122 | 0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3, | ||
123 | 0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3, | ||
124 | 0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb, | ||
125 | 0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb, | ||
126 | 0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7, | ||
127 | 0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7, | ||
128 | 0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef, | ||
129 | 0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff | ||
130 | }; | ||
131 | |||
132 | /* | ||
133 | * Two linear feedback shift registers are used: | ||
134 | * | ||
135 | * lfsr17: polynomial of degree 17, primitive modulo 2 (listed in Schneier) | ||
136 | * x^15 + x + 1 | ||
137 | * lfsr25: polynomial of degree 25, not know if primitive modulo 2 | ||
138 | * x^13 + x^5 + x^4 + x^1 + 1 | ||
139 | * | ||
140 | * Output bits are discarded, instead the feedback bits are added to produce | ||
141 | * the cipher stream. Depending on the mode, feedback bytes may be inverted | ||
142 | * bit-wise before addition. | ||
143 | * | ||
144 | * The lfsrs are seeded with bytes from the raw key: | ||
145 | * | ||
146 | * lfsr17: byte 0[0:7] at bit 9 | ||
147 | * byte 1[0:7] at bit 0 | ||
148 | * | ||
149 | * lfsr25: byte 2[0:4] at bit 16 | ||
150 | * byte 2[5:7] at bit 22 | ||
151 | * byte 3[0:7] at bit 8 | ||
152 | * byte 4[0:7] at bit 0 | ||
153 | * | ||
154 | * To prevent 0 cycles, 1's are inject at bit 8 in lfrs17 and bit 21 in | ||
155 | * lfsr25. | ||
156 | * | ||
157 | */ | ||
158 | |||
159 | int | ||
160 | acss(ACSS_KEY *key, unsigned long len, const unsigned char *in, | ||
161 | unsigned char *out) | ||
162 | { | ||
163 | unsigned long i; | ||
164 | unsigned long lfsr17tmp, lfsr25tmp, lfsrsumtmp; | ||
165 | |||
166 | lfsrsumtmp = lfsr17tmp = lfsr25tmp = 0; | ||
167 | |||
168 | /* keystream is sum of lfsrs */ | ||
169 | for (i = 0; i < len; i++) { | ||
170 | lfsr17tmp = key->lfsr17 ^ (key->lfsr17 >> 14); | ||
171 | key->lfsr17 = (key->lfsr17 >> 8) | ||
172 | ^ (lfsr17tmp << 9) | ||
173 | ^ (lfsr17tmp << 12) | ||
174 | ^ (lfsr17tmp << 15); | ||
175 | key->lfsr17 &= 0x1ffff; /* 17 bit LFSR */ | ||
176 | |||
177 | lfsr25tmp = key->lfsr25 | ||
178 | ^ (key->lfsr25 >> 3) | ||
179 | ^ (key->lfsr25 >> 4) | ||
180 | ^ (key->lfsr25 >> 12); | ||
181 | key->lfsr25 = (key->lfsr25 >> 8) ^ (lfsr25tmp << 17); | ||
182 | key->lfsr25 &= 0x1ffffff; /* 25 bit LFSR */ | ||
183 | |||
184 | lfsrsumtmp = key->lfsrsum; | ||
185 | |||
186 | /* addition */ | ||
187 | switch (key->mode) { | ||
188 | case ACSS_AUTHENTICATE: | ||
189 | case ACSS_DATA: | ||
190 | key->lfsrsum = 0xff & ~(key->lfsr17 >> 9); | ||
191 | key->lfsrsum += key->lfsr25 >> 17; | ||
192 | break; | ||
193 | case ACSS_SESSIONKEY: | ||
194 | key->lfsrsum = key->lfsr17 >> 9; | ||
195 | key->lfsrsum += key->lfsr25 >> 17; | ||
196 | break; | ||
197 | case ACSS_TITLEKEY: | ||
198 | key->lfsrsum = key->lfsr17 >> 9; | ||
199 | key->lfsrsum += 0xff & ~(key->lfsr25 >> 17); | ||
200 | break; | ||
201 | default: | ||
202 | return 1; | ||
203 | } | ||
204 | key->lfsrsum += (lfsrsumtmp >> 8); | ||
205 | |||
206 | if (key->encrypt) { | ||
207 | out[i] = sboxenc[(in[i] ^ key->lfsrsum) & 0xff]; | ||
208 | } else { | ||
209 | out[i] = (sboxdec[in[i]] ^ key->lfsrsum) & 0xff; | ||
210 | } | ||
211 | } | ||
212 | |||
213 | return 0; | ||
214 | } | ||
215 | |||
216 | static void | ||
217 | acss_seed(ACSS_KEY *key) | ||
218 | { | ||
219 | int i; | ||
220 | |||
221 | /* if available, mangle with subkey */ | ||
222 | if (key->subkey_avilable) { | ||
223 | for (i = 0; i < ACSS_KEYSIZE; i++) | ||
224 | key->seed[i] = reverse[key->data[i] ^ key->subkey[i]]; | ||
225 | } else { | ||
226 | for (i = 0; i < ACSS_KEYSIZE; i++) | ||
227 | key->seed[i] = reverse[key->data[i]]; | ||
228 | } | ||
229 | |||
230 | /* seed lfsrs */ | ||
231 | key->lfsr17 = key->seed[1] | ||
232 | | (key->seed[0] << 9) | ||
233 | | (1 << 8); /* inject 1 at bit 9 */ | ||
234 | key->lfsr25 = key->seed[4] | ||
235 | | (key->seed[3] << 8) | ||
236 | | ((key->seed[2] & 0x1f) << 16) | ||
237 | | ((key->seed[2] & 0xe0) << 17) | ||
238 | | (1 << 21); /* inject 1 at bit 22 */ | ||
239 | |||
240 | key->lfsrsum = 0; | ||
241 | } | ||
242 | |||
243 | void | ||
244 | acss_setkey(ACSS_KEY *key, const unsigned char *data, int enc, int mode) | ||
245 | { | ||
246 | memcpy(key->data, data, sizeof(key->data)); | ||
247 | memset(key->subkey, 0, sizeof(key->subkey)); | ||
248 | |||
249 | if (enc != -1) | ||
250 | key->encrypt = enc; | ||
251 | key->mode = mode; | ||
252 | key->subkey_avilable = 0; | ||
253 | |||
254 | acss_seed(key); | ||
255 | } | ||
256 | |||
257 | void | ||
258 | acss_setsubkey(ACSS_KEY *key, const unsigned char *subkey) | ||
259 | { | ||
260 | memcpy(key->subkey, subkey, sizeof(key->subkey)); | ||
261 | key->subkey_avilable = 1; | ||
262 | acss_seed(key); | ||
263 | } | ||
264 | #endif | ||
@@ -0,0 +1,47 @@ | |||
1 | /* $Id: acss.h,v 1.2 2004/02/06 04:22:43 dtucker Exp $ */ | ||
2 | /* | ||
3 | * Copyright (c) 2004 The OpenBSD project | ||
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. | ||
16 | */ | ||
17 | |||
18 | #ifndef _ACSS_H_ | ||
19 | #define _ACSS_H_ | ||
20 | |||
21 | /* 40bit key */ | ||
22 | #define ACSS_KEYSIZE 5 | ||
23 | |||
24 | /* modes of acss */ | ||
25 | #define ACSS_AUTHENTICATE 0 | ||
26 | #define ACSS_SESSIONKEY 1 | ||
27 | #define ACSS_TITLEKEY 2 | ||
28 | #define ACSS_DATA 3 | ||
29 | |||
30 | typedef struct acss_key_st { | ||
31 | unsigned int lfsr17; /* current state of lfsrs */ | ||
32 | unsigned int lfsr25; | ||
33 | unsigned int lfsrsum; | ||
34 | unsigned char seed[ACSS_KEYSIZE]; | ||
35 | unsigned char data[ACSS_KEYSIZE]; | ||
36 | unsigned char subkey[ACSS_KEYSIZE]; | ||
37 | int encrypt; /* XXX make these bit flags? */ | ||
38 | int mode; | ||
39 | int seeded; | ||
40 | int subkey_avilable; | ||
41 | } ACSS_KEY; | ||
42 | |||
43 | void acss_setkey(ACSS_KEY *, const unsigned char *, int, int); | ||
44 | void acss_setsubkey(ACSS_KEY *, const unsigned char *); | ||
45 | int acss(ACSS_KEY *, unsigned long, const unsigned char *, unsigned char *); | ||
46 | |||
47 | #endif /* ifndef _ACSS_H_ */ | ||
diff --git a/auth-chall.c b/auth-chall.c index 00d6e0ec5..a9d314dd2 100644 --- a/auth-chall.c +++ b/auth-chall.c | |||
@@ -23,7 +23,7 @@ | |||
23 | */ | 23 | */ |
24 | 24 | ||
25 | #include "includes.h" | 25 | #include "includes.h" |
26 | RCSID("$OpenBSD: auth-chall.c,v 1.8 2001/05/18 14:13:28 markus Exp $"); | 26 | RCSID("$OpenBSD: auth-chall.c,v 1.9 2003/11/03 09:03:37 djm Exp $"); |
27 | 27 | ||
28 | #include "auth.h" | 28 | #include "auth.h" |
29 | #include "log.h" | 29 | #include "log.h" |
@@ -67,36 +67,38 @@ get_challenge(Authctxt *authctxt) | |||
67 | int | 67 | int |
68 | verify_response(Authctxt *authctxt, const char *response) | 68 | verify_response(Authctxt *authctxt, const char *response) |
69 | { | 69 | { |
70 | char *resp[1]; | 70 | char *resp[1], *name, *info, **prompts; |
71 | int res; | 71 | u_int i, numprompts, *echo_on; |
72 | int authenticated = 0; | ||
72 | 73 | ||
73 | if (device == NULL) | 74 | if (device == NULL) |
74 | return 0; | 75 | return 0; |
75 | if (authctxt->kbdintctxt == NULL) | 76 | if (authctxt->kbdintctxt == NULL) |
76 | return 0; | 77 | return 0; |
77 | resp[0] = (char *)response; | 78 | resp[0] = (char *)response; |
78 | res = device->respond(authctxt->kbdintctxt, 1, resp); | 79 | switch (device->respond(authctxt->kbdintctxt, 1, resp)) { |
79 | if (res == 1) { | 80 | case 0: /* Success */ |
80 | /* postponed - send a null query just in case */ | 81 | authenticated = 1; |
81 | char *name, *info, **prompts; | 82 | break; |
82 | u_int i, numprompts, *echo_on; | 83 | case 1: /* Postponed - retry with empty query for PAM */ |
84 | if ((device->query(authctxt->kbdintctxt, &name, &info, | ||
85 | &numprompts, &prompts, &echo_on)) != 0) | ||
86 | break; | ||
87 | if (numprompts == 0 && | ||
88 | device->respond(authctxt->kbdintctxt, 0, resp) == 0) | ||
89 | authenticated = 1; | ||
83 | 90 | ||
84 | res = device->query(authctxt->kbdintctxt, &name, &info, | 91 | for (i = 0; i < numprompts; i++) |
85 | &numprompts, &prompts, &echo_on); | 92 | xfree(prompts[i]); |
86 | if (res == 0) { | 93 | xfree(prompts); |
87 | for (i = 0; i < numprompts; i++) | 94 | xfree(name); |
88 | xfree(prompts[i]); | 95 | xfree(echo_on); |
89 | xfree(prompts); | 96 | xfree(info); |
90 | xfree(name); | 97 | break; |
91 | xfree(echo_on); | ||
92 | xfree(info); | ||
93 | } | ||
94 | /* if we received more prompts, we're screwed */ | ||
95 | res = (res == 0 && numprompts == 0) ? 0 : -1; | ||
96 | } | 98 | } |
97 | device->free_ctx(authctxt->kbdintctxt); | 99 | device->free_ctx(authctxt->kbdintctxt); |
98 | authctxt->kbdintctxt = NULL; | 100 | authctxt->kbdintctxt = NULL; |
99 | return res ? 0 : 1; | 101 | return authenticated; |
100 | } | 102 | } |
101 | void | 103 | void |
102 | abandon_challenge_response(Authctxt *authctxt) | 104 | abandon_challenge_response(Authctxt *authctxt) |
diff --git a/auth-krb5.c b/auth-krb5.c index 0aa5195b8..859492478 100644 --- a/auth-krb5.c +++ b/auth-krb5.c | |||
@@ -28,7 +28,7 @@ | |||
28 | */ | 28 | */ |
29 | 29 | ||
30 | #include "includes.h" | 30 | #include "includes.h" |
31 | RCSID("$OpenBSD: auth-krb5.c,v 1.12 2003/08/28 12:54:34 markus Exp $"); | 31 | RCSID("$OpenBSD: auth-krb5.c,v 1.15 2003/11/21 11:57:02 djm Exp $"); |
32 | 32 | ||
33 | #include "ssh.h" | 33 | #include "ssh.h" |
34 | #include "ssh1.h" | 34 | #include "ssh1.h" |
@@ -40,7 +40,6 @@ RCSID("$OpenBSD: auth-krb5.c,v 1.12 2003/08/28 12:54:34 markus Exp $"); | |||
40 | #include "auth.h" | 40 | #include "auth.h" |
41 | 41 | ||
42 | #ifdef KRB5 | 42 | #ifdef KRB5 |
43 | |||
44 | #include <krb5.h> | 43 | #include <krb5.h> |
45 | 44 | ||
46 | extern ServerOptions options; | 45 | extern ServerOptions options; |
@@ -50,7 +49,6 @@ krb5_init(void *context) | |||
50 | { | 49 | { |
51 | Authctxt *authctxt = (Authctxt *)context; | 50 | Authctxt *authctxt = (Authctxt *)context; |
52 | krb5_error_code problem; | 51 | krb5_error_code problem; |
53 | static int cleanup_registered = 0; | ||
54 | 52 | ||
55 | if (authctxt->krb5_ctx == NULL) { | 53 | if (authctxt->krb5_ctx == NULL) { |
56 | problem = krb5_init_context(&authctxt->krb5_ctx); | 54 | problem = krb5_init_context(&authctxt->krb5_ctx); |
@@ -58,10 +56,6 @@ krb5_init(void *context) | |||
58 | return (problem); | 56 | return (problem); |
59 | krb5_init_ets(authctxt->krb5_ctx); | 57 | krb5_init_ets(authctxt->krb5_ctx); |
60 | } | 58 | } |
61 | if (!cleanup_registered) { | ||
62 | fatal_add_cleanup(krb5_cleanup_proc, authctxt); | ||
63 | cleanup_registered = 1; | ||
64 | } | ||
65 | return (0); | 59 | return (0); |
66 | } | 60 | } |
67 | 61 | ||
@@ -73,11 +67,11 @@ auth_krb5_password(Authctxt *authctxt, const char *password) | |||
73 | krb5_principal server; | 67 | krb5_principal server; |
74 | char ccname[40]; | 68 | char ccname[40]; |
75 | int tmpfd; | 69 | int tmpfd; |
76 | #endif | 70 | #endif |
77 | krb5_error_code problem; | 71 | krb5_error_code problem; |
78 | krb5_ccache ccache = NULL; | 72 | krb5_ccache ccache = NULL; |
79 | 73 | ||
80 | if (authctxt->pw == NULL) | 74 | if (!authctxt->valid) |
81 | return (0); | 75 | return (0); |
82 | 76 | ||
83 | temporarily_use_uid(authctxt->pw); | 77 | temporarily_use_uid(authctxt->pw); |
@@ -102,14 +96,15 @@ auth_krb5_password(Authctxt *authctxt, const char *password) | |||
102 | goto out; | 96 | goto out; |
103 | 97 | ||
104 | restore_uid(); | 98 | restore_uid(); |
105 | 99 | ||
106 | problem = krb5_verify_user(authctxt->krb5_ctx, authctxt->krb5_user, | 100 | problem = krb5_verify_user(authctxt->krb5_ctx, authctxt->krb5_user, |
107 | ccache, password, 1, NULL); | 101 | ccache, password, 1, NULL); |
108 | 102 | ||
109 | temporarily_use_uid(authctxt->pw); | 103 | temporarily_use_uid(authctxt->pw); |
110 | 104 | ||
111 | if (problem) | 105 | if (problem) |
112 | goto out; | 106 | goto out; |
107 | |||
113 | problem = krb5_cc_gen_new(authctxt->krb5_ctx, &krb5_fcc_ops, | 108 | problem = krb5_cc_gen_new(authctxt->krb5_ctx, &krb5_fcc_ops, |
114 | &authctxt->krb5_fwd_ccache); | 109 | &authctxt->krb5_fwd_ccache); |
115 | if (problem) | 110 | if (problem) |
@@ -140,21 +135,21 @@ auth_krb5_password(Authctxt *authctxt, const char *password) | |||
140 | temporarily_use_uid(authctxt->pw); | 135 | temporarily_use_uid(authctxt->pw); |
141 | if (problem) | 136 | if (problem) |
142 | goto out; | 137 | goto out; |
143 | 138 | ||
144 | if (!krb5_kuserok(authctxt->krb5_ctx, authctxt->krb5_user, | 139 | if (!krb5_kuserok(authctxt->krb5_ctx, authctxt->krb5_user, |
145 | authctxt->pw->pw_name)) { | 140 | authctxt->pw->pw_name)) { |
146 | problem = -1; | 141 | problem = -1; |
147 | goto out; | 142 | goto out; |
148 | } | 143 | } |
149 | 144 | ||
150 | snprintf(ccname,sizeof(ccname),"FILE:/tmp/krb5cc_%d_XXXXXX",geteuid()); | 145 | snprintf(ccname,sizeof(ccname),"FILE:/tmp/krb5cc_%d_XXXXXX",geteuid()); |
151 | 146 | ||
152 | if ((tmpfd = mkstemp(ccname+strlen("FILE:")))==-1) { | 147 | if ((tmpfd = mkstemp(ccname+strlen("FILE:")))==-1) { |
153 | logit("mkstemp(): %.100s", strerror(errno)); | 148 | logit("mkstemp(): %.100s", strerror(errno)); |
154 | problem = errno; | 149 | problem = errno; |
155 | goto out; | 150 | goto out; |
156 | } | 151 | } |
157 | 152 | ||
158 | if (fchmod(tmpfd,S_IRUSR | S_IWUSR) == -1) { | 153 | if (fchmod(tmpfd,S_IRUSR | S_IWUSR) == -1) { |
159 | logit("fchmod(): %.100s", strerror(errno)); | 154 | logit("fchmod(): %.100s", strerror(errno)); |
160 | close(tmpfd); | 155 | close(tmpfd); |
@@ -171,12 +166,12 @@ auth_krb5_password(Authctxt *authctxt, const char *password) | |||
171 | authctxt->krb5_user); | 166 | authctxt->krb5_user); |
172 | if (problem) | 167 | if (problem) |
173 | goto out; | 168 | goto out; |
174 | 169 | ||
175 | problem= krb5_cc_store_cred(authctxt->krb5_ctx, authctxt->krb5_fwd_ccache, | 170 | problem= krb5_cc_store_cred(authctxt->krb5_ctx, authctxt->krb5_fwd_ccache, |
176 | &creds); | 171 | &creds); |
177 | if (problem) | 172 | if (problem) |
178 | goto out; | 173 | goto out; |
179 | #endif | 174 | #endif |
180 | 175 | ||
181 | authctxt->krb5_ticket_file = (char *)krb5_cc_get_name(authctxt->krb5_ctx, authctxt->krb5_fwd_ccache); | 176 | authctxt->krb5_ticket_file = (char *)krb5_cc_get_name(authctxt->krb5_ctx, authctxt->krb5_fwd_ccache); |
182 | 177 | ||
@@ -205,10 +200,8 @@ auth_krb5_password(Authctxt *authctxt, const char *password) | |||
205 | } | 200 | } |
206 | 201 | ||
207 | void | 202 | void |
208 | krb5_cleanup_proc(void *context) | 203 | krb5_cleanup_proc(Authctxt *authctxt) |
209 | { | 204 | { |
210 | Authctxt *authctxt = (Authctxt *)context; | ||
211 | |||
212 | debug("krb5_cleanup_proc called"); | 205 | debug("krb5_cleanup_proc called"); |
213 | if (authctxt->krb5_fwd_ccache) { | 206 | if (authctxt->krb5_fwd_ccache) { |
214 | krb5_cc_destroy(authctxt->krb5_ctx, authctxt->krb5_fwd_ccache); | 207 | krb5_cc_destroy(authctxt->krb5_ctx, authctxt->krb5_fwd_ccache); |
diff --git a/auth-pam.c b/auth-pam.c index 2c8feb65d..397f7d3a8 100644 --- a/auth-pam.c +++ b/auth-pam.c | |||
@@ -31,10 +31,14 @@ | |||
31 | 31 | ||
32 | /* Based on $FreeBSD: src/crypto/openssh/auth2-pam-freebsd.c,v 1.11 2003/03/31 13:48:18 des Exp $ */ | 32 | /* Based on $FreeBSD: src/crypto/openssh/auth2-pam-freebsd.c,v 1.11 2003/03/31 13:48:18 des Exp $ */ |
33 | #include "includes.h" | 33 | #include "includes.h" |
34 | RCSID("$Id: auth-pam.c,v 1.72.2.2 2003/09/23 09:24:21 djm Exp $"); | 34 | RCSID("$Id: auth-pam.c,v 1.95 2004/02/17 12:20:08 dtucker Exp $"); |
35 | 35 | ||
36 | #ifdef USE_PAM | 36 | #ifdef USE_PAM |
37 | #if defined(HAVE_SECURITY_PAM_APPL_H) | ||
37 | #include <security/pam_appl.h> | 38 | #include <security/pam_appl.h> |
39 | #elif defined (HAVE_PAM_PAM_APPL_H) | ||
40 | #include <pam/pam_appl.h> | ||
41 | #endif | ||
38 | 42 | ||
39 | #include "auth.h" | 43 | #include "auth.h" |
40 | #include "auth-pam.h" | 44 | #include "auth-pam.h" |
@@ -52,22 +56,54 @@ RCSID("$Id: auth-pam.c,v 1.72.2.2 2003/09/23 09:24:21 djm Exp $"); | |||
52 | #include "auth-options.h" | 56 | #include "auth-options.h" |
53 | 57 | ||
54 | extern ServerOptions options; | 58 | extern ServerOptions options; |
55 | 59 | extern Buffer loginmsg; | |
56 | #define __unused | 60 | extern int compat20; |
57 | 61 | ||
58 | #ifdef USE_POSIX_THREADS | 62 | #ifdef USE_POSIX_THREADS |
59 | #include <pthread.h> | 63 | #include <pthread.h> |
60 | /* | 64 | /* |
61 | * Avoid namespace clash when *not* using pthreads for systems *with* | 65 | * Avoid namespace clash when *not* using pthreads for systems *with* |
62 | * pthreads, which unconditionally define pthread_t via sys/types.h | 66 | * pthreads, which unconditionally define pthread_t via sys/types.h |
63 | * (e.g. Linux) | 67 | * (e.g. Linux) |
64 | */ | 68 | */ |
65 | typedef pthread_t sp_pthread_t; | 69 | typedef pthread_t sp_pthread_t; |
66 | #else | 70 | #else |
71 | typedef pid_t sp_pthread_t; | ||
72 | #endif | ||
73 | |||
74 | struct pam_ctxt { | ||
75 | sp_pthread_t pam_thread; | ||
76 | int pam_psock; | ||
77 | int pam_csock; | ||
78 | int pam_done; | ||
79 | }; | ||
80 | |||
81 | static void sshpam_free_ctx(void *); | ||
82 | static struct pam_ctxt *cleanup_ctxt; | ||
83 | |||
84 | #ifndef USE_POSIX_THREADS | ||
67 | /* | 85 | /* |
68 | * Simulate threads with processes. | 86 | * Simulate threads with processes. |
69 | */ | 87 | */ |
70 | typedef pid_t sp_pthread_t; | 88 | |
89 | static int sshpam_thread_status = -1; | ||
90 | static mysig_t sshpam_oldsig; | ||
91 | |||
92 | static void | ||
93 | sshpam_sigchld_handler(int sig) | ||
94 | { | ||
95 | if (cleanup_ctxt == NULL) | ||
96 | return; /* handler called after PAM cleanup, shouldn't happen */ | ||
97 | if (waitpid(cleanup_ctxt->pam_thread, &sshpam_thread_status, 0) == -1) | ||
98 | return; /* couldn't wait for process */ | ||
99 | if (WIFSIGNALED(sshpam_thread_status) && | ||
100 | WTERMSIG(sshpam_thread_status) == SIGTERM) | ||
101 | return; /* terminated by pthread_cancel */ | ||
102 | if (!WIFEXITED(sshpam_thread_status)) | ||
103 | fatal("PAM: authentication thread exited unexpectedly"); | ||
104 | if (WEXITSTATUS(sshpam_thread_status) != 0) | ||
105 | fatal("PAM: authentication thread exited uncleanly"); | ||
106 | } | ||
71 | 107 | ||
72 | static void | 108 | static void |
73 | pthread_exit(void *value __unused) | 109 | pthread_exit(void *value __unused) |
@@ -90,6 +126,7 @@ pthread_create(sp_pthread_t *thread, const void *attr __unused, | |||
90 | _exit(1); | 126 | _exit(1); |
91 | default: | 127 | default: |
92 | *thread = pid; | 128 | *thread = pid; |
129 | sshpam_oldsig = signal(SIGCHLD, sshpam_sigchld_handler); | ||
93 | return (0); | 130 | return (0); |
94 | } | 131 | } |
95 | } | 132 | } |
@@ -97,6 +134,7 @@ pthread_create(sp_pthread_t *thread, const void *attr __unused, | |||
97 | static int | 134 | static int |
98 | pthread_cancel(sp_pthread_t thread) | 135 | pthread_cancel(sp_pthread_t thread) |
99 | { | 136 | { |
137 | signal(SIGCHLD, sshpam_oldsig); | ||
100 | return (kill(thread, SIGTERM)); | 138 | return (kill(thread, SIGTERM)); |
101 | } | 139 | } |
102 | 140 | ||
@@ -105,6 +143,9 @@ pthread_join(sp_pthread_t thread, void **value __unused) | |||
105 | { | 143 | { |
106 | int status; | 144 | int status; |
107 | 145 | ||
146 | if (sshpam_thread_status != -1) | ||
147 | return (sshpam_thread_status); | ||
148 | signal(SIGCHLD, sshpam_oldsig); | ||
108 | waitpid(thread, &status, 0); | 149 | waitpid(thread, &status, 0); |
109 | return (status); | 150 | return (status); |
110 | } | 151 | } |
@@ -114,18 +155,80 @@ pthread_join(sp_pthread_t thread, void **value __unused) | |||
114 | static pam_handle_t *sshpam_handle = NULL; | 155 | static pam_handle_t *sshpam_handle = NULL; |
115 | static int sshpam_err = 0; | 156 | static int sshpam_err = 0; |
116 | static int sshpam_authenticated = 0; | 157 | static int sshpam_authenticated = 0; |
117 | static int sshpam_new_authtok_reqd = 0; | ||
118 | static int sshpam_session_open = 0; | 158 | static int sshpam_session_open = 0; |
119 | static int sshpam_cred_established = 0; | 159 | static int sshpam_cred_established = 0; |
160 | static int sshpam_account_status = -1; | ||
161 | static char **sshpam_env = NULL; | ||
162 | static int *force_pwchange; | ||
163 | |||
164 | /* Some PAM implementations don't implement this */ | ||
165 | #ifndef HAVE_PAM_GETENVLIST | ||
166 | static char ** | ||
167 | pam_getenvlist(pam_handle_t *pamh) | ||
168 | { | ||
169 | /* | ||
170 | * XXX - If necessary, we can still support envrionment passing | ||
171 | * for platforms without pam_getenvlist by searching for known | ||
172 | * env vars (e.g. KRB5CCNAME) from the PAM environment. | ||
173 | */ | ||
174 | return NULL; | ||
175 | } | ||
176 | #endif | ||
120 | 177 | ||
121 | struct pam_ctxt { | 178 | void |
122 | sp_pthread_t pam_thread; | 179 | pam_password_change_required(int reqd) |
123 | int pam_psock; | 180 | { |
124 | int pam_csock; | 181 | debug3("%s %d", __func__, reqd); |
125 | int pam_done; | 182 | *force_pwchange = reqd; |
126 | }; | 183 | if (reqd) { |
184 | no_port_forwarding_flag |= 2; | ||
185 | no_agent_forwarding_flag |= 2; | ||
186 | no_x11_forwarding_flag |= 2; | ||
187 | } else { | ||
188 | no_port_forwarding_flag &= ~2; | ||
189 | no_agent_forwarding_flag &= ~2; | ||
190 | no_x11_forwarding_flag &= ~2; | ||
191 | } | ||
192 | } | ||
127 | 193 | ||
128 | static void sshpam_free_ctx(void *); | 194 | /* Import regular and PAM environment from subprocess */ |
195 | static void | ||
196 | import_environments(Buffer *b) | ||
197 | { | ||
198 | char *env; | ||
199 | u_int i, num_env; | ||
200 | int err; | ||
201 | |||
202 | debug3("PAM: %s entering", __func__); | ||
203 | |||
204 | /* Import variables set by do_pam_account */ | ||
205 | sshpam_account_status = buffer_get_int(b); | ||
206 | pam_password_change_required(buffer_get_int(b)); | ||
207 | |||
208 | /* Import environment from subprocess */ | ||
209 | num_env = buffer_get_int(b); | ||
210 | sshpam_env = xmalloc((num_env + 1) * sizeof(*sshpam_env)); | ||
211 | debug3("PAM: num env strings %d", num_env); | ||
212 | for(i = 0; i < num_env; i++) | ||
213 | sshpam_env[i] = buffer_get_string(b, NULL); | ||
214 | |||
215 | sshpam_env[num_env] = NULL; | ||
216 | |||
217 | /* Import PAM environment from subprocess */ | ||
218 | num_env = buffer_get_int(b); | ||
219 | debug("PAM: num PAM env strings %d", num_env); | ||
220 | for(i = 0; i < num_env; i++) { | ||
221 | env = buffer_get_string(b, NULL); | ||
222 | |||
223 | #ifdef HAVE_PAM_PUTENV | ||
224 | /* Errors are not fatal here */ | ||
225 | if ((err = pam_putenv(sshpam_handle, env)) != PAM_SUCCESS) { | ||
226 | error("PAM: pam_putenv: %s", | ||
227 | pam_strerror(sshpam_handle, sshpam_err)); | ||
228 | } | ||
229 | #endif | ||
230 | } | ||
231 | } | ||
129 | 232 | ||
130 | /* | 233 | /* |
131 | * Conversation function for authentication thread. | 234 | * Conversation function for authentication thread. |
@@ -139,6 +242,7 @@ sshpam_thread_conv(int n, const struct pam_message **msg, | |||
139 | struct pam_response *reply; | 242 | struct pam_response *reply; |
140 | int i; | 243 | int i; |
141 | 244 | ||
245 | debug3("PAM: %s entering, %d messages", __func__, n); | ||
142 | *resp = NULL; | 246 | *resp = NULL; |
143 | 247 | ||
144 | ctxt = data; | 248 | ctxt = data; |
@@ -153,36 +257,42 @@ sshpam_thread_conv(int n, const struct pam_message **msg, | |||
153 | for (i = 0; i < n; ++i) { | 257 | for (i = 0; i < n; ++i) { |
154 | switch (PAM_MSG_MEMBER(msg, i, msg_style)) { | 258 | switch (PAM_MSG_MEMBER(msg, i, msg_style)) { |
155 | case PAM_PROMPT_ECHO_OFF: | 259 | case PAM_PROMPT_ECHO_OFF: |
156 | buffer_put_cstring(&buffer, | 260 | buffer_put_cstring(&buffer, |
157 | PAM_MSG_MEMBER(msg, i, msg)); | 261 | PAM_MSG_MEMBER(msg, i, msg)); |
158 | ssh_msg_send(ctxt->pam_csock, | 262 | if (ssh_msg_send(ctxt->pam_csock, |
159 | PAM_MSG_MEMBER(msg, i, msg_style), &buffer); | 263 | PAM_MSG_MEMBER(msg, i, msg_style), &buffer) == -1) |
160 | ssh_msg_recv(ctxt->pam_csock, &buffer); | 264 | goto fail; |
265 | if (ssh_msg_recv(ctxt->pam_csock, &buffer) == -1) | ||
266 | goto fail; | ||
161 | if (buffer_get_char(&buffer) != PAM_AUTHTOK) | 267 | if (buffer_get_char(&buffer) != PAM_AUTHTOK) |
162 | goto fail; | 268 | goto fail; |
163 | reply[i].resp = buffer_get_string(&buffer, NULL); | 269 | reply[i].resp = buffer_get_string(&buffer, NULL); |
164 | break; | 270 | break; |
165 | case PAM_PROMPT_ECHO_ON: | 271 | case PAM_PROMPT_ECHO_ON: |
166 | buffer_put_cstring(&buffer, | 272 | buffer_put_cstring(&buffer, |
167 | PAM_MSG_MEMBER(msg, i, msg)); | 273 | PAM_MSG_MEMBER(msg, i, msg)); |
168 | ssh_msg_send(ctxt->pam_csock, | 274 | if (ssh_msg_send(ctxt->pam_csock, |
169 | PAM_MSG_MEMBER(msg, i, msg_style), &buffer); | 275 | PAM_MSG_MEMBER(msg, i, msg_style), &buffer) == -1) |
170 | ssh_msg_recv(ctxt->pam_csock, &buffer); | 276 | goto fail; |
277 | if (ssh_msg_recv(ctxt->pam_csock, &buffer) == -1) | ||
278 | goto fail; | ||
171 | if (buffer_get_char(&buffer) != PAM_AUTHTOK) | 279 | if (buffer_get_char(&buffer) != PAM_AUTHTOK) |
172 | goto fail; | 280 | goto fail; |
173 | reply[i].resp = buffer_get_string(&buffer, NULL); | 281 | reply[i].resp = buffer_get_string(&buffer, NULL); |
174 | break; | 282 | break; |
175 | case PAM_ERROR_MSG: | 283 | case PAM_ERROR_MSG: |
176 | buffer_put_cstring(&buffer, | 284 | buffer_put_cstring(&buffer, |
177 | PAM_MSG_MEMBER(msg, i, msg)); | 285 | PAM_MSG_MEMBER(msg, i, msg)); |
178 | ssh_msg_send(ctxt->pam_csock, | 286 | if (ssh_msg_send(ctxt->pam_csock, |
179 | PAM_MSG_MEMBER(msg, i, msg_style), &buffer); | 287 | PAM_MSG_MEMBER(msg, i, msg_style), &buffer) == -1) |
288 | goto fail; | ||
180 | break; | 289 | break; |
181 | case PAM_TEXT_INFO: | 290 | case PAM_TEXT_INFO: |
182 | buffer_put_cstring(&buffer, | 291 | buffer_put_cstring(&buffer, |
183 | PAM_MSG_MEMBER(msg, i, msg)); | 292 | PAM_MSG_MEMBER(msg, i, msg)); |
184 | ssh_msg_send(ctxt->pam_csock, | 293 | if (ssh_msg_send(ctxt->pam_csock, |
185 | PAM_MSG_MEMBER(msg, i, msg_style), &buffer); | 294 | PAM_MSG_MEMBER(msg, i, msg_style), &buffer) == -1) |
295 | goto fail; | ||
186 | break; | 296 | break; |
187 | default: | 297 | default: |
188 | goto fail; | 298 | goto fail; |
@@ -213,10 +323,14 @@ sshpam_thread(void *ctxtp) | |||
213 | Buffer buffer; | 323 | Buffer buffer; |
214 | struct pam_conv sshpam_conv; | 324 | struct pam_conv sshpam_conv; |
215 | #ifndef USE_POSIX_THREADS | 325 | #ifndef USE_POSIX_THREADS |
326 | extern char **environ; | ||
327 | char **env_from_pam; | ||
328 | u_int i; | ||
216 | const char *pam_user; | 329 | const char *pam_user; |
217 | 330 | ||
218 | pam_get_item(sshpam_handle, PAM_USER, (const void **)&pam_user); | 331 | pam_get_item(sshpam_handle, PAM_USER, (const void **)&pam_user); |
219 | setproctitle("%s [pam]", pam_user); | 332 | setproctitle("%s [pam]", pam_user); |
333 | environ[0] = NULL; | ||
220 | #endif | 334 | #endif |
221 | 335 | ||
222 | sshpam_conv.conv = sshpam_thread_conv; | 336 | sshpam_conv.conv = sshpam_thread_conv; |
@@ -230,7 +344,43 @@ sshpam_thread(void *ctxtp) | |||
230 | sshpam_err = pam_authenticate(sshpam_handle, 0); | 344 | sshpam_err = pam_authenticate(sshpam_handle, 0); |
231 | if (sshpam_err != PAM_SUCCESS) | 345 | if (sshpam_err != PAM_SUCCESS) |
232 | goto auth_fail; | 346 | goto auth_fail; |
347 | |||
348 | if (compat20) { | ||
349 | if (!do_pam_account()) | ||
350 | goto auth_fail; | ||
351 | if (*force_pwchange) { | ||
352 | sshpam_err = pam_chauthtok(sshpam_handle, | ||
353 | PAM_CHANGE_EXPIRED_AUTHTOK); | ||
354 | if (sshpam_err != PAM_SUCCESS) | ||
355 | goto auth_fail; | ||
356 | pam_password_change_required(0); | ||
357 | } | ||
358 | } | ||
359 | |||
233 | buffer_put_cstring(&buffer, "OK"); | 360 | buffer_put_cstring(&buffer, "OK"); |
361 | |||
362 | #ifndef USE_POSIX_THREADS | ||
363 | /* Export variables set by do_pam_account */ | ||
364 | buffer_put_int(&buffer, sshpam_account_status); | ||
365 | buffer_put_int(&buffer, *force_pwchange); | ||
366 | |||
367 | /* Export any environment strings set in child */ | ||
368 | for(i = 0; environ[i] != NULL; i++) | ||
369 | ; /* Count */ | ||
370 | buffer_put_int(&buffer, i); | ||
371 | for(i = 0; environ[i] != NULL; i++) | ||
372 | buffer_put_cstring(&buffer, environ[i]); | ||
373 | |||
374 | /* Export any environment strings set by PAM in child */ | ||
375 | env_from_pam = pam_getenvlist(sshpam_handle); | ||
376 | for(i = 0; env_from_pam != NULL && env_from_pam[i] != NULL; i++) | ||
377 | ; /* Count */ | ||
378 | buffer_put_int(&buffer, i); | ||
379 | for(i = 0; env_from_pam != NULL && env_from_pam[i] != NULL; i++) | ||
380 | buffer_put_cstring(&buffer, env_from_pam[i]); | ||
381 | #endif /* USE_POSIX_THREADS */ | ||
382 | |||
383 | /* XXX - can't do much about an error here */ | ||
234 | ssh_msg_send(ctxt->pam_csock, sshpam_err, &buffer); | 384 | ssh_msg_send(ctxt->pam_csock, sshpam_err, &buffer); |
235 | buffer_free(&buffer); | 385 | buffer_free(&buffer); |
236 | pthread_exit(NULL); | 386 | pthread_exit(NULL); |
@@ -238,37 +388,43 @@ sshpam_thread(void *ctxtp) | |||
238 | auth_fail: | 388 | auth_fail: |
239 | buffer_put_cstring(&buffer, | 389 | buffer_put_cstring(&buffer, |
240 | pam_strerror(sshpam_handle, sshpam_err)); | 390 | pam_strerror(sshpam_handle, sshpam_err)); |
391 | /* XXX - can't do much about an error here */ | ||
241 | ssh_msg_send(ctxt->pam_csock, PAM_AUTH_ERR, &buffer); | 392 | ssh_msg_send(ctxt->pam_csock, PAM_AUTH_ERR, &buffer); |
242 | buffer_free(&buffer); | 393 | buffer_free(&buffer); |
243 | pthread_exit(NULL); | 394 | pthread_exit(NULL); |
244 | 395 | ||
245 | return (NULL); /* Avoid warning for non-pthread case */ | 396 | return (NULL); /* Avoid warning for non-pthread case */ |
246 | } | 397 | } |
247 | 398 | ||
248 | static void | 399 | void |
249 | sshpam_thread_cleanup(void *ctxtp) | 400 | sshpam_thread_cleanup(void) |
250 | { | 401 | { |
251 | struct pam_ctxt *ctxt = ctxtp; | 402 | struct pam_ctxt *ctxt = cleanup_ctxt; |
252 | 403 | ||
253 | pthread_cancel(ctxt->pam_thread); | 404 | debug3("PAM: %s entering", __func__); |
254 | pthread_join(ctxt->pam_thread, NULL); | 405 | if (ctxt != NULL && ctxt->pam_thread != 0) { |
255 | close(ctxt->pam_psock); | 406 | pthread_cancel(ctxt->pam_thread); |
256 | close(ctxt->pam_csock); | 407 | pthread_join(ctxt->pam_thread, NULL); |
408 | close(ctxt->pam_psock); | ||
409 | close(ctxt->pam_csock); | ||
410 | memset(ctxt, 0, sizeof(*ctxt)); | ||
411 | cleanup_ctxt = NULL; | ||
412 | } | ||
257 | } | 413 | } |
258 | 414 | ||
259 | static int | 415 | static int |
260 | sshpam_null_conv(int n, const struct pam_message **msg, | 416 | sshpam_null_conv(int n, const struct pam_message **msg, |
261 | struct pam_response **resp, void *data) | 417 | struct pam_response **resp, void *data) |
262 | { | 418 | { |
419 | debug3("PAM: %s entering, %d messages", __func__, n); | ||
263 | return (PAM_CONV_ERR); | 420 | return (PAM_CONV_ERR); |
264 | } | 421 | } |
265 | 422 | ||
266 | static struct pam_conv null_conv = { sshpam_null_conv, NULL }; | 423 | static struct pam_conv null_conv = { sshpam_null_conv, NULL }; |
267 | 424 | ||
268 | static void | 425 | void |
269 | sshpam_cleanup(void *arg) | 426 | sshpam_cleanup(void) |
270 | { | 427 | { |
271 | (void)arg; | ||
272 | debug("PAM: cleanup"); | 428 | debug("PAM: cleanup"); |
273 | if (sshpam_handle == NULL) | 429 | if (sshpam_handle == NULL) |
274 | return; | 430 | return; |
@@ -281,7 +437,7 @@ sshpam_cleanup(void *arg) | |||
281 | pam_close_session(sshpam_handle, PAM_SILENT); | 437 | pam_close_session(sshpam_handle, PAM_SILENT); |
282 | sshpam_session_open = 0; | 438 | sshpam_session_open = 0; |
283 | } | 439 | } |
284 | sshpam_authenticated = sshpam_new_authtok_reqd = 0; | 440 | sshpam_authenticated = 0; |
285 | pam_end(sshpam_handle, sshpam_err); | 441 | pam_end(sshpam_handle, sshpam_err); |
286 | sshpam_handle = NULL; | 442 | sshpam_handle = NULL; |
287 | } | 443 | } |
@@ -299,7 +455,6 @@ sshpam_init(const char *user) | |||
299 | PAM_USER, (const void **)&pam_user); | 455 | PAM_USER, (const void **)&pam_user); |
300 | if (sshpam_err == PAM_SUCCESS && strcmp(user, pam_user) == 0) | 456 | if (sshpam_err == PAM_SUCCESS && strcmp(user, pam_user) == 0) |
301 | return (0); | 457 | return (0); |
302 | fatal_remove_cleanup(sshpam_cleanup, NULL); | ||
303 | pam_end(sshpam_handle, sshpam_err); | 458 | pam_end(sshpam_handle, sshpam_err); |
304 | sshpam_handle = NULL; | 459 | sshpam_handle = NULL; |
305 | } | 460 | } |
@@ -320,11 +475,11 @@ sshpam_init(const char *user) | |||
320 | return (-1); | 475 | return (-1); |
321 | } | 476 | } |
322 | #ifdef PAM_TTY_KLUDGE | 477 | #ifdef PAM_TTY_KLUDGE |
323 | /* | 478 | /* |
324 | * Some silly PAM modules (e.g. pam_time) require a TTY to operate. | 479 | * Some silly PAM modules (e.g. pam_time) require a TTY to operate. |
325 | * sshd doesn't set the tty until too late in the auth process and | 480 | * sshd doesn't set the tty until too late in the auth process and |
326 | * may not even set one (for tty-less connections) | 481 | * may not even set one (for tty-less connections) |
327 | */ | 482 | */ |
328 | debug("PAM: setting PAM_TTY to \"ssh\""); | 483 | debug("PAM: setting PAM_TTY to \"ssh\""); |
329 | sshpam_err = pam_set_item(sshpam_handle, PAM_TTY, "ssh"); | 484 | sshpam_err = pam_set_item(sshpam_handle, PAM_TTY, "ssh"); |
330 | if (sshpam_err != PAM_SUCCESS) { | 485 | if (sshpam_err != PAM_SUCCESS) { |
@@ -333,7 +488,6 @@ sshpam_init(const char *user) | |||
333 | return (-1); | 488 | return (-1); |
334 | } | 489 | } |
335 | #endif | 490 | #endif |
336 | fatal_add_cleanup(sshpam_cleanup, NULL); | ||
337 | return (0); | 491 | return (0); |
338 | } | 492 | } |
339 | 493 | ||
@@ -343,6 +497,7 @@ sshpam_init_ctx(Authctxt *authctxt) | |||
343 | struct pam_ctxt *ctxt; | 497 | struct pam_ctxt *ctxt; |
344 | int socks[2]; | 498 | int socks[2]; |
345 | 499 | ||
500 | debug3("PAM: %s entering", __func__); | ||
346 | /* Refuse to start if we don't have PAM enabled */ | 501 | /* Refuse to start if we don't have PAM enabled */ |
347 | if (!options.use_pam) | 502 | if (!options.use_pam) |
348 | return NULL; | 503 | return NULL; |
@@ -354,7 +509,9 @@ sshpam_init_ctx(Authctxt *authctxt) | |||
354 | } | 509 | } |
355 | 510 | ||
356 | ctxt = xmalloc(sizeof *ctxt); | 511 | ctxt = xmalloc(sizeof *ctxt); |
357 | ctxt->pam_done = 0; | 512 | memset(ctxt, 0, sizeof(*ctxt)); |
513 | |||
514 | force_pwchange = &(authctxt->force_pwchange); | ||
358 | 515 | ||
359 | /* Start the authentication thread */ | 516 | /* Start the authentication thread */ |
360 | if (socketpair(AF_UNIX, SOCK_STREAM, PF_UNSPEC, socks) == -1) { | 517 | if (socketpair(AF_UNIX, SOCK_STREAM, PF_UNSPEC, socks) == -1) { |
@@ -372,7 +529,7 @@ sshpam_init_ctx(Authctxt *authctxt) | |||
372 | xfree(ctxt); | 529 | xfree(ctxt); |
373 | return (NULL); | 530 | return (NULL); |
374 | } | 531 | } |
375 | fatal_add_cleanup(sshpam_thread_cleanup, ctxt); | 532 | cleanup_ctxt = ctxt; |
376 | return (ctxt); | 533 | return (ctxt); |
377 | } | 534 | } |
378 | 535 | ||
@@ -387,6 +544,7 @@ sshpam_query(void *ctx, char **name, char **info, | |||
387 | char *msg; | 544 | char *msg; |
388 | size_t len; | 545 | size_t len; |
389 | 546 | ||
547 | debug3("PAM: %s entering", __func__); | ||
390 | buffer_init(&buffer); | 548 | buffer_init(&buffer); |
391 | *name = xstrdup(""); | 549 | *name = xstrdup(""); |
392 | *info = xstrdup(""); | 550 | *info = xstrdup(""); |
@@ -410,26 +568,23 @@ sshpam_query(void *ctx, char **name, char **info, | |||
410 | case PAM_ERROR_MSG: | 568 | case PAM_ERROR_MSG: |
411 | case PAM_TEXT_INFO: | 569 | case PAM_TEXT_INFO: |
412 | /* accumulate messages */ | 570 | /* accumulate messages */ |
413 | len = plen + strlen(msg) + 1; | 571 | len = plen + strlen(msg) + 2; |
414 | **prompts = xrealloc(**prompts, len); | 572 | **prompts = xrealloc(**prompts, len); |
415 | plen += snprintf(**prompts + plen, len, "%s", msg); | 573 | plen += snprintf(**prompts + plen, len, "%s\n", msg); |
416 | xfree(msg); | 574 | xfree(msg); |
417 | break; | 575 | break; |
418 | case PAM_SUCCESS: | 576 | case PAM_SUCCESS: |
419 | case PAM_AUTH_ERR: | 577 | case PAM_AUTH_ERR: |
420 | if (**prompts != NULL) { | 578 | if (**prompts != NULL) { |
421 | /* drain any accumulated messages */ | 579 | /* drain any accumulated messages */ |
422 | #if 0 /* XXX - not compatible with privsep */ | 580 | debug("PAM: %s", **prompts); |
423 | packet_start(SSH2_MSG_USERAUTH_BANNER); | 581 | buffer_append(&loginmsg, **prompts, |
424 | packet_put_cstring(**prompts); | 582 | strlen(**prompts)); |
425 | packet_put_cstring(""); | ||
426 | packet_send(); | ||
427 | packet_write_wait(); | ||
428 | #endif | ||
429 | xfree(**prompts); | 583 | xfree(**prompts); |
430 | **prompts = NULL; | 584 | **prompts = NULL; |
431 | } | 585 | } |
432 | if (type == PAM_SUCCESS) { | 586 | if (type == PAM_SUCCESS) { |
587 | import_environments(&buffer); | ||
433 | *num = 0; | 588 | *num = 0; |
434 | **echo_on = 0; | 589 | **echo_on = 0; |
435 | ctxt->pam_done = 1; | 590 | ctxt->pam_done = 1; |
@@ -437,6 +592,7 @@ sshpam_query(void *ctx, char **name, char **info, | |||
437 | return (0); | 592 | return (0); |
438 | } | 593 | } |
439 | error("PAM: %s", msg); | 594 | error("PAM: %s", msg); |
595 | /* FALLTHROUGH */ | ||
440 | default: | 596 | default: |
441 | *num = 0; | 597 | *num = 0; |
442 | **echo_on = 0; | 598 | **echo_on = 0; |
@@ -455,7 +611,7 @@ sshpam_respond(void *ctx, u_int num, char **resp) | |||
455 | Buffer buffer; | 611 | Buffer buffer; |
456 | struct pam_ctxt *ctxt = ctx; | 612 | struct pam_ctxt *ctxt = ctx; |
457 | 613 | ||
458 | debug2("PAM: %s", __func__); | 614 | debug2("PAM: %s entering, %d responses", __func__, num); |
459 | switch (ctxt->pam_done) { | 615 | switch (ctxt->pam_done) { |
460 | case 1: | 616 | case 1: |
461 | sshpam_authenticated = 1; | 617 | sshpam_authenticated = 1; |
@@ -471,7 +627,10 @@ sshpam_respond(void *ctx, u_int num, char **resp) | |||
471 | } | 627 | } |
472 | buffer_init(&buffer); | 628 | buffer_init(&buffer); |
473 | buffer_put_cstring(&buffer, *resp); | 629 | buffer_put_cstring(&buffer, *resp); |
474 | ssh_msg_send(ctxt->pam_psock, PAM_AUTHTOK, &buffer); | 630 | if (ssh_msg_send(ctxt->pam_psock, PAM_AUTHTOK, &buffer) == -1) { |
631 | buffer_free(&buffer); | ||
632 | return (-1); | ||
633 | } | ||
475 | buffer_free(&buffer); | 634 | buffer_free(&buffer); |
476 | return (1); | 635 | return (1); |
477 | } | 636 | } |
@@ -481,8 +640,8 @@ sshpam_free_ctx(void *ctxtp) | |||
481 | { | 640 | { |
482 | struct pam_ctxt *ctxt = ctxtp; | 641 | struct pam_ctxt *ctxt = ctxtp; |
483 | 642 | ||
484 | fatal_remove_cleanup(sshpam_thread_cleanup, ctxt); | 643 | debug3("PAM: %s entering", __func__); |
485 | sshpam_thread_cleanup(ctxtp); | 644 | sshpam_thread_cleanup(); |
486 | xfree(ctxt); | 645 | xfree(ctxt); |
487 | /* | 646 | /* |
488 | * We don't call sshpam_cleanup() here because we may need the PAM | 647 | * We don't call sshpam_cleanup() here because we may need the PAM |
@@ -524,44 +683,28 @@ start_pam(const char *user) | |||
524 | void | 683 | void |
525 | finish_pam(void) | 684 | finish_pam(void) |
526 | { | 685 | { |
527 | fatal_remove_cleanup(sshpam_cleanup, NULL); | 686 | sshpam_cleanup(); |
528 | sshpam_cleanup(NULL); | ||
529 | } | 687 | } |
530 | 688 | ||
531 | u_int | 689 | u_int |
532 | do_pam_account(void) | 690 | do_pam_account(void) |
533 | { | 691 | { |
692 | if (sshpam_account_status != -1) | ||
693 | return (sshpam_account_status); | ||
694 | |||
534 | sshpam_err = pam_acct_mgmt(sshpam_handle, 0); | 695 | sshpam_err = pam_acct_mgmt(sshpam_handle, 0); |
535 | debug3("%s: pam_acct_mgmt = %d", __func__, sshpam_err); | 696 | debug3("PAM: %s pam_acct_mgmt = %d", __func__, sshpam_err); |
536 | 697 | ||
537 | if (sshpam_err != PAM_SUCCESS && sshpam_err != PAM_NEW_AUTHTOK_REQD) | 698 | if (sshpam_err != PAM_SUCCESS && sshpam_err != PAM_NEW_AUTHTOK_REQD) { |
538 | return (0); | 699 | sshpam_account_status = 0; |
539 | 700 | return (sshpam_account_status); | |
540 | if (sshpam_err == PAM_NEW_AUTHTOK_REQD) { | ||
541 | sshpam_new_authtok_reqd = 1; | ||
542 | |||
543 | /* Prevent forwardings until password changed */ | ||
544 | no_port_forwarding_flag |= 2; | ||
545 | no_agent_forwarding_flag |= 2; | ||
546 | no_x11_forwarding_flag |= 2; | ||
547 | } | 701 | } |
548 | 702 | ||
549 | return (1); | 703 | if (sshpam_err == PAM_NEW_AUTHTOK_REQD) |
550 | } | 704 | pam_password_change_required(1); |
551 | 705 | ||
552 | void | 706 | sshpam_account_status = 1; |
553 | do_pam_session(void) | 707 | return (sshpam_account_status); |
554 | { | ||
555 | sshpam_err = pam_set_item(sshpam_handle, PAM_CONV, | ||
556 | (const void *)&null_conv); | ||
557 | if (sshpam_err != PAM_SUCCESS) | ||
558 | fatal("PAM: failed to set PAM_CONV: %s", | ||
559 | pam_strerror(sshpam_handle, sshpam_err)); | ||
560 | sshpam_err = pam_open_session(sshpam_handle, 0); | ||
561 | if (sshpam_err != PAM_SUCCESS) | ||
562 | fatal("PAM: pam_open_session(): %s", | ||
563 | pam_strerror(sshpam_handle, sshpam_err)); | ||
564 | sshpam_session_open = 1; | ||
565 | } | 708 | } |
566 | 709 | ||
567 | void | 710 | void |
@@ -603,23 +746,19 @@ do_pam_setcred(int init) | |||
603 | pam_strerror(sshpam_handle, sshpam_err)); | 746 | pam_strerror(sshpam_handle, sshpam_err)); |
604 | } | 747 | } |
605 | 748 | ||
606 | int | ||
607 | is_pam_password_change_required(void) | ||
608 | { | ||
609 | return (sshpam_new_authtok_reqd); | ||
610 | } | ||
611 | |||
612 | static int | 749 | static int |
613 | pam_chauthtok_conv(int n, const struct pam_message **msg, | 750 | pam_tty_conv(int n, const struct pam_message **msg, |
614 | struct pam_response **resp, void *data) | 751 | struct pam_response **resp, void *data) |
615 | { | 752 | { |
616 | char input[PAM_MAX_MSG_SIZE]; | 753 | char input[PAM_MAX_MSG_SIZE]; |
617 | struct pam_response *reply; | 754 | struct pam_response *reply; |
618 | int i; | 755 | int i; |
619 | 756 | ||
757 | debug3("PAM: %s called with %d messages", __func__, n); | ||
758 | |||
620 | *resp = NULL; | 759 | *resp = NULL; |
621 | 760 | ||
622 | if (n <= 0 || n > PAM_MAX_NUM_MSG) | 761 | if (n <= 0 || n > PAM_MAX_NUM_MSG || !isatty(STDIN_FILENO)) |
623 | return (PAM_CONV_ERR); | 762 | return (PAM_CONV_ERR); |
624 | 763 | ||
625 | if ((reply = malloc(n * sizeof(*reply))) == NULL) | 764 | if ((reply = malloc(n * sizeof(*reply))) == NULL) |
@@ -630,19 +769,19 @@ pam_chauthtok_conv(int n, const struct pam_message **msg, | |||
630 | switch (PAM_MSG_MEMBER(msg, i, msg_style)) { | 769 | switch (PAM_MSG_MEMBER(msg, i, msg_style)) { |
631 | case PAM_PROMPT_ECHO_OFF: | 770 | case PAM_PROMPT_ECHO_OFF: |
632 | reply[i].resp = | 771 | reply[i].resp = |
633 | read_passphrase(PAM_MSG_MEMBER(msg, i, msg), | 772 | read_passphrase(PAM_MSG_MEMBER(msg, i, msg), |
634 | RP_ALLOW_STDIN); | 773 | RP_ALLOW_STDIN); |
635 | reply[i].resp_retcode = PAM_SUCCESS; | 774 | reply[i].resp_retcode = PAM_SUCCESS; |
636 | break; | 775 | break; |
637 | case PAM_PROMPT_ECHO_ON: | 776 | case PAM_PROMPT_ECHO_ON: |
638 | fputs(PAM_MSG_MEMBER(msg, i, msg), stderr); | 777 | fprintf(stderr, "%s\n", PAM_MSG_MEMBER(msg, i, msg)); |
639 | fgets(input, sizeof input, stdin); | 778 | fgets(input, sizeof input, stdin); |
640 | reply[i].resp = xstrdup(input); | 779 | reply[i].resp = xstrdup(input); |
641 | reply[i].resp_retcode = PAM_SUCCESS; | 780 | reply[i].resp_retcode = PAM_SUCCESS; |
642 | break; | 781 | break; |
643 | case PAM_ERROR_MSG: | 782 | case PAM_ERROR_MSG: |
644 | case PAM_TEXT_INFO: | 783 | case PAM_TEXT_INFO: |
645 | fputs(PAM_MSG_MEMBER(msg, i, msg), stderr); | 784 | fprintf(stderr, "%s\n", PAM_MSG_MEMBER(msg, i, msg)); |
646 | reply[i].resp_retcode = PAM_SUCCESS; | 785 | reply[i].resp_retcode = PAM_SUCCESS; |
647 | break; | 786 | break; |
648 | default: | 787 | default: |
@@ -661,6 +800,8 @@ pam_chauthtok_conv(int n, const struct pam_message **msg, | |||
661 | return (PAM_CONV_ERR); | 800 | return (PAM_CONV_ERR); |
662 | } | 801 | } |
663 | 802 | ||
803 | static struct pam_conv tty_conv = { pam_tty_conv, NULL }; | ||
804 | |||
664 | /* | 805 | /* |
665 | * XXX this should be done in the authentication phase, but ssh1 doesn't | 806 | * XXX this should be done in the authentication phase, but ssh1 doesn't |
666 | * support that | 807 | * support that |
@@ -668,15 +809,10 @@ pam_chauthtok_conv(int n, const struct pam_message **msg, | |||
668 | void | 809 | void |
669 | do_pam_chauthtok(void) | 810 | do_pam_chauthtok(void) |
670 | { | 811 | { |
671 | struct pam_conv pam_conv; | ||
672 | |||
673 | pam_conv.conv = pam_chauthtok_conv; | ||
674 | pam_conv.appdata_ptr = NULL; | ||
675 | |||
676 | if (use_privsep) | 812 | if (use_privsep) |
677 | fatal("Password expired (unable to change with privsep)"); | 813 | fatal("Password expired (unable to change with privsep)"); |
678 | sshpam_err = pam_set_item(sshpam_handle, PAM_CONV, | 814 | sshpam_err = pam_set_item(sshpam_handle, PAM_CONV, |
679 | (const void *)&pam_conv); | 815 | (const void *)&tty_conv); |
680 | if (sshpam_err != PAM_SUCCESS) | 816 | if (sshpam_err != PAM_SUCCESS) |
681 | fatal("PAM: failed to set PAM_CONV: %s", | 817 | fatal("PAM: failed to set PAM_CONV: %s", |
682 | pam_strerror(sshpam_handle, sshpam_err)); | 818 | pam_strerror(sshpam_handle, sshpam_err)); |
@@ -687,17 +823,77 @@ do_pam_chauthtok(void) | |||
687 | pam_strerror(sshpam_handle, sshpam_err)); | 823 | pam_strerror(sshpam_handle, sshpam_err)); |
688 | } | 824 | } |
689 | 825 | ||
690 | /* | 826 | static int |
827 | pam_store_conv(int n, const struct pam_message **msg, | ||
828 | struct pam_response **resp, void *data) | ||
829 | { | ||
830 | struct pam_response *reply; | ||
831 | int i; | ||
832 | size_t len; | ||
833 | |||
834 | debug3("PAM: %s called with %d messages", __func__, n); | ||
835 | *resp = NULL; | ||
836 | |||
837 | if (n <= 0 || n > PAM_MAX_NUM_MSG) | ||
838 | return (PAM_CONV_ERR); | ||
839 | |||
840 | if ((reply = malloc(n * sizeof(*reply))) == NULL) | ||
841 | return (PAM_CONV_ERR); | ||
842 | memset(reply, 0, n * sizeof(*reply)); | ||
843 | |||
844 | for (i = 0; i < n; ++i) { | ||
845 | switch (PAM_MSG_MEMBER(msg, i, msg_style)) { | ||
846 | case PAM_ERROR_MSG: | ||
847 | case PAM_TEXT_INFO: | ||
848 | len = strlen(PAM_MSG_MEMBER(msg, i, msg)); | ||
849 | buffer_append(&loginmsg, PAM_MSG_MEMBER(msg, i, msg), len); | ||
850 | buffer_append(&loginmsg, "\n", 1 ); | ||
851 | reply[i].resp_retcode = PAM_SUCCESS; | ||
852 | break; | ||
853 | default: | ||
854 | goto fail; | ||
855 | } | ||
856 | } | ||
857 | *resp = reply; | ||
858 | return (PAM_SUCCESS); | ||
859 | |||
860 | fail: | ||
861 | for(i = 0; i < n; i++) { | ||
862 | if (reply[i].resp != NULL) | ||
863 | xfree(reply[i].resp); | ||
864 | } | ||
865 | xfree(reply); | ||
866 | return (PAM_CONV_ERR); | ||
867 | } | ||
868 | |||
869 | static struct pam_conv store_conv = { pam_store_conv, NULL }; | ||
870 | |||
871 | void | ||
872 | do_pam_session(void) | ||
873 | { | ||
874 | debug3("PAM: opening session"); | ||
875 | sshpam_err = pam_set_item(sshpam_handle, PAM_CONV, | ||
876 | (const void *)&store_conv); | ||
877 | if (sshpam_err != PAM_SUCCESS) | ||
878 | fatal("PAM: failed to set PAM_CONV: %s", | ||
879 | pam_strerror(sshpam_handle, sshpam_err)); | ||
880 | sshpam_err = pam_open_session(sshpam_handle, 0); | ||
881 | if (sshpam_err != PAM_SUCCESS) | ||
882 | fatal("PAM: pam_open_session(): %s", | ||
883 | pam_strerror(sshpam_handle, sshpam_err)); | ||
884 | sshpam_session_open = 1; | ||
885 | } | ||
886 | |||
887 | /* | ||
691 | * Set a PAM environment string. We need to do this so that the session | 888 | * Set a PAM environment string. We need to do this so that the session |
692 | * modules can handle things like Kerberos/GSI credentials that appear | 889 | * modules can handle things like Kerberos/GSI credentials that appear |
693 | * during the ssh authentication process. | 890 | * during the ssh authentication process. |
694 | */ | 891 | */ |
695 | |||
696 | int | 892 | int |
697 | do_pam_putenv(char *name, char *value) | 893 | do_pam_putenv(char *name, char *value) |
698 | { | 894 | { |
699 | int ret = 1; | 895 | int ret = 1; |
700 | #ifdef HAVE_PAM_PUTENV | 896 | #ifdef HAVE_PAM_PUTENV |
701 | char *compound; | 897 | char *compound; |
702 | size_t len; | 898 | size_t len; |
703 | 899 | ||
@@ -712,21 +908,16 @@ do_pam_putenv(char *name, char *value) | |||
712 | return (ret); | 908 | return (ret); |
713 | } | 909 | } |
714 | 910 | ||
715 | void | 911 | char ** |
716 | print_pam_messages(void) | 912 | fetch_pam_child_environment(void) |
717 | { | 913 | { |
718 | /* XXX */ | 914 | return sshpam_env; |
719 | } | 915 | } |
720 | 916 | ||
721 | char ** | 917 | char ** |
722 | fetch_pam_environment(void) | 918 | fetch_pam_environment(void) |
723 | { | 919 | { |
724 | #ifdef HAVE_PAM_GETENVLIST | ||
725 | debug("PAM: retrieving environment"); | ||
726 | return (pam_getenvlist(sshpam_handle)); | 920 | return (pam_getenvlist(sshpam_handle)); |
727 | #else | ||
728 | return (NULL); | ||
729 | #endif | ||
730 | } | 921 | } |
731 | 922 | ||
732 | void | 923 | void |
diff --git a/auth-pam.h b/auth-pam.h index 5c952f305..4bc8d6955 100644 --- a/auth-pam.h +++ b/auth-pam.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: auth-pam.h,v 1.21 2003/09/02 13:18:53 djm Exp $ */ | 1 | /* $Id: auth-pam.h,v 1.24 2004/02/10 02:23:29 dtucker Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 2000 Damien Miller. All rights reserved. | 4 | * Copyright (c) 2000 Damien Miller. All rights reserved. |
@@ -37,11 +37,12 @@ u_int do_pam_account(void); | |||
37 | void do_pam_session(void); | 37 | void do_pam_session(void); |
38 | void do_pam_set_tty(const char *); | 38 | void do_pam_set_tty(const char *); |
39 | void do_pam_setcred(int ); | 39 | void do_pam_setcred(int ); |
40 | int is_pam_password_change_required(void); | ||
41 | void do_pam_chauthtok(void); | 40 | void do_pam_chauthtok(void); |
42 | int do_pam_putenv(char *, char *); | 41 | int do_pam_putenv(char *, char *); |
43 | void print_pam_messages(void); | ||
44 | char ** fetch_pam_environment(void); | 42 | char ** fetch_pam_environment(void); |
43 | char ** fetch_pam_child_environment(void); | ||
45 | void free_pam_environment(char **); | 44 | void free_pam_environment(char **); |
45 | void sshpam_thread_cleanup(void); | ||
46 | void sshpam_cleanup(void); | ||
46 | 47 | ||
47 | #endif /* USE_PAM */ | 48 | #endif /* USE_PAM */ |
diff --git a/auth-passwd.c b/auth-passwd.c index 971c7ba19..b9679abd0 100644 --- a/auth-passwd.c +++ b/auth-passwd.c | |||
@@ -36,19 +36,24 @@ | |||
36 | */ | 36 | */ |
37 | 37 | ||
38 | #include "includes.h" | 38 | #include "includes.h" |
39 | RCSID("$OpenBSD: auth-passwd.c,v 1.29 2003/08/26 09:58:43 markus Exp $"); | 39 | RCSID("$OpenBSD: auth-passwd.c,v 1.31 2004/01/30 09:48:57 markus Exp $"); |
40 | 40 | ||
41 | #include "packet.h" | 41 | #include "packet.h" |
42 | #include "log.h" | 42 | #include "log.h" |
43 | #include "servconf.h" | 43 | #include "servconf.h" |
44 | #include "auth.h" | 44 | #include "auth.h" |
45 | #ifdef WITH_AIXAUTHENTICATE | 45 | #include "auth-options.h" |
46 | # include "buffer.h" | ||
47 | # include "canohost.h" | ||
48 | extern Buffer loginmsg; | ||
49 | #endif | ||
50 | 46 | ||
51 | extern ServerOptions options; | 47 | extern ServerOptions options; |
48 | int sys_auth_passwd(Authctxt *, const char *); | ||
49 | |||
50 | void | ||
51 | disable_forwarding(void) | ||
52 | { | ||
53 | no_port_forwarding_flag = 1; | ||
54 | no_agent_forwarding_flag = 1; | ||
55 | no_x11_forwarding_flag = 1; | ||
56 | } | ||
52 | 57 | ||
53 | /* | 58 | /* |
54 | * Tries to authenticate the user using password. Returns true if | 59 | * Tries to authenticate the user using password. Returns true if |
@@ -59,29 +64,31 @@ auth_password(Authctxt *authctxt, const char *password) | |||
59 | { | 64 | { |
60 | struct passwd * pw = authctxt->pw; | 65 | struct passwd * pw = authctxt->pw; |
61 | int ok = authctxt->valid; | 66 | int ok = authctxt->valid; |
67 | static int expire_checked = 0; | ||
62 | 68 | ||
63 | /* deny if no user. */ | ||
64 | if (pw == NULL) | ||
65 | return 0; | ||
66 | #ifndef HAVE_CYGWIN | 69 | #ifndef HAVE_CYGWIN |
67 | if (pw && pw->pw_uid == 0 && options.permit_root_login != PERMIT_YES) | 70 | if (pw->pw_uid == 0 && options.permit_root_login != PERMIT_YES) |
68 | ok = 0; | 71 | ok = 0; |
69 | #endif | 72 | #endif |
70 | if (*password == '\0' && options.permit_empty_passwd == 0) | 73 | if (*password == '\0' && options.permit_empty_passwd == 0) |
71 | return 0; | 74 | return 0; |
72 | 75 | ||
73 | #if defined(HAVE_OSF_SIA) | 76 | #if defined(HAVE_OSF_SIA) |
77 | /* | ||
78 | * XXX: any reason this is before krb? could be moved to | ||
79 | * sys_auth_passwd()? -dt | ||
80 | */ | ||
74 | return auth_sia_password(authctxt, password) && ok; | 81 | return auth_sia_password(authctxt, password) && ok; |
75 | #else | 82 | #endif |
76 | # ifdef KRB5 | 83 | #ifdef KRB5 |
77 | if (options.kerberos_authentication == 1) { | 84 | if (options.kerberos_authentication == 1) { |
78 | int ret = auth_krb5_password(authctxt, password); | 85 | int ret = auth_krb5_password(authctxt, password); |
79 | if (ret == 1 || ret == 0) | 86 | if (ret == 1 || ret == 0) |
80 | return ret && ok; | 87 | return ret && ok; |
81 | /* Fall back to ordinary passwd authentication. */ | 88 | /* Fall back to ordinary passwd authentication. */ |
82 | } | 89 | } |
83 | # endif | 90 | #endif |
84 | # ifdef HAVE_CYGWIN | 91 | #ifdef HAVE_CYGWIN |
85 | if (is_winnt) { | 92 | if (is_winnt) { |
86 | HANDLE hToken = cygwin_logon_user(pw, password); | 93 | HANDLE hToken = cygwin_logon_user(pw, password); |
87 | 94 | ||
@@ -90,74 +97,60 @@ auth_password(Authctxt *authctxt, const char *password) | |||
90 | cygwin_set_impersonation_token(hToken); | 97 | cygwin_set_impersonation_token(hToken); |
91 | return ok; | 98 | return ok; |
92 | } | 99 | } |
93 | # endif | 100 | #endif |
94 | # ifdef WITH_AIXAUTHENTICATE | 101 | #if defined(USE_SHADOW) && defined(HAS_SHADOW_EXPIRE) |
95 | { | 102 | if (!expire_checked) { |
96 | char *authmsg = NULL; | 103 | expire_checked = 1; |
97 | int reenter = 1; | 104 | if (auth_shadow_pwexpired(authctxt)) { |
98 | int authsuccess = 0; | 105 | disable_forwarding(); |
99 | 106 | authctxt->force_pwchange = 1; | |
100 | if (authenticate(pw->pw_name, password, &reenter, | ||
101 | &authmsg) == 0 && ok) { | ||
102 | char *msg; | ||
103 | char *host = | ||
104 | (char *)get_canonical_hostname(options.use_dns); | ||
105 | |||
106 | authsuccess = 1; | ||
107 | aix_remove_embedded_newlines(authmsg); | ||
108 | |||
109 | debug3("AIX/authenticate succeeded for user %s: %.100s", | ||
110 | pw->pw_name, authmsg); | ||
111 | |||
112 | /* No pty yet, so just label the line as "ssh" */ | ||
113 | aix_setauthdb(authctxt->user); | ||
114 | if (loginsuccess(authctxt->user, host, "ssh", | ||
115 | &msg) == 0) { | ||
116 | if (msg != NULL) { | ||
117 | debug("%s: msg %s", __func__, msg); | ||
118 | buffer_append(&loginmsg, msg, | ||
119 | strlen(msg)); | ||
120 | xfree(msg); | ||
121 | } | ||
122 | } | ||
123 | } else { | ||
124 | debug3("AIX/authenticate failed for user %s: %.100s", | ||
125 | pw->pw_name, authmsg); | ||
126 | } | 107 | } |
108 | } | ||
109 | #endif | ||
110 | |||
111 | return (sys_auth_passwd(authctxt, password) && ok); | ||
112 | } | ||
127 | 113 | ||
128 | if (authmsg != NULL) | 114 | #ifdef BSD_AUTH |
129 | xfree(authmsg); | 115 | int |
130 | 116 | sys_auth_passwd(Authctxt *authctxt, const char *password) | |
131 | return authsuccess; | 117 | { |
118 | struct passwd *pw = authctxt->pw; | ||
119 | auth_session_t *as; | ||
120 | |||
121 | as = auth_usercheck(pw->pw_name, authctxt->style, "auth-ssh", | ||
122 | (char *)password); | ||
123 | if (auth_getstate(as) & AUTH_PWEXPIRED) { | ||
124 | auth_close(as); | ||
125 | disable_forwarding(); | ||
126 | authctxt->force_pwchange = 1; | ||
127 | return (1); | ||
128 | } else { | ||
129 | return (auth_close(as)); | ||
132 | } | 130 | } |
133 | # endif | 131 | } |
134 | # ifdef BSD_AUTH | 132 | #elif !defined(CUSTOM_SYS_AUTH_PASSWD) |
135 | if (auth_userokay(pw->pw_name, authctxt->style, "auth-ssh", | 133 | int |
136 | (char *)password) == 0) | 134 | sys_auth_passwd(Authctxt *authctxt, const char *password) |
137 | return 0; | 135 | { |
138 | else | 136 | struct passwd *pw = authctxt->pw; |
139 | return ok; | 137 | char *encrypted_password; |
140 | # else | 138 | |
141 | { | ||
142 | /* Just use the supplied fake password if authctxt is invalid */ | 139 | /* Just use the supplied fake password if authctxt is invalid */ |
143 | char *pw_password = authctxt->valid ? shadow_pw(pw) : pw->pw_passwd; | 140 | char *pw_password = authctxt->valid ? shadow_pw(pw) : pw->pw_passwd; |
144 | 141 | ||
145 | /* Check for users with no password. */ | 142 | /* Check for users with no password. */ |
146 | if (strcmp(pw_password, "") == 0 && strcmp(password, "") == 0) | 143 | if (strcmp(pw_password, "") == 0 && strcmp(password, "") == 0) |
147 | return ok; | 144 | return (1); |
148 | else { | ||
149 | /* Encrypt the candidate password using the proper salt. */ | ||
150 | char *encrypted_password = xcrypt(password, | ||
151 | (pw_password[0] && pw_password[1]) ? pw_password : "xx"); | ||
152 | 145 | ||
153 | /* | 146 | /* Encrypt the candidate password using the proper salt. */ |
154 | * Authentication is accepted if the encrypted passwords | 147 | encrypted_password = xcrypt(password, |
155 | * are identical. | 148 | (pw_password[0] && pw_password[1]) ? pw_password : "xx"); |
156 | */ | ||
157 | return (strcmp(encrypted_password, pw_password) == 0) && ok; | ||
158 | } | ||
159 | 149 | ||
160 | } | 150 | /* |
161 | # endif | 151 | * Authentication is accepted if the encrypted passwords |
162 | #endif /* !HAVE_OSF_SIA */ | 152 | * are identical. |
153 | */ | ||
154 | return (strcmp(encrypted_password, pw_password) == 0); | ||
163 | } | 155 | } |
156 | #endif | ||
diff --git a/auth-rh-rsa.c b/auth-rh-rsa.c index 2eb7e6e2d..29eb538ec 100644 --- a/auth-rh-rsa.c +++ b/auth-rh-rsa.c | |||
@@ -13,7 +13,7 @@ | |||
13 | */ | 13 | */ |
14 | 14 | ||
15 | #include "includes.h" | 15 | #include "includes.h" |
16 | RCSID("$OpenBSD: auth-rh-rsa.c,v 1.36 2003/06/02 09:17:34 markus Exp $"); | 16 | RCSID("$OpenBSD: auth-rh-rsa.c,v 1.37 2003/11/04 08:54:09 djm Exp $"); |
17 | 17 | ||
18 | #include "packet.h" | 18 | #include "packet.h" |
19 | #include "uidswap.h" | 19 | #include "uidswap.h" |
@@ -52,14 +52,15 @@ auth_rhosts_rsa_key_allowed(struct passwd *pw, char *cuser, char *chost, | |||
52 | * its host key. Returns true if authentication succeeds. | 52 | * its host key. Returns true if authentication succeeds. |
53 | */ | 53 | */ |
54 | int | 54 | int |
55 | auth_rhosts_rsa(struct passwd *pw, char *cuser, Key *client_host_key) | 55 | auth_rhosts_rsa(Authctxt *authctxt, char *cuser, Key *client_host_key) |
56 | { | 56 | { |
57 | char *chost; | 57 | char *chost; |
58 | struct passwd *pw = authctxt->pw; | ||
58 | 59 | ||
59 | debug("Trying rhosts with RSA host authentication for client user %.100s", | 60 | debug("Trying rhosts with RSA host authentication for client user %.100s", |
60 | cuser); | 61 | cuser); |
61 | 62 | ||
62 | if (pw == NULL || client_host_key == NULL || | 63 | if (!authctxt->valid || client_host_key == NULL || |
63 | client_host_key->rsa == NULL) | 64 | client_host_key->rsa == NULL) |
64 | return 0; | 65 | return 0; |
65 | 66 | ||
diff --git a/auth-rhosts.c b/auth-rhosts.c index b42a64c90..585246e82 100644 --- a/auth-rhosts.c +++ b/auth-rhosts.c | |||
@@ -14,7 +14,7 @@ | |||
14 | */ | 14 | */ |
15 | 15 | ||
16 | #include "includes.h" | 16 | #include "includes.h" |
17 | RCSID("$OpenBSD: auth-rhosts.c,v 1.31 2003/06/02 09:17:34 markus Exp $"); | 17 | RCSID("$OpenBSD: auth-rhosts.c,v 1.32 2003/11/04 08:54:09 djm Exp $"); |
18 | 18 | ||
19 | #include "packet.h" | 19 | #include "packet.h" |
20 | #include "uidswap.h" | 20 | #include "uidswap.h" |
@@ -173,10 +173,6 @@ auth_rhosts2_raw(struct passwd *pw, const char *client_user, const char *hostnam | |||
173 | debug2("auth_rhosts2: clientuser %s hostname %s ipaddr %s", | 173 | debug2("auth_rhosts2: clientuser %s hostname %s ipaddr %s", |
174 | client_user, hostname, ipaddr); | 174 | client_user, hostname, ipaddr); |
175 | 175 | ||
176 | /* no user given */ | ||
177 | if (pw == NULL) | ||
178 | return 0; | ||
179 | |||
180 | /* Switch to the user's uid. */ | 176 | /* Switch to the user's uid. */ |
181 | temporarily_use_uid(pw); | 177 | temporarily_use_uid(pw); |
182 | /* | 178 | /* |
diff --git a/auth-rsa.c b/auth-rsa.c index 5631d238c..2f0746b30 100644 --- a/auth-rsa.c +++ b/auth-rsa.c | |||
@@ -14,7 +14,7 @@ | |||
14 | */ | 14 | */ |
15 | 15 | ||
16 | #include "includes.h" | 16 | #include "includes.h" |
17 | RCSID("$OpenBSD: auth-rsa.c,v 1.57 2003/04/08 20:21:28 itojun Exp $"); | 17 | RCSID("$OpenBSD: auth-rsa.c,v 1.58 2003/11/04 08:54:09 djm Exp $"); |
18 | 18 | ||
19 | #include <openssl/rsa.h> | 19 | #include <openssl/rsa.h> |
20 | #include <openssl/md5.h> | 20 | #include <openssl/md5.h> |
@@ -284,13 +284,14 @@ auth_rsa_key_allowed(struct passwd *pw, BIGNUM *client_n, Key **rkey) | |||
284 | * successful. This may exit if there is a serious protocol violation. | 284 | * successful. This may exit if there is a serious protocol violation. |
285 | */ | 285 | */ |
286 | int | 286 | int |
287 | auth_rsa(struct passwd *pw, BIGNUM *client_n) | 287 | auth_rsa(Authctxt *authctxt, BIGNUM *client_n) |
288 | { | 288 | { |
289 | Key *key; | 289 | Key *key; |
290 | char *fp; | 290 | char *fp; |
291 | struct passwd *pw = authctxt->pw; | ||
291 | 292 | ||
292 | /* no user given */ | 293 | /* no user given */ |
293 | if (pw == NULL) | 294 | if (!authctxt->valid) |
294 | return 0; | 295 | return 0; |
295 | 296 | ||
296 | if (!PRIVSEP(auth_rsa_key_allowed(pw, client_n, &key))) { | 297 | if (!PRIVSEP(auth_rsa_key_allowed(pw, client_n, &key))) { |
diff --git a/auth-shadow.c b/auth-shadow.c new file mode 100644 index 000000000..a85442d72 --- /dev/null +++ b/auth-shadow.c | |||
@@ -0,0 +1,135 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2004 Darren Tucker. All rights reserved. | ||
3 | * | ||
4 | * Redistribution and use in source and binary forms, with or without | ||
5 | * modification, are permitted provided that the following conditions | ||
6 | * are met: | ||
7 | * 1. Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * 2. Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * | ||
13 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | ||
14 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | ||
15 | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | ||
16 | * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | ||
17 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
18 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||
19 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||
20 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
21 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
22 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
23 | */ | ||
24 | |||
25 | #include "includes.h" | ||
26 | RCSID("$Id: auth-shadow.c,v 1.5 2004/02/21 23:22:05 dtucker Exp $"); | ||
27 | |||
28 | #if defined(USE_SHADOW) && defined(HAS_SHADOW_EXPIRE) | ||
29 | #include <shadow.h> | ||
30 | |||
31 | #include "auth.h" | ||
32 | #include "buffer.h" | ||
33 | #include "log.h" | ||
34 | |||
35 | #define DAY (24L * 60 * 60) /* 1 day in seconds */ | ||
36 | |||
37 | extern Buffer loginmsg; | ||
38 | |||
39 | /* | ||
40 | * For the account and password expiration functions, we assume the expiry | ||
41 | * occurs the day after the day specified. | ||
42 | */ | ||
43 | |||
44 | /* | ||
45 | * Check if specified account is expired. Returns 1 if account is expired, | ||
46 | * 0 otherwise. | ||
47 | */ | ||
48 | int | ||
49 | auth_shadow_acctexpired(struct spwd *spw) | ||
50 | { | ||
51 | time_t today; | ||
52 | int daysleft; | ||
53 | char buf[256]; | ||
54 | |||
55 | today = time(NULL) / DAY; | ||
56 | daysleft = spw->sp_expire - today; | ||
57 | debug3("%s: today %d sp_expire %d days left %d", __func__, (int)today, | ||
58 | (int)spw->sp_expire, daysleft); | ||
59 | |||
60 | if (spw->sp_expire == -1) { | ||
61 | debug3("account expiration disabled"); | ||
62 | } else if (daysleft < 0) { | ||
63 | logit("Account %.100s has expired", spw->sp_namp); | ||
64 | return 1; | ||
65 | } else if (daysleft <= spw->sp_warn) { | ||
66 | debug3("account will expire in %d days", daysleft); | ||
67 | snprintf(buf, sizeof(buf), | ||
68 | "Your account will expire in %d day%s.\n", daysleft, | ||
69 | daysleft == 1 ? "" : "s"); | ||
70 | buffer_append(&loginmsg, buf, strlen(buf)); | ||
71 | } | ||
72 | |||
73 | return 0; | ||
74 | } | ||
75 | |||
76 | /* | ||
77 | * Checks password expiry for platforms that use shadow passwd files. | ||
78 | * Returns: 1 = password expired, 0 = password not expired | ||
79 | */ | ||
80 | int | ||
81 | auth_shadow_pwexpired(Authctxt *ctxt) | ||
82 | { | ||
83 | struct spwd *spw = NULL; | ||
84 | const char *user = ctxt->pw->pw_name; | ||
85 | char buf[256]; | ||
86 | time_t today; | ||
87 | int daysleft, disabled = 0; | ||
88 | |||
89 | if ((spw = getspnam((char *)user)) == NULL) { | ||
90 | error("Could not get shadow information for %.100s", user); | ||
91 | return 0; | ||
92 | } | ||
93 | |||
94 | today = time(NULL) / DAY; | ||
95 | debug3("%s: today %d sp_lstchg %d sp_max %d", __func__, (int)today, | ||
96 | (int)spw->sp_lstchg, (int)spw->sp_max); | ||
97 | |||
98 | #if defined(__hpux) && !defined(HAVE_SECUREWARE) | ||
99 | if (iscomsec()) { | ||
100 | struct pr_passwd *pr; | ||
101 | |||
102 | pr = getprpwnam((char *)user); | ||
103 | |||
104 | /* Test for Trusted Mode expiry disabled */ | ||
105 | if (pr != NULL && pr->ufld.fd_min == 0 && | ||
106 | pr->ufld.fd_lifetime == 0 && pr->ufld.fd_expire == 0 && | ||
107 | pr->ufld.fd_pw_expire_warning == 0 && | ||
108 | pr->ufld.fd_schange != 0) | ||
109 | disabled = 1; | ||
110 | } | ||
111 | #endif | ||
112 | |||
113 | /* TODO: check sp_inact */ | ||
114 | daysleft = spw->sp_lstchg + spw->sp_max - today; | ||
115 | if (disabled) { | ||
116 | debug3("password expiration disabled"); | ||
117 | } else if (spw->sp_lstchg == 0) { | ||
118 | logit("User %.100s password has expired (root forced)", user); | ||
119 | return 1; | ||
120 | } else if (spw->sp_max == -1) { | ||
121 | debug3("password expiration disabled"); | ||
122 | } else if (daysleft < 0) { | ||
123 | logit("User %.100s password has expired (password aged)", user); | ||
124 | return 1; | ||
125 | } else if (daysleft <= spw->sp_warn) { | ||
126 | debug3("password will expire in %d days", daysleft); | ||
127 | snprintf(buf, sizeof(buf), | ||
128 | "Your password will expire in %d day%s.\n", daysleft, | ||
129 | daysleft == 1 ? "" : "s"); | ||
130 | buffer_append(&loginmsg, buf, strlen(buf)); | ||
131 | } | ||
132 | |||
133 | return 0; | ||
134 | } | ||
135 | #endif /* USE_SHADOW && HAS_SHADOW_EXPIRE */ | ||
diff --git a/auth-sia.c b/auth-sia.c index cae5f0912..cd2dcb840 100644 --- a/auth-sia.c +++ b/auth-sia.c | |||
@@ -31,6 +31,7 @@ | |||
31 | #include "log.h" | 31 | #include "log.h" |
32 | #include "servconf.h" | 32 | #include "servconf.h" |
33 | #include "canohost.h" | 33 | #include "canohost.h" |
34 | #include "uidswap.h" | ||
34 | 35 | ||
35 | #include <sia.h> | 36 | #include <sia.h> |
36 | #include <siad.h> | 37 | #include <siad.h> |
@@ -83,7 +84,7 @@ session_setup_sia(struct passwd *pw, char *tty) | |||
83 | 84 | ||
84 | host = get_canonical_hostname(options.use_dns); | 85 | host = get_canonical_hostname(options.use_dns); |
85 | 86 | ||
86 | if (sia_ses_init(&ent, saved_argc, saved_argv, host, pw->pw_name, | 87 | if (sia_ses_init(&ent, saved_argc, saved_argv, host, pw->pw_name, |
87 | tty, 0, NULL) != SIASUCCESS) | 88 | tty, 0, NULL) != SIASUCCESS) |
88 | fatal("sia_ses_init failed"); | 89 | fatal("sia_ses_init failed"); |
89 | 90 | ||
@@ -100,11 +101,11 @@ session_setup_sia(struct passwd *pw, char *tty) | |||
100 | if (sia_ses_launch(sia_collect_trm, ent) != SIASUCCESS) | 101 | if (sia_ses_launch(sia_collect_trm, ent) != SIASUCCESS) |
101 | fatal("Couldn't launch session for %s from %s", | 102 | fatal("Couldn't launch session for %s from %s", |
102 | pw->pw_name, host); | 103 | pw->pw_name, host); |
103 | 104 | ||
104 | sia_ses_release(&ent); | 105 | sia_ses_release(&ent); |
105 | 106 | ||
106 | if (setreuid(geteuid(), geteuid()) < 0) | 107 | setuid(0); |
107 | fatal("setreuid: %s", strerror(errno)); | 108 | permanently_set_uid(pw); |
108 | } | 109 | } |
109 | 110 | ||
110 | #endif /* HAVE_OSF_SIA */ | 111 | #endif /* HAVE_OSF_SIA */ |
@@ -23,14 +23,14 @@ | |||
23 | */ | 23 | */ |
24 | 24 | ||
25 | #include "includes.h" | 25 | #include "includes.h" |
26 | RCSID("$OpenBSD: auth.c,v 1.49 2003/08/26 09:58:43 markus Exp $"); | 26 | RCSID("$OpenBSD: auth.c,v 1.51 2003/11/21 11:57:02 djm Exp $"); |
27 | 27 | ||
28 | #ifdef HAVE_LOGIN_H | 28 | #ifdef HAVE_LOGIN_H |
29 | #include <login.h> | 29 | #include <login.h> |
30 | #endif | 30 | #endif |
31 | #if defined(HAVE_SHADOW_H) && !defined(DISABLE_SHADOW) | 31 | #ifdef USE_SHADOW |
32 | #include <shadow.h> | 32 | #include <shadow.h> |
33 | #endif /* defined(HAVE_SHADOW_H) && !defined(DISABLE_SHADOW) */ | 33 | #endif |
34 | 34 | ||
35 | #ifdef HAVE_LIBGEN_H | 35 | #ifdef HAVE_LIBGEN_H |
36 | #include <libgen.h> | 36 | #include <libgen.h> |
@@ -76,7 +76,7 @@ allowed_user(struct passwd * pw) | |||
76 | const char *hostname = NULL, *ipaddr = NULL, *passwd = NULL; | 76 | const char *hostname = NULL, *ipaddr = NULL, *passwd = NULL; |
77 | char *shell; | 77 | char *shell; |
78 | int i; | 78 | int i; |
79 | #if defined(HAVE_SHADOW_H) && !defined(DISABLE_SHADOW) | 79 | #ifdef USE_SHADOW |
80 | struct spwd *spw = NULL; | 80 | struct spwd *spw = NULL; |
81 | #endif | 81 | #endif |
82 | 82 | ||
@@ -84,53 +84,24 @@ allowed_user(struct passwd * pw) | |||
84 | if (!pw || !pw->pw_name) | 84 | if (!pw || !pw->pw_name) |
85 | return 0; | 85 | return 0; |
86 | 86 | ||
87 | #if defined(HAVE_SHADOW_H) && !defined(DISABLE_SHADOW) | 87 | #ifdef USE_SHADOW |
88 | if (!options.use_pam) | 88 | if (!options.use_pam) |
89 | spw = getspnam(pw->pw_name); | 89 | spw = getspnam(pw->pw_name); |
90 | #ifdef HAS_SHADOW_EXPIRE | 90 | #ifdef HAS_SHADOW_EXPIRE |
91 | #define DAY (24L * 60 * 60) /* 1 day in seconds */ | 91 | if (!options.use_pam && spw != NULL && auth_shadow_acctexpired(spw)) |
92 | if (!options.use_pam && spw != NULL) { | 92 | return 0; |
93 | time_t today; | ||
94 | |||
95 | today = time(NULL) / DAY; | ||
96 | debug3("allowed_user: today %d sp_expire %d sp_lstchg %d" | ||
97 | " sp_max %d", (int)today, (int)spw->sp_expire, | ||
98 | (int)spw->sp_lstchg, (int)spw->sp_max); | ||
99 | |||
100 | /* | ||
101 | * We assume account and password expiration occurs the | ||
102 | * day after the day specified. | ||
103 | */ | ||
104 | if (spw->sp_expire != -1 && today > spw->sp_expire) { | ||
105 | logit("Account %.100s has expired", pw->pw_name); | ||
106 | return 0; | ||
107 | } | ||
108 | |||
109 | if (spw->sp_lstchg == 0) { | ||
110 | logit("User %.100s password has expired (root forced)", | ||
111 | pw->pw_name); | ||
112 | return 0; | ||
113 | } | ||
114 | |||
115 | if (spw->sp_max != -1 && | ||
116 | today > spw->sp_lstchg + spw->sp_max) { | ||
117 | logit("User %.100s password has expired (password aged)", | ||
118 | pw->pw_name); | ||
119 | return 0; | ||
120 | } | ||
121 | } | ||
122 | #endif /* HAS_SHADOW_EXPIRE */ | 93 | #endif /* HAS_SHADOW_EXPIRE */ |
123 | #endif /* defined(HAVE_SHADOW_H) && !defined(DISABLE_SHADOW) */ | 94 | #endif /* USE_SHADOW */ |
124 | 95 | ||
125 | /* grab passwd field for locked account check */ | 96 | /* grab passwd field for locked account check */ |
126 | #if defined(HAVE_SHADOW_H) && !defined(DISABLE_SHADOW) | 97 | #ifdef USE_SHADOW |
127 | if (spw != NULL) | 98 | if (spw != NULL) |
128 | passwd = spw->sp_pwdp; | 99 | passwd = spw->sp_pwdp; |
129 | #else | 100 | #else |
130 | passwd = pw->pw_passwd; | 101 | passwd = pw->pw_passwd; |
131 | #endif | 102 | #endif |
132 | 103 | ||
133 | /* check for locked account */ | 104 | /* check for locked account */ |
134 | if (!options.use_pam && passwd && *passwd) { | 105 | if (!options.use_pam && passwd && *passwd) { |
135 | int locked = 0; | 106 | int locked = 0; |
136 | 107 | ||
@@ -242,7 +213,7 @@ allowed_user(struct passwd * pw) | |||
242 | if ((pw->pw_uid != 0) && (geteuid() == 0)) { | 213 | if ((pw->pw_uid != 0) && (geteuid() == 0)) { |
243 | char *msg; | 214 | char *msg; |
244 | 215 | ||
245 | if (loginrestrictions(pw->pw_name, S_RLOGIN, NULL, &msg) != 0) { | 216 | if (loginrestrictions(pw->pw_name, S_RLOGIN, NULL, &msg) != 0) { |
246 | int loginrestrict_errno = errno; | 217 | int loginrestrict_errno = errno; |
247 | 218 | ||
248 | if (msg && *msg) { | 219 | if (msg && *msg) { |
@@ -252,7 +223,7 @@ allowed_user(struct passwd * pw) | |||
252 | pw->pw_name, msg); | 223 | pw->pw_name, msg); |
253 | } | 224 | } |
254 | /* Don't fail if /etc/nologin set */ | 225 | /* Don't fail if /etc/nologin set */ |
255 | if (!(loginrestrict_errno == EPERM && | 226 | if (!(loginrestrict_errno == EPERM && |
256 | stat(_PATH_NOLOGIN, &st) == 0)) | 227 | stat(_PATH_NOLOGIN, &st) == 0)) |
257 | return 0; | 228 | return 0; |
258 | } | 229 | } |
@@ -263,14 +234,6 @@ allowed_user(struct passwd * pw) | |||
263 | return 1; | 234 | return 1; |
264 | } | 235 | } |
265 | 236 | ||
266 | Authctxt * | ||
267 | authctxt_new(void) | ||
268 | { | ||
269 | Authctxt *authctxt = xmalloc(sizeof(*authctxt)); | ||
270 | memset(authctxt, 0, sizeof(*authctxt)); | ||
271 | return authctxt; | ||
272 | } | ||
273 | |||
274 | void | 237 | void |
275 | auth_log(Authctxt *authctxt, int authenticated, char *method, char *info) | 238 | auth_log(Authctxt *authctxt, int authenticated, char *method, char *info) |
276 | { | 239 | { |
@@ -598,7 +561,7 @@ fakepw(void) | |||
598 | memset(&fake, 0, sizeof(fake)); | 561 | memset(&fake, 0, sizeof(fake)); |
599 | fake.pw_name = "NOUSER"; | 562 | fake.pw_name = "NOUSER"; |
600 | fake.pw_passwd = | 563 | fake.pw_passwd = |
601 | "$2a$06$r3.juUaHZDlIbQaO2dS9FuYxL1W9M81R1Tc92PoSNmzvpEqLkLGrK"; | 564 | "$2a$06$r3.juUaHZDlIbQaO2dS9FuYxL1W9M81R1Tc92PoSNmzvpEqLkLGrK"; |
602 | fake.pw_gecos = "NOUSER"; | 565 | fake.pw_gecos = "NOUSER"; |
603 | fake.pw_uid = -1; | 566 | fake.pw_uid = -1; |
604 | fake.pw_gid = -1; | 567 | fake.pw_gid = -1; |
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: auth.h,v 1.46 2003/08/28 12:54:34 markus Exp $ */ | 1 | /* $OpenBSD: auth.h,v 1.49 2004/01/30 09:48:57 markus Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 2000 Markus Friedl. All rights reserved. | 4 | * Copyright (c) 2000 Markus Friedl. All rights reserved. |
@@ -52,6 +52,7 @@ struct Authctxt { | |||
52 | int valid; /* user exists and is allowed to login */ | 52 | int valid; /* user exists and is allowed to login */ |
53 | int attempt; | 53 | int attempt; |
54 | int failures; | 54 | int failures; |
55 | int force_pwchange; | ||
55 | char *user; /* username sent by the client */ | 56 | char *user; /* username sent by the client */ |
56 | char *service; | 57 | char *service; |
57 | struct passwd *pw; /* set if 'valid' */ | 58 | struct passwd *pw; /* set if 'valid' */ |
@@ -102,9 +103,9 @@ int auth_rhosts(struct passwd *, const char *); | |||
102 | int | 103 | int |
103 | auth_rhosts2(struct passwd *, const char *, const char *, const char *); | 104 | auth_rhosts2(struct passwd *, const char *, const char *, const char *); |
104 | 105 | ||
105 | int auth_rhosts_rsa(struct passwd *, char *, Key *); | 106 | int auth_rhosts_rsa(Authctxt *, char *, Key *); |
106 | int auth_password(Authctxt *, const char *); | 107 | int auth_password(Authctxt *, const char *); |
107 | int auth_rsa(struct passwd *, BIGNUM *); | 108 | int auth_rsa(Authctxt *, BIGNUM *); |
108 | int auth_rsa_challenge_dialog(Key *); | 109 | int auth_rsa_challenge_dialog(Key *); |
109 | BIGNUM *auth_rsa_generate_challenge(Key *); | 110 | BIGNUM *auth_rsa_generate_challenge(Key *); |
110 | int auth_rsa_verify_response(Key *, BIGNUM *, u_char[]); | 111 | int auth_rsa_verify_response(Key *, BIGNUM *, u_char[]); |
@@ -118,15 +119,21 @@ int user_key_allowed(struct passwd *, Key *); | |||
118 | int auth_krb5(Authctxt *authctxt, krb5_data *auth, char **client, krb5_data *); | 119 | int auth_krb5(Authctxt *authctxt, krb5_data *auth, char **client, krb5_data *); |
119 | int auth_krb5_tgt(Authctxt *authctxt, krb5_data *tgt); | 120 | int auth_krb5_tgt(Authctxt *authctxt, krb5_data *tgt); |
120 | int auth_krb5_password(Authctxt *authctxt, const char *password); | 121 | int auth_krb5_password(Authctxt *authctxt, const char *password); |
121 | void krb5_cleanup_proc(void *authctxt); | 122 | void krb5_cleanup_proc(Authctxt *authctxt); |
122 | #endif /* KRB5 */ | 123 | #endif /* KRB5 */ |
123 | 124 | ||
125 | #if defined(USE_SHADOW) && defined(HAS_SHADOW_EXPIRE) | ||
126 | #include <shadow.h> | ||
127 | int auth_shadow_acctexpired(struct spwd *); | ||
128 | int auth_shadow_pwexpired(Authctxt *); | ||
129 | #endif | ||
130 | |||
124 | #include "auth-pam.h" | 131 | #include "auth-pam.h" |
132 | void disable_forwarding(void); | ||
125 | 133 | ||
126 | Authctxt *do_authentication(void); | 134 | void do_authentication(Authctxt *); |
127 | Authctxt *do_authentication2(void); | 135 | void do_authentication2(Authctxt *); |
128 | 136 | ||
129 | Authctxt *authctxt_new(void); | ||
130 | void auth_log(Authctxt *, int, char *, char *); | 137 | void auth_log(Authctxt *, int, char *, char *); |
131 | void userauth_finish(Authctxt *, int, char *); | 138 | void userauth_finish(Authctxt *, int, char *); |
132 | int auth_root_allowed(char *); | 139 | int auth_root_allowed(char *); |
@@ -149,8 +156,6 @@ char *get_challenge(Authctxt *); | |||
149 | int verify_response(Authctxt *, const char *); | 156 | int verify_response(Authctxt *, const char *); |
150 | void abandon_challenge_response(Authctxt *); | 157 | void abandon_challenge_response(Authctxt *); |
151 | 158 | ||
152 | struct passwd * auth_get_user(void); | ||
153 | |||
154 | char *expand_filename(const char *, struct passwd *); | 159 | char *expand_filename(const char *, struct passwd *); |
155 | char *authorized_keys_file(struct passwd *); | 160 | char *authorized_keys_file(struct passwd *); |
156 | char *authorized_keys_file2(struct passwd *); | 161 | char *authorized_keys_file2(struct passwd *); |
@@ -10,7 +10,7 @@ | |||
10 | */ | 10 | */ |
11 | 11 | ||
12 | #include "includes.h" | 12 | #include "includes.h" |
13 | RCSID("$OpenBSD: auth1.c,v 1.52 2003/08/28 12:54:34 markus Exp $"); | 13 | RCSID("$OpenBSD: auth1.c,v 1.55 2003/11/08 16:02:40 jakob Exp $"); |
14 | 14 | ||
15 | #include "xmalloc.h" | 15 | #include "xmalloc.h" |
16 | #include "rsa.h" | 16 | #include "rsa.h" |
@@ -139,7 +139,7 @@ do_authloop(Authctxt *authctxt) | |||
139 | BN_num_bits(client_host_key->rsa->n), bits); | 139 | BN_num_bits(client_host_key->rsa->n), bits); |
140 | packet_check_eom(); | 140 | packet_check_eom(); |
141 | 141 | ||
142 | authenticated = auth_rhosts_rsa(pw, client_user, | 142 | authenticated = auth_rhosts_rsa(authctxt, client_user, |
143 | client_host_key); | 143 | client_host_key); |
144 | key_free(client_host_key); | 144 | key_free(client_host_key); |
145 | 145 | ||
@@ -156,7 +156,7 @@ do_authloop(Authctxt *authctxt) | |||
156 | fatal("do_authloop: BN_new failed"); | 156 | fatal("do_authloop: BN_new failed"); |
157 | packet_get_bignum(n); | 157 | packet_get_bignum(n); |
158 | packet_check_eom(); | 158 | packet_check_eom(); |
159 | authenticated = auth_rsa(pw, n); | 159 | authenticated = auth_rsa(authctxt, n); |
160 | BN_clear_free(n); | 160 | BN_clear_free(n); |
161 | break; | 161 | break; |
162 | 162 | ||
@@ -235,7 +235,7 @@ do_authloop(Authctxt *authctxt) | |||
235 | if (authenticated && | 235 | if (authenticated && |
236 | !check_nt_auth(type == SSH_CMSG_AUTH_PASSWORD, pw)) { | 236 | !check_nt_auth(type == SSH_CMSG_AUTH_PASSWORD, pw)) { |
237 | packet_disconnect("Authentication rejected for uid %d.", | 237 | packet_disconnect("Authentication rejected for uid %d.", |
238 | pw == NULL ? -1 : pw->pw_uid); | 238 | pw == NULL ? -1 : pw->pw_uid); |
239 | authenticated = 0; | 239 | authenticated = 0; |
240 | } | 240 | } |
241 | #else | 241 | #else |
@@ -246,7 +246,7 @@ do_authloop(Authctxt *authctxt) | |||
246 | #endif | 246 | #endif |
247 | 247 | ||
248 | #ifdef USE_PAM | 248 | #ifdef USE_PAM |
249 | if (options.use_pam && authenticated && | 249 | if (options.use_pam && authenticated && |
250 | !PRIVSEP(do_pam_account())) | 250 | !PRIVSEP(do_pam_account())) |
251 | authenticated = 0; | 251 | authenticated = 0; |
252 | #endif | 252 | #endif |
@@ -275,10 +275,9 @@ do_authloop(Authctxt *authctxt) | |||
275 | * Performs authentication of an incoming connection. Session key has already | 275 | * Performs authentication of an incoming connection. Session key has already |
276 | * been exchanged and encryption is enabled. | 276 | * been exchanged and encryption is enabled. |
277 | */ | 277 | */ |
278 | Authctxt * | 278 | void |
279 | do_authentication(void) | 279 | do_authentication(Authctxt *authctxt) |
280 | { | 280 | { |
281 | Authctxt *authctxt; | ||
282 | u_int ulen; | 281 | u_int ulen; |
283 | char *user, *style = NULL; | 282 | char *user, *style = NULL; |
284 | 283 | ||
@@ -292,7 +291,6 @@ do_authentication(void) | |||
292 | if ((style = strchr(user, ':')) != NULL) | 291 | if ((style = strchr(user, ':')) != NULL) |
293 | *style++ = '\0'; | 292 | *style++ = '\0'; |
294 | 293 | ||
295 | authctxt = authctxt_new(); | ||
296 | authctxt->user = user; | 294 | authctxt->user = user; |
297 | authctxt->style = style; | 295 | authctxt->style = style; |
298 | 296 | ||
@@ -332,6 +330,4 @@ do_authentication(void) | |||
332 | packet_start(SSH_SMSG_SUCCESS); | 330 | packet_start(SSH_SMSG_SUCCESS); |
333 | packet_send(); | 331 | packet_send(); |
334 | packet_write_wait(); | 332 | packet_write_wait(); |
335 | |||
336 | return (authctxt); | ||
337 | } | 333 | } |
diff --git a/auth2-gss.c b/auth2-gss.c index 75b94b009..9249988d3 100644 --- a/auth2-gss.c +++ b/auth2-gss.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: auth2-gss.c,v 1.3 2003/09/01 20:44:54 markus Exp $ */ | 1 | /* $OpenBSD: auth2-gss.c,v 1.7 2003/11/21 11:57:03 djm Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 2001-2003 Simon Wilkinson. All rights reserved. | 4 | * Copyright (c) 2001-2003 Simon Wilkinson. All rights reserved. |
@@ -43,6 +43,7 @@ | |||
43 | extern ServerOptions options; | 43 | extern ServerOptions options; |
44 | 44 | ||
45 | static void input_gssapi_token(int type, u_int32_t plen, void *ctxt); | 45 | static void input_gssapi_token(int type, u_int32_t plen, void *ctxt); |
46 | static void input_gssapi_mic(int type, u_int32_t plen, void *ctxt); | ||
46 | static void input_gssapi_exchange_complete(int type, u_int32_t plen, void *ctxt); | 47 | static void input_gssapi_exchange_complete(int type, u_int32_t plen, void *ctxt); |
47 | static void input_gssapi_errtok(int, u_int32_t, void *); | 48 | static void input_gssapi_errtok(int, u_int32_t, void *); |
48 | 49 | ||
@@ -78,17 +79,19 @@ userauth_gssapi(Authctxt *authctxt) | |||
78 | if (doid) | 79 | if (doid) |
79 | xfree(doid); | 80 | xfree(doid); |
80 | 81 | ||
82 | present = 0; | ||
81 | doid = packet_get_string(&len); | 83 | doid = packet_get_string(&len); |
82 | 84 | ||
83 | if (doid[0] != SSH_GSS_OIDTYPE || doid[1] != len-2) { | 85 | if (len > 2 && |
84 | logit("Mechanism OID received using the old encoding form"); | 86 | doid[0] == SSH_GSS_OIDTYPE && |
85 | oid.elements = doid; | 87 | doid[1] == len - 2) { |
86 | oid.length = len; | ||
87 | } else { | ||
88 | oid.elements = doid + 2; | 88 | oid.elements = doid + 2; |
89 | oid.length = len - 2; | 89 | oid.length = len - 2; |
90 | gss_test_oid_set_member(&ms, &oid, supported, | ||
91 | &present); | ||
92 | } else { | ||
93 | logit("Badly formed OID received"); | ||
90 | } | 94 | } |
91 | gss_test_oid_set_member(&ms, &oid, supported, &present); | ||
92 | } while (mechs > 0 && !present); | 95 | } while (mechs > 0 && !present); |
93 | 96 | ||
94 | gss_release_oid_set(&ms, &supported); | 97 | gss_release_oid_set(&ms, &supported); |
@@ -107,7 +110,7 @@ userauth_gssapi(Authctxt *authctxt) | |||
107 | 110 | ||
108 | packet_start(SSH2_MSG_USERAUTH_GSSAPI_RESPONSE); | 111 | packet_start(SSH2_MSG_USERAUTH_GSSAPI_RESPONSE); |
109 | 112 | ||
110 | /* Return OID in same format as we received it*/ | 113 | /* Return the OID that we received */ |
111 | packet_put_string(doid, len); | 114 | packet_put_string(doid, len); |
112 | 115 | ||
113 | packet_send(); | 116 | packet_send(); |
@@ -127,7 +130,7 @@ input_gssapi_token(int type, u_int32_t plen, void *ctxt) | |||
127 | Gssctxt *gssctxt; | 130 | Gssctxt *gssctxt; |
128 | gss_buffer_desc send_tok = GSS_C_EMPTY_BUFFER; | 131 | gss_buffer_desc send_tok = GSS_C_EMPTY_BUFFER; |
129 | gss_buffer_desc recv_tok; | 132 | gss_buffer_desc recv_tok; |
130 | OM_uint32 maj_status, min_status; | 133 | OM_uint32 maj_status, min_status, flags; |
131 | u_int len; | 134 | u_int len; |
132 | 135 | ||
133 | if (authctxt == NULL || (authctxt->methoddata == NULL && !use_privsep)) | 136 | if (authctxt == NULL || (authctxt->methoddata == NULL && !use_privsep)) |
@@ -140,7 +143,7 @@ input_gssapi_token(int type, u_int32_t plen, void *ctxt) | |||
140 | packet_check_eom(); | 143 | packet_check_eom(); |
141 | 144 | ||
142 | maj_status = PRIVSEP(ssh_gssapi_accept_ctx(gssctxt, &recv_tok, | 145 | maj_status = PRIVSEP(ssh_gssapi_accept_ctx(gssctxt, &recv_tok, |
143 | &send_tok, NULL)); | 146 | &send_tok, &flags)); |
144 | 147 | ||
145 | xfree(recv_tok.value); | 148 | xfree(recv_tok.value); |
146 | 149 | ||
@@ -152,7 +155,7 @@ input_gssapi_token(int type, u_int32_t plen, void *ctxt) | |||
152 | } | 155 | } |
153 | authctxt->postponed = 0; | 156 | authctxt->postponed = 0; |
154 | dispatch_set(SSH2_MSG_USERAUTH_GSSAPI_TOKEN, NULL); | 157 | dispatch_set(SSH2_MSG_USERAUTH_GSSAPI_TOKEN, NULL); |
155 | userauth_finish(authctxt, 0, "gssapi"); | 158 | userauth_finish(authctxt, 0, "gssapi-with-mic"); |
156 | } else { | 159 | } else { |
157 | if (send_tok.length != 0) { | 160 | if (send_tok.length != 0) { |
158 | packet_start(SSH2_MSG_USERAUTH_GSSAPI_TOKEN); | 161 | packet_start(SSH2_MSG_USERAUTH_GSSAPI_TOKEN); |
@@ -161,8 +164,13 @@ input_gssapi_token(int type, u_int32_t plen, void *ctxt) | |||
161 | } | 164 | } |
162 | if (maj_status == GSS_S_COMPLETE) { | 165 | if (maj_status == GSS_S_COMPLETE) { |
163 | dispatch_set(SSH2_MSG_USERAUTH_GSSAPI_TOKEN, NULL); | 166 | dispatch_set(SSH2_MSG_USERAUTH_GSSAPI_TOKEN, NULL); |
164 | dispatch_set(SSH2_MSG_USERAUTH_GSSAPI_EXCHANGE_COMPLETE, | 167 | if (flags & GSS_C_INTEG_FLAG) |
165 | &input_gssapi_exchange_complete); | 168 | dispatch_set(SSH2_MSG_USERAUTH_GSSAPI_MIC, |
169 | &input_gssapi_mic); | ||
170 | else | ||
171 | dispatch_set( | ||
172 | SSH2_MSG_USERAUTH_GSSAPI_EXCHANGE_COMPLETE, | ||
173 | &input_gssapi_exchange_complete); | ||
166 | } | 174 | } |
167 | } | 175 | } |
168 | 176 | ||
@@ -222,9 +230,8 @@ input_gssapi_exchange_complete(int type, u_int32_t plen, void *ctxt) | |||
222 | gssctxt = authctxt->methoddata; | 230 | gssctxt = authctxt->methoddata; |
223 | 231 | ||
224 | /* | 232 | /* |
225 | * We don't need to check the status, because the stored credentials | 233 | * We don't need to check the status, because we're only enabled in |
226 | * which userok uses are only populated once the context init step | 234 | * the dispatcher once the exchange is complete |
227 | * has returned complete. | ||
228 | */ | 235 | */ |
229 | 236 | ||
230 | packet_check_eom(); | 237 | packet_check_eom(); |
@@ -234,12 +241,53 @@ input_gssapi_exchange_complete(int type, u_int32_t plen, void *ctxt) | |||
234 | authctxt->postponed = 0; | 241 | authctxt->postponed = 0; |
235 | dispatch_set(SSH2_MSG_USERAUTH_GSSAPI_TOKEN, NULL); | 242 | dispatch_set(SSH2_MSG_USERAUTH_GSSAPI_TOKEN, NULL); |
236 | dispatch_set(SSH2_MSG_USERAUTH_GSSAPI_ERRTOK, NULL); | 243 | dispatch_set(SSH2_MSG_USERAUTH_GSSAPI_ERRTOK, NULL); |
244 | dispatch_set(SSH2_MSG_USERAUTH_GSSAPI_MIC, NULL); | ||
245 | dispatch_set(SSH2_MSG_USERAUTH_GSSAPI_EXCHANGE_COMPLETE, NULL); | ||
246 | userauth_finish(authctxt, authenticated, "gssapi-with-mic"); | ||
247 | } | ||
248 | |||
249 | static void | ||
250 | input_gssapi_mic(int type, u_int32_t plen, void *ctxt) | ||
251 | { | ||
252 | Authctxt *authctxt = ctxt; | ||
253 | Gssctxt *gssctxt; | ||
254 | int authenticated = 0; | ||
255 | Buffer b; | ||
256 | gss_buffer_desc mic, gssbuf; | ||
257 | u_int len; | ||
258 | |||
259 | if (authctxt == NULL || (authctxt->methoddata == NULL && !use_privsep)) | ||
260 | fatal("No authentication or GSSAPI context"); | ||
261 | |||
262 | gssctxt = authctxt->methoddata; | ||
263 | |||
264 | mic.value = packet_get_string(&len); | ||
265 | mic.length = len; | ||
266 | |||
267 | ssh_gssapi_buildmic(&b, authctxt->user, authctxt->service, | ||
268 | "gssapi-with-mic"); | ||
269 | |||
270 | gssbuf.value = buffer_ptr(&b); | ||
271 | gssbuf.length = buffer_len(&b); | ||
272 | |||
273 | if (!GSS_ERROR(PRIVSEP(ssh_gssapi_checkmic(gssctxt, &gssbuf, &mic)))) | ||
274 | authenticated = PRIVSEP(ssh_gssapi_userok(authctxt->user)); | ||
275 | else | ||
276 | logit("GSSAPI MIC check failed"); | ||
277 | |||
278 | buffer_free(&b); | ||
279 | xfree(mic.value); | ||
280 | |||
281 | authctxt->postponed = 0; | ||
282 | dispatch_set(SSH2_MSG_USERAUTH_GSSAPI_TOKEN, NULL); | ||
283 | dispatch_set(SSH2_MSG_USERAUTH_GSSAPI_ERRTOK, NULL); | ||
284 | dispatch_set(SSH2_MSG_USERAUTH_GSSAPI_MIC, NULL); | ||
237 | dispatch_set(SSH2_MSG_USERAUTH_GSSAPI_EXCHANGE_COMPLETE, NULL); | 285 | dispatch_set(SSH2_MSG_USERAUTH_GSSAPI_EXCHANGE_COMPLETE, NULL); |
238 | userauth_finish(authctxt, authenticated, "gssapi"); | 286 | userauth_finish(authctxt, authenticated, "gssapi-with-mic"); |
239 | } | 287 | } |
240 | 288 | ||
241 | Authmethod method_gssapi = { | 289 | Authmethod method_gssapi = { |
242 | "gssapi", | 290 | "gssapi-with-mic", |
243 | userauth_gssapi, | 291 | userauth_gssapi, |
244 | &options.gss_authentication | 292 | &options.gss_authentication |
245 | }; | 293 | }; |
diff --git a/auth2-hostbased.c b/auth2-hostbased.c index 505d3eff4..1111ed67a 100644 --- a/auth2-hostbased.c +++ b/auth2-hostbased.c | |||
@@ -23,7 +23,7 @@ | |||
23 | */ | 23 | */ |
24 | 24 | ||
25 | #include "includes.h" | 25 | #include "includes.h" |
26 | RCSID("$OpenBSD: auth2-hostbased.c,v 1.5 2003/06/24 08:23:46 markus Exp $"); | 26 | RCSID("$OpenBSD: auth2-hostbased.c,v 1.6 2004/01/19 21:25:15 markus Exp $"); |
27 | 27 | ||
28 | #include "ssh2.h" | 28 | #include "ssh2.h" |
29 | #include "xmalloc.h" | 29 | #include "xmalloc.h" |
@@ -114,7 +114,7 @@ userauth_hostbased(Authctxt *authctxt) | |||
114 | buffer_len(&b))) == 1) | 114 | buffer_len(&b))) == 1) |
115 | authenticated = 1; | 115 | authenticated = 1; |
116 | 116 | ||
117 | buffer_clear(&b); | 117 | buffer_free(&b); |
118 | done: | 118 | done: |
119 | debug2("userauth_hostbased: authenticated %d", authenticated); | 119 | debug2("userauth_hostbased: authenticated %d", authenticated); |
120 | if (key != NULL) | 120 | if (key != NULL) |
diff --git a/auth2-passwd.c b/auth2-passwd.c index 67fb4c921..a4f482d2e 100644 --- a/auth2-passwd.c +++ b/auth2-passwd.c | |||
@@ -23,7 +23,7 @@ | |||
23 | */ | 23 | */ |
24 | 24 | ||
25 | #include "includes.h" | 25 | #include "includes.h" |
26 | RCSID("$OpenBSD: auth2-passwd.c,v 1.4 2003/08/26 09:58:43 markus Exp $"); | 26 | RCSID("$OpenBSD: auth2-passwd.c,v 1.5 2003/12/31 00:24:50 dtucker Exp $"); |
27 | 27 | ||
28 | #include "xmalloc.h" | 28 | #include "xmalloc.h" |
29 | #include "packet.h" | 29 | #include "packet.h" |
@@ -38,16 +38,24 @@ extern ServerOptions options; | |||
38 | static int | 38 | static int |
39 | userauth_passwd(Authctxt *authctxt) | 39 | userauth_passwd(Authctxt *authctxt) |
40 | { | 40 | { |
41 | char *password; | 41 | char *password, *newpass; |
42 | int authenticated = 0; | 42 | int authenticated = 0; |
43 | int change; | 43 | int change; |
44 | u_int len; | 44 | u_int len, newlen; |
45 | |||
45 | change = packet_get_char(); | 46 | change = packet_get_char(); |
46 | if (change) | ||
47 | logit("password change not supported"); | ||
48 | password = packet_get_string(&len); | 47 | password = packet_get_string(&len); |
48 | if (change) { | ||
49 | /* discard new password from packet */ | ||
50 | newpass = packet_get_string(&newlen); | ||
51 | memset(newpass, 0, newlen); | ||
52 | xfree(newpass); | ||
53 | } | ||
49 | packet_check_eom(); | 54 | packet_check_eom(); |
50 | if (PRIVSEP(auth_password(authctxt, password)) == 1 | 55 | |
56 | if (change) | ||
57 | logit("password change not supported"); | ||
58 | else if (PRIVSEP(auth_password(authctxt, password)) == 1 | ||
51 | #ifdef HAVE_CYGWIN | 59 | #ifdef HAVE_CYGWIN |
52 | && check_nt_auth(1, authctxt->pw) | 60 | && check_nt_auth(1, authctxt->pw) |
53 | #endif | 61 | #endif |
diff --git a/auth2-pubkey.c b/auth2-pubkey.c index d51e939f1..3063eecc3 100644 --- a/auth2-pubkey.c +++ b/auth2-pubkey.c | |||
@@ -23,7 +23,7 @@ | |||
23 | */ | 23 | */ |
24 | 24 | ||
25 | #include "includes.h" | 25 | #include "includes.h" |
26 | RCSID("$OpenBSD: auth2-pubkey.c,v 1.4 2003/06/24 08:23:46 markus Exp $"); | 26 | RCSID("$OpenBSD: auth2-pubkey.c,v 1.6 2004/01/19 21:25:15 markus Exp $"); |
27 | 27 | ||
28 | #include "ssh2.h" | 28 | #include "ssh2.h" |
29 | #include "xmalloc.h" | 29 | #include "xmalloc.h" |
@@ -123,9 +123,9 @@ userauth_pubkey(Authctxt *authctxt) | |||
123 | authenticated = 0; | 123 | authenticated = 0; |
124 | if (PRIVSEP(user_key_allowed(authctxt->pw, key)) && | 124 | if (PRIVSEP(user_key_allowed(authctxt->pw, key)) && |
125 | PRIVSEP(key_verify(key, sig, slen, buffer_ptr(&b), | 125 | PRIVSEP(key_verify(key, sig, slen, buffer_ptr(&b), |
126 | buffer_len(&b))) == 1) | 126 | buffer_len(&b))) == 1) |
127 | authenticated = 1; | 127 | authenticated = 1; |
128 | buffer_clear(&b); | 128 | buffer_free(&b); |
129 | xfree(sig); | 129 | xfree(sig); |
130 | } else { | 130 | } else { |
131 | debug("test whether pkalg/pkblob are acceptable"); | 131 | debug("test whether pkalg/pkblob are acceptable"); |
@@ -175,9 +175,6 @@ user_key_allowed2(struct passwd *pw, Key *key, char *file) | |||
175 | Key *found; | 175 | Key *found; |
176 | char *fp; | 176 | char *fp; |
177 | 177 | ||
178 | if (pw == NULL) | ||
179 | return 0; | ||
180 | |||
181 | /* Temporarily use the user's uid. */ | 178 | /* Temporarily use the user's uid. */ |
182 | temporarily_use_uid(pw); | 179 | temporarily_use_uid(pw); |
183 | 180 | ||
@@ -23,7 +23,7 @@ | |||
23 | */ | 23 | */ |
24 | 24 | ||
25 | #include "includes.h" | 25 | #include "includes.h" |
26 | RCSID("$OpenBSD: auth2.c,v 1.102 2003/08/26 09:58:43 markus Exp $"); | 26 | RCSID("$OpenBSD: auth2.c,v 1.104 2003/11/04 08:54:09 djm Exp $"); |
27 | 27 | ||
28 | #include "ssh2.h" | 28 | #include "ssh2.h" |
29 | #include "xmalloc.h" | 29 | #include "xmalloc.h" |
@@ -45,8 +45,6 @@ extern ServerOptions options; | |||
45 | extern u_char *session_id2; | 45 | extern u_char *session_id2; |
46 | extern u_int session_id2_len; | 46 | extern u_int session_id2_len; |
47 | 47 | ||
48 | Authctxt *x_authctxt = NULL; | ||
49 | |||
50 | /* methods */ | 48 | /* methods */ |
51 | 49 | ||
52 | extern Authmethod method_none; | 50 | extern Authmethod method_none; |
@@ -79,19 +77,14 @@ static void input_userauth_request(int, u_int32_t, void *); | |||
79 | static Authmethod *authmethod_lookup(const char *); | 77 | static Authmethod *authmethod_lookup(const char *); |
80 | static char *authmethods_get(void); | 78 | static char *authmethods_get(void); |
81 | int user_key_allowed(struct passwd *, Key *); | 79 | int user_key_allowed(struct passwd *, Key *); |
82 | int hostbased_key_allowed(struct passwd *, const char *, char *, Key *); | ||
83 | 80 | ||
84 | /* | 81 | /* |
85 | * loop until authctxt->success == TRUE | 82 | * loop until authctxt->success == TRUE |
86 | */ | 83 | */ |
87 | 84 | ||
88 | Authctxt * | 85 | void |
89 | do_authentication2(void) | 86 | do_authentication2(Authctxt *authctxt) |
90 | { | 87 | { |
91 | Authctxt *authctxt = authctxt_new(); | ||
92 | |||
93 | x_authctxt = authctxt; /*XXX*/ | ||
94 | |||
95 | /* challenge-response is implemented via keyboard interactive */ | 88 | /* challenge-response is implemented via keyboard interactive */ |
96 | if (options.challenge_response_authentication) | 89 | if (options.challenge_response_authentication) |
97 | options.kbd_interactive_authentication = 1; | 90 | options.kbd_interactive_authentication = 1; |
@@ -99,8 +92,6 @@ do_authentication2(void) | |||
99 | dispatch_init(&dispatch_protocol_error); | 92 | dispatch_init(&dispatch_protocol_error); |
100 | dispatch_set(SSH2_MSG_SERVICE_REQUEST, &input_service_request); | 93 | dispatch_set(SSH2_MSG_SERVICE_REQUEST, &input_service_request); |
101 | dispatch_run(DISPATCH_BLOCK, &authctxt->success, authctxt); | 94 | dispatch_run(DISPATCH_BLOCK, &authctxt->success, authctxt); |
102 | |||
103 | return (authctxt); | ||
104 | } | 95 | } |
105 | 96 | ||
106 | static void | 97 | static void |
@@ -264,14 +255,6 @@ userauth_finish(Authctxt *authctxt, int authenticated, char *method) | |||
264 | } | 255 | } |
265 | } | 256 | } |
266 | 257 | ||
267 | /* get current user */ | ||
268 | |||
269 | struct passwd* | ||
270 | auth_get_user(void) | ||
271 | { | ||
272 | return (x_authctxt != NULL && x_authctxt->valid) ? x_authctxt->pw : NULL; | ||
273 | } | ||
274 | |||
275 | #define DELIM "," | 258 | #define DELIM "," |
276 | 259 | ||
277 | static char * | 260 | static char * |
@@ -35,7 +35,7 @@ | |||
35 | */ | 35 | */ |
36 | 36 | ||
37 | #include "includes.h" | 37 | #include "includes.h" |
38 | RCSID("$OpenBSD: authfd.c,v 1.61 2003/06/28 16:23:06 deraadt Exp $"); | 38 | RCSID("$OpenBSD: authfd.c,v 1.63 2003/11/21 11:57:03 djm Exp $"); |
39 | 39 | ||
40 | #include <openssl/evp.h> | 40 | #include <openssl/evp.h> |
41 | 41 | ||
@@ -114,7 +114,8 @@ ssh_get_authentication_socket(void) | |||
114 | static int | 114 | static int |
115 | ssh_request_reply(AuthenticationConnection *auth, Buffer *request, Buffer *reply) | 115 | ssh_request_reply(AuthenticationConnection *auth, Buffer *request, Buffer *reply) |
116 | { | 116 | { |
117 | int l, len; | 117 | int l; |
118 | u_int len; | ||
118 | char buf[1024]; | 119 | char buf[1024]; |
119 | 120 | ||
120 | /* Get the length of the message, and format it in the buffer. */ | 121 | /* Get the length of the message, and format it in the buffer. */ |
@@ -147,7 +148,7 @@ ssh_request_reply(AuthenticationConnection *auth, Buffer *request, Buffer *reply | |||
147 | /* Extract the length, and check it for sanity. */ | 148 | /* Extract the length, and check it for sanity. */ |
148 | len = GET_32BIT(buf); | 149 | len = GET_32BIT(buf); |
149 | if (len > 256 * 1024) | 150 | if (len > 256 * 1024) |
150 | fatal("Authentication response too long: %d", len); | 151 | fatal("Authentication response too long: %u", len); |
151 | 152 | ||
152 | /* Read the rest of the response in to the buffer. */ | 153 | /* Read the rest of the response in to the buffer. */ |
153 | buffer_clear(reply); | 154 | buffer_clear(reply); |
@@ -292,7 +293,7 @@ ssh_get_num_identities(AuthenticationConnection *auth, int version) | |||
292 | 293 | ||
293 | /* Get the number of entries in the response and check it for sanity. */ | 294 | /* Get the number of entries in the response and check it for sanity. */ |
294 | auth->howmany = buffer_get_int(&auth->identities); | 295 | auth->howmany = buffer_get_int(&auth->identities); |
295 | if (auth->howmany > 1024) | 296 | if ((u_int)auth->howmany > 1024) |
296 | fatal("Too many identities in authentication reply: %d", | 297 | fatal("Too many identities in authentication reply: %d", |
297 | auth->howmany); | 298 | auth->howmany); |
298 | 299 | ||
@@ -589,7 +590,7 @@ ssh_remove_identity(AuthenticationConnection *auth, Key *key) | |||
589 | } | 590 | } |
590 | 591 | ||
591 | int | 592 | int |
592 | ssh_update_card(AuthenticationConnection *auth, int add, | 593 | ssh_update_card(AuthenticationConnection *auth, int add, |
593 | const char *reader_id, const char *pin, u_int life, u_int confirm) | 594 | const char *reader_id, const char *pin, u_int life, u_int confirm) |
594 | { | 595 | { |
595 | Buffer msg; | 596 | Buffer msg; |
@@ -606,7 +607,7 @@ ssh_update_card(AuthenticationConnection *auth, int add, | |||
606 | buffer_put_char(&msg, type); | 607 | buffer_put_char(&msg, type); |
607 | buffer_put_cstring(&msg, reader_id); | 608 | buffer_put_cstring(&msg, reader_id); |
608 | buffer_put_cstring(&msg, pin); | 609 | buffer_put_cstring(&msg, pin); |
609 | 610 | ||
610 | if (constrained) { | 611 | if (constrained) { |
611 | if (life != 0) { | 612 | if (life != 0) { |
612 | buffer_put_char(&msg, SSH_AGENT_CONSTRAIN_LIFETIME); | 613 | buffer_put_char(&msg, SSH_AGENT_CONSTRAIN_LIFETIME); |
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: authfd.h,v 1.33 2003/06/11 11:18:38 djm Exp $ */ | 1 | /* $OpenBSD: authfd.h,v 1.34 2003/11/21 11:57:03 djm Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> | 4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> |
@@ -83,7 +83,7 @@ int ssh_add_identity_constrained(AuthenticationConnection *, Key *, | |||
83 | int ssh_remove_identity(AuthenticationConnection *, Key *); | 83 | int ssh_remove_identity(AuthenticationConnection *, Key *); |
84 | int ssh_remove_all_identities(AuthenticationConnection *, int); | 84 | int ssh_remove_all_identities(AuthenticationConnection *, int); |
85 | int ssh_lock_agent(AuthenticationConnection *, int, const char *); | 85 | int ssh_lock_agent(AuthenticationConnection *, int, const char *); |
86 | int ssh_update_card(AuthenticationConnection *, int, const char *, | 86 | int ssh_update_card(AuthenticationConnection *, int, const char *, |
87 | const char *, u_int, u_int); | 87 | const char *, u_int, u_int); |
88 | 88 | ||
89 | int | 89 | int |
diff --git a/authfile.c b/authfile.c index 1f46093e3..83ddd635f 100644 --- a/authfile.c +++ b/authfile.c | |||
@@ -36,7 +36,7 @@ | |||
36 | */ | 36 | */ |
37 | 37 | ||
38 | #include "includes.h" | 38 | #include "includes.h" |
39 | RCSID("$OpenBSD: authfile.c,v 1.54 2003/05/24 09:30:39 djm Exp $"); | 39 | RCSID("$OpenBSD: authfile.c,v 1.55 2003/09/18 07:56:05 markus Exp $"); |
40 | 40 | ||
41 | #include <openssl/err.h> | 41 | #include <openssl/err.h> |
42 | #include <openssl/evp.h> | 42 | #include <openssl/evp.h> |
@@ -143,6 +143,7 @@ key_save_private_rsa1(Key *key, const char *filename, const char *passphrase, | |||
143 | fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0600); | 143 | fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0600); |
144 | if (fd < 0) { | 144 | if (fd < 0) { |
145 | error("open %s failed: %s.", filename, strerror(errno)); | 145 | error("open %s failed: %s.", filename, strerror(errno)); |
146 | buffer_free(&encrypted); | ||
146 | return 0; | 147 | return 0; |
147 | } | 148 | } |
148 | if (write(fd, buffer_ptr(&encrypted), buffer_len(&encrypted)) != | 149 | if (write(fd, buffer_ptr(&encrypted), buffer_len(&encrypted)) != |
@@ -37,7 +37,7 @@ | |||
37 | */ | 37 | */ |
38 | 38 | ||
39 | #include "includes.h" | 39 | #include "includes.h" |
40 | RCSID("$OpenBSD: bufaux.c,v 1.29 2003/04/08 20:21:28 itojun Exp $"); | 40 | RCSID("$OpenBSD: bufaux.c,v 1.32 2004/02/23 15:12:46 markus Exp $"); |
41 | 41 | ||
42 | #include <openssl/bn.h> | 42 | #include <openssl/bn.h> |
43 | #include "bufaux.h" | 43 | #include "bufaux.h" |
@@ -50,7 +50,7 @@ RCSID("$OpenBSD: bufaux.c,v 1.29 2003/04/08 20:21:28 itojun Exp $"); | |||
50 | * by (bits+7)/8 bytes of binary data, msb first. | 50 | * by (bits+7)/8 bytes of binary data, msb first. |
51 | */ | 51 | */ |
52 | void | 52 | void |
53 | buffer_put_bignum(Buffer *buffer, BIGNUM *value) | 53 | buffer_put_bignum(Buffer *buffer, const BIGNUM *value) |
54 | { | 54 | { |
55 | int bits = BN_num_bits(value); | 55 | int bits = BN_num_bits(value); |
56 | int bin_size = (bits + 7) / 8; | 56 | int bin_size = (bits + 7) / 8; |
@@ -80,7 +80,7 @@ buffer_put_bignum(Buffer *buffer, BIGNUM *value) | |||
80 | void | 80 | void |
81 | buffer_get_bignum(Buffer *buffer, BIGNUM *value) | 81 | buffer_get_bignum(Buffer *buffer, BIGNUM *value) |
82 | { | 82 | { |
83 | int bits, bytes; | 83 | u_int bits, bytes; |
84 | u_char buf[2], *bin; | 84 | u_char buf[2], *bin; |
85 | 85 | ||
86 | /* Get the number for bits. */ | 86 | /* Get the number for bits. */ |
@@ -101,48 +101,49 @@ buffer_get_bignum(Buffer *buffer, BIGNUM *value) | |||
101 | * Stores an BIGNUM in the buffer in SSH2 format. | 101 | * Stores an BIGNUM in the buffer in SSH2 format. |
102 | */ | 102 | */ |
103 | void | 103 | void |
104 | buffer_put_bignum2(Buffer *buffer, BIGNUM *value) | 104 | buffer_put_bignum2(Buffer *buffer, const BIGNUM *value) |
105 | { | 105 | { |
106 | int bytes = BN_num_bytes(value) + 1; | 106 | u_int bytes; |
107 | u_char *buf = xmalloc(bytes); | 107 | u_char *buf; |
108 | int oi; | 108 | int oi; |
109 | int hasnohigh = 0; | 109 | u_int hasnohigh = 0; |
110 | 110 | ||
111 | if (BN_is_zero(value)) { | ||
112 | buffer_put_int(buffer, 0); | ||
113 | return; | ||
114 | } | ||
115 | if (value->neg) | ||
116 | fatal("buffer_put_bignum2: negative numbers not supported"); | ||
117 | bytes = BN_num_bytes(value) + 1; /* extra padding byte */ | ||
118 | if (bytes < 2) | ||
119 | fatal("buffer_put_bignum2: BN too small"); | ||
120 | buf = xmalloc(bytes); | ||
111 | buf[0] = '\0'; | 121 | buf[0] = '\0'; |
112 | /* Get the value of in binary */ | 122 | /* Get the value of in binary */ |
113 | oi = BN_bn2bin(value, buf+1); | 123 | oi = BN_bn2bin(value, buf+1); |
114 | if (oi != bytes-1) | 124 | if (oi != bytes-1) |
115 | fatal("buffer_put_bignum: BN_bn2bin() failed: oi %d != bin_size %d", | 125 | fatal("buffer_put_bignum2: BN_bn2bin() failed: " |
116 | oi, bytes); | 126 | "oi %d != bin_size %d", oi, bytes); |
117 | hasnohigh = (buf[1] & 0x80) ? 0 : 1; | 127 | hasnohigh = (buf[1] & 0x80) ? 0 : 1; |
118 | if (value->neg) { | ||
119 | /**XXX should be two's-complement */ | ||
120 | int i, carry; | ||
121 | u_char *uc = buf; | ||
122 | logit("negativ!"); | ||
123 | for (i = bytes-1, carry = 1; i>=0; i--) { | ||
124 | uc[i] ^= 0xff; | ||
125 | if (carry) | ||
126 | carry = !++uc[i]; | ||
127 | } | ||
128 | } | ||
129 | buffer_put_string(buffer, buf+hasnohigh, bytes-hasnohigh); | 128 | buffer_put_string(buffer, buf+hasnohigh, bytes-hasnohigh); |
130 | memset(buf, 0, bytes); | 129 | memset(buf, 0, bytes); |
131 | xfree(buf); | 130 | xfree(buf); |
132 | } | 131 | } |
133 | 132 | ||
134 | /* XXX does not handle negative BNs */ | ||
135 | void | 133 | void |
136 | buffer_get_bignum2(Buffer *buffer, BIGNUM *value) | 134 | buffer_get_bignum2(Buffer *buffer, BIGNUM *value) |
137 | { | 135 | { |
138 | u_int len; | 136 | u_int len; |
139 | u_char *bin = buffer_get_string(buffer, &len); | 137 | u_char *bin = buffer_get_string(buffer, &len); |
140 | 138 | ||
139 | if (len > 0 && (bin[0] & 0x80)) | ||
140 | fatal("buffer_get_bignum2: negative numbers not supported"); | ||
141 | if (len > 8 * 1024) | 141 | if (len > 8 * 1024) |
142 | fatal("buffer_get_bignum2: cannot handle BN of size %d", len); | 142 | fatal("buffer_get_bignum2: cannot handle BN of size %d", len); |
143 | BN_bin2bn(bin, len, value); | 143 | BN_bin2bn(bin, len, value); |
144 | xfree(bin); | 144 | xfree(bin); |
145 | } | 145 | } |
146 | |||
146 | /* | 147 | /* |
147 | * Returns integers from the buffer (msb first). | 148 | * Returns integers from the buffer (msb first). |
148 | */ | 149 | */ |
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bufaux.h,v 1.18 2002/04/20 09:14:58 markus Exp $ */ | 1 | /* $OpenBSD: bufaux.h,v 1.19 2003/11/10 16:23:41 jakob Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> | 4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> |
@@ -18,8 +18,8 @@ | |||
18 | #include "buffer.h" | 18 | #include "buffer.h" |
19 | #include <openssl/bn.h> | 19 | #include <openssl/bn.h> |
20 | 20 | ||
21 | void buffer_put_bignum(Buffer *, BIGNUM *); | 21 | void buffer_put_bignum(Buffer *, const BIGNUM *); |
22 | void buffer_put_bignum2(Buffer *, BIGNUM *); | 22 | void buffer_put_bignum2(Buffer *, const BIGNUM *); |
23 | void buffer_get_bignum(Buffer *, BIGNUM *); | 23 | void buffer_get_bignum(Buffer *, BIGNUM *); |
24 | void buffer_get_bignum2(Buffer *, BIGNUM *); | 24 | void buffer_get_bignum2(Buffer *, BIGNUM *); |
25 | 25 | ||
@@ -12,7 +12,7 @@ | |||
12 | */ | 12 | */ |
13 | 13 | ||
14 | #include "includes.h" | 14 | #include "includes.h" |
15 | RCSID("$OpenBSD: buffer.c,v 1.19 2003/09/18 07:54:48 markus Exp $"); | 15 | RCSID("$OpenBSD: buffer.c,v 1.21 2003/11/21 11:57:03 djm Exp $"); |
16 | 16 | ||
17 | #include "xmalloc.h" | 17 | #include "xmalloc.h" |
18 | #include "buffer.h" | 18 | #include "buffer.h" |
@@ -105,7 +105,7 @@ restart: | |||
105 | goto restart; | 105 | goto restart; |
106 | } | 106 | } |
107 | /* Increase the size of the buffer and retry. */ | 107 | /* Increase the size of the buffer and retry. */ |
108 | 108 | ||
109 | newlen = buffer->alloc + len + 32768; | 109 | newlen = buffer->alloc + len + 32768; |
110 | if (newlen > 0xa00000) | 110 | if (newlen > 0xa00000) |
111 | fatal("buffer_append_space: alloc %u not supported", | 111 | fatal("buffer_append_space: alloc %u not supported", |
@@ -169,7 +169,7 @@ buffer_ptr(Buffer *buffer) | |||
169 | void | 169 | void |
170 | buffer_dump(Buffer *buffer) | 170 | buffer_dump(Buffer *buffer) |
171 | { | 171 | { |
172 | int i; | 172 | u_int i; |
173 | u_char *ucp = buffer->buf; | 173 | u_char *ucp = buffer->buf; |
174 | 174 | ||
175 | for (i = buffer->offset; i < buffer->end; i++) { | 175 | for (i = buffer->offset; i < buffer->end; i++) { |
diff --git a/canohost.c b/canohost.c index 438175f76..f5145922e 100644 --- a/canohost.c +++ b/canohost.c | |||
@@ -12,7 +12,7 @@ | |||
12 | */ | 12 | */ |
13 | 13 | ||
14 | #include "includes.h" | 14 | #include "includes.h" |
15 | RCSID("$OpenBSD: canohost.c,v 1.37 2003/06/02 09:17:34 markus Exp $"); | 15 | RCSID("$OpenBSD: canohost.c,v 1.38 2003/09/23 20:17:11 markus Exp $"); |
16 | 16 | ||
17 | #include "packet.h" | 17 | #include "packet.h" |
18 | #include "xmalloc.h" | 18 | #include "xmalloc.h" |
@@ -20,6 +20,7 @@ RCSID("$OpenBSD: canohost.c,v 1.37 2003/06/02 09:17:34 markus Exp $"); | |||
20 | #include "canohost.h" | 20 | #include "canohost.h" |
21 | 21 | ||
22 | static void check_ip_options(int, char *); | 22 | static void check_ip_options(int, char *); |
23 | static void ipv64_normalise_mapped(struct sockaddr_storage *, socklen_t *); | ||
23 | 24 | ||
24 | /* | 25 | /* |
25 | * Return the canonical name of the host at the other end of the socket. The | 26 | * Return the canonical name of the host at the other end of the socket. The |
@@ -40,31 +41,11 @@ get_remote_hostname(int socket, int use_dns) | |||
40 | memset(&from, 0, sizeof(from)); | 41 | memset(&from, 0, sizeof(from)); |
41 | if (getpeername(socket, (struct sockaddr *)&from, &fromlen) < 0) { | 42 | if (getpeername(socket, (struct sockaddr *)&from, &fromlen) < 0) { |
42 | debug("getpeername failed: %.100s", strerror(errno)); | 43 | debug("getpeername failed: %.100s", strerror(errno)); |
43 | fatal_cleanup(); | 44 | cleanup_exit(255); |
44 | } | 45 | } |
45 | #ifdef IPV4_IN_IPV6 | 46 | |
46 | if (from.ss_family == AF_INET6) { | 47 | ipv64_normalise_mapped(&from, &fromlen); |
47 | struct sockaddr_in6 *from6 = (struct sockaddr_in6 *)&from; | 48 | |
48 | |||
49 | /* Detect IPv4 in IPv6 mapped address and convert it to */ | ||
50 | /* plain (AF_INET) IPv4 address */ | ||
51 | if (IN6_IS_ADDR_V4MAPPED(&from6->sin6_addr)) { | ||
52 | struct sockaddr_in *from4 = (struct sockaddr_in *)&from; | ||
53 | struct in_addr addr; | ||
54 | u_int16_t port; | ||
55 | |||
56 | memcpy(&addr, ((char *)&from6->sin6_addr) + 12, sizeof(addr)); | ||
57 | port = from6->sin6_port; | ||
58 | |||
59 | memset(&from, 0, sizeof(from)); | ||
60 | |||
61 | from4->sin_family = AF_INET; | ||
62 | fromlen = sizeof(*from4); | ||
63 | memcpy(&from4->sin_addr, &addr, sizeof(addr)); | ||
64 | from4->sin_port = port; | ||
65 | } | ||
66 | } | ||
67 | #endif | ||
68 | if (from.ss_family == AF_INET6) | 49 | if (from.ss_family == AF_INET6) |
69 | fromlen = sizeof(struct sockaddr_in6); | 50 | fromlen = sizeof(struct sockaddr_in6); |
70 | 51 | ||
@@ -185,6 +166,31 @@ check_ip_options(int socket, char *ipaddr) | |||
185 | #endif /* IP_OPTIONS */ | 166 | #endif /* IP_OPTIONS */ |
186 | } | 167 | } |
187 | 168 | ||
169 | static void | ||
170 | ipv64_normalise_mapped(struct sockaddr_storage *addr, socklen_t *len) | ||
171 | { | ||
172 | struct sockaddr_in6 *a6 = (struct sockaddr_in6 *)addr; | ||
173 | struct sockaddr_in *a4 = (struct sockaddr_in *)addr; | ||
174 | struct in_addr inaddr; | ||
175 | u_int16_t port; | ||
176 | |||
177 | if (addr->ss_family != AF_INET6 || | ||
178 | !IN6_IS_ADDR_V4MAPPED(&a6->sin6_addr)) | ||
179 | return; | ||
180 | |||
181 | debug3("Normalising mapped IPv4 in IPv6 address"); | ||
182 | |||
183 | memcpy(&inaddr, ((char *)&a6->sin6_addr) + 12, sizeof(inaddr)); | ||
184 | port = a6->sin6_port; | ||
185 | |||
186 | memset(addr, 0, sizeof(*a4)); | ||
187 | |||
188 | a4->sin_family = AF_INET; | ||
189 | *len = sizeof(*a4); | ||
190 | memcpy(&a4->sin_addr, &inaddr, sizeof(inaddr)); | ||
191 | a4->sin_port = port; | ||
192 | } | ||
193 | |||
188 | /* | 194 | /* |
189 | * Return the canonical name of the host in the other side of the current | 195 | * Return the canonical name of the host in the other side of the current |
190 | * connection. The host name is cached, so it is efficient to call this | 196 | * connection. The host name is cached, so it is efficient to call this |
@@ -296,7 +302,7 @@ get_remote_ipaddr(void) | |||
296 | canonical_host_ip = | 302 | canonical_host_ip = |
297 | get_peer_ipaddr(packet_get_connection_in()); | 303 | get_peer_ipaddr(packet_get_connection_in()); |
298 | if (canonical_host_ip == NULL) | 304 | if (canonical_host_ip == NULL) |
299 | fatal_cleanup(); | 305 | cleanup_exit(255); |
300 | } else { | 306 | } else { |
301 | /* If not on socket, return UNKNOWN. */ | 307 | /* If not on socket, return UNKNOWN. */ |
302 | canonical_host_ip = xstrdup("UNKNOWN"); | 308 | canonical_host_ip = xstrdup("UNKNOWN"); |
@@ -336,7 +342,7 @@ get_sock_port(int sock, int local) | |||
336 | } else { | 342 | } else { |
337 | if (getpeername(sock, (struct sockaddr *)&from, &fromlen) < 0) { | 343 | if (getpeername(sock, (struct sockaddr *)&from, &fromlen) < 0) { |
338 | debug("getpeername failed: %.100s", strerror(errno)); | 344 | debug("getpeername failed: %.100s", strerror(errno)); |
339 | fatal_cleanup(); | 345 | cleanup_exit(255); |
340 | } | 346 | } |
341 | } | 347 | } |
342 | 348 | ||
diff --git a/channels.c b/channels.c index 3d75c8f2b..e663c2159 100644 --- a/channels.c +++ b/channels.c | |||
@@ -39,7 +39,7 @@ | |||
39 | */ | 39 | */ |
40 | 40 | ||
41 | #include "includes.h" | 41 | #include "includes.h" |
42 | RCSID("$OpenBSD: channels.c,v 1.195 2003/09/16 21:02:40 markus Exp $"); | 42 | RCSID("$OpenBSD: channels.c,v 1.200 2004/01/19 09:24:21 markus Exp $"); |
43 | 43 | ||
44 | #include "ssh.h" | 44 | #include "ssh.h" |
45 | #include "ssh1.h" | 45 | #include "ssh1.h" |
@@ -217,7 +217,6 @@ channel_new(char *ctype, int type, int rfd, int wfd, int efd, | |||
217 | channels = xmalloc(channels_alloc * sizeof(Channel *)); | 217 | channels = xmalloc(channels_alloc * sizeof(Channel *)); |
218 | for (i = 0; i < channels_alloc; i++) | 218 | for (i = 0; i < channels_alloc; i++) |
219 | channels[i] = NULL; | 219 | channels[i] = NULL; |
220 | fatal_add_cleanup((void (*) (void *)) channel_free_all, NULL); | ||
221 | } | 220 | } |
222 | /* Try to find a free slot where to put the new channel. */ | 221 | /* Try to find a free slot where to put the new channel. */ |
223 | for (found = -1, i = 0; i < channels_alloc; i++) | 222 | for (found = -1, i = 0; i < channels_alloc; i++) |
@@ -971,7 +970,7 @@ channel_decode_socks5(Channel *c, fd_set * readset, fd_set * writeset) | |||
971 | have = buffer_len(&c->input); | 970 | have = buffer_len(&c->input); |
972 | if (!(c->flags & SSH_SOCKS5_AUTHDONE)) { | 971 | if (!(c->flags & SSH_SOCKS5_AUTHDONE)) { |
973 | /* format: ver | nmethods | methods */ | 972 | /* format: ver | nmethods | methods */ |
974 | if (have < 2) | 973 | if (have < 2) |
975 | return 0; | 974 | return 0; |
976 | nmethods = p[1]; | 975 | nmethods = p[1]; |
977 | if (have < nmethods + 2) | 976 | if (have < nmethods + 2) |
@@ -1036,7 +1035,7 @@ channel_decode_socks5(Channel *c, fd_set * readset, fd_set * writeset) | |||
1036 | else if (inet_ntop(af, dest_addr, c->path, sizeof(c->path)) == NULL) | 1035 | else if (inet_ntop(af, dest_addr, c->path, sizeof(c->path)) == NULL) |
1037 | return -1; | 1036 | return -1; |
1038 | c->host_port = ntohs(dest_port); | 1037 | c->host_port = ntohs(dest_port); |
1039 | 1038 | ||
1040 | debug2("channel %d: dynamic request: socks5 host %s port %u command %u", | 1039 | debug2("channel %d: dynamic request: socks5 host %s port %u command %u", |
1041 | c->self, c->path, c->host_port, s5_req.command); | 1040 | c->self, c->path, c->host_port, s5_req.command); |
1042 | 1041 | ||
@@ -1398,9 +1397,9 @@ channel_handle_wfd(Channel *c, fd_set * readset, fd_set * writeset) | |||
1398 | data = buffer_ptr(&c->output); | 1397 | data = buffer_ptr(&c->output); |
1399 | dlen = buffer_len(&c->output); | 1398 | dlen = buffer_len(&c->output); |
1400 | #ifdef _AIX | 1399 | #ifdef _AIX |
1401 | /* XXX: Later AIX versions can't push as much data to tty */ | 1400 | /* XXX: Later AIX versions can't push as much data to tty */ |
1402 | if (compat20 && c->wfd_isatty && dlen > 8*1024) | 1401 | if (compat20 && c->wfd_isatty) |
1403 | dlen = 8*1024; | 1402 | dlen = MIN(dlen, 8*1024); |
1404 | #endif | 1403 | #endif |
1405 | len = write(c->wfd, data, dlen); | 1404 | len = write(c->wfd, data, dlen); |
1406 | if (len < 0 && (errno == EINTR || errno == EAGAIN)) | 1405 | if (len < 0 && (errno == EINTR || errno == EAGAIN)) |
@@ -1818,13 +1817,25 @@ channel_input_data(int type, u_int32_t seq, void *ctxt) | |||
1818 | c->type != SSH_CHANNEL_X11_OPEN) | 1817 | c->type != SSH_CHANNEL_X11_OPEN) |
1819 | return; | 1818 | return; |
1820 | 1819 | ||
1821 | /* same for protocol 1.5 if output end is no longer open */ | ||
1822 | if (!compat13 && c->ostate != CHAN_OUTPUT_OPEN) | ||
1823 | return; | ||
1824 | |||
1825 | /* Get the data. */ | 1820 | /* Get the data. */ |
1826 | data = packet_get_string(&data_len); | 1821 | data = packet_get_string(&data_len); |
1827 | 1822 | ||
1823 | /* | ||
1824 | * Ignore data for protocol > 1.3 if output end is no longer open. | ||
1825 | * For protocol 2 the sending side is reducing its window as it sends | ||
1826 | * data, so we must 'fake' consumption of the data in order to ensure | ||
1827 | * that window updates are sent back. Otherwise the connection might | ||
1828 | * deadlock. | ||
1829 | */ | ||
1830 | if (!compat13 && c->ostate != CHAN_OUTPUT_OPEN) { | ||
1831 | if (compat20) { | ||
1832 | c->local_window -= data_len; | ||
1833 | c->local_consumed += data_len; | ||
1834 | } | ||
1835 | xfree(data); | ||
1836 | return; | ||
1837 | } | ||
1838 | |||
1828 | if (compat20) { | 1839 | if (compat20) { |
1829 | if (data_len > c->local_maxpacket) { | 1840 | if (data_len > c->local_maxpacket) { |
1830 | logit("channel %d: rcvd big packet %d, maxpack %d", | 1841 | logit("channel %d: rcvd big packet %d, maxpack %d", |
@@ -2196,7 +2207,7 @@ channel_setup_fwd_listener(int type, const char *listen_addr, u_short listen_por | |||
2196 | continue; | 2207 | continue; |
2197 | } | 2208 | } |
2198 | /* Start listening for connections on the socket. */ | 2209 | /* Start listening for connections on the socket. */ |
2199 | if (listen(sock, 5) < 0) { | 2210 | if (listen(sock, SSH_LISTEN_BACKLOG) < 0) { |
2200 | error("listen: %.100s", strerror(errno)); | 2211 | error("listen: %.100s", strerror(errno)); |
2201 | close(sock); | 2212 | close(sock); |
2202 | continue; | 2213 | continue; |
@@ -2551,7 +2562,7 @@ x11_create_display_inet(int x11_display_offset, int x11_use_localhost, | |||
2551 | /* Start listening for connections on the socket. */ | 2562 | /* Start listening for connections on the socket. */ |
2552 | for (n = 0; n < num_socks; n++) { | 2563 | for (n = 0; n < num_socks; n++) { |
2553 | sock = socks[n]; | 2564 | sock = socks[n]; |
2554 | if (listen(sock, 5) < 0) { | 2565 | if (listen(sock, SSH_LISTEN_BACKLOG) < 0) { |
2555 | error("listen: %.100s", strerror(errno)); | 2566 | error("listen: %.100s", strerror(errno)); |
2556 | close(sock); | 2567 | close(sock); |
2557 | return -1; | 2568 | return -1; |
@@ -2839,46 +2850,3 @@ auth_request_forwarding(void) | |||
2839 | packet_send(); | 2850 | packet_send(); |
2840 | packet_write_wait(); | 2851 | packet_write_wait(); |
2841 | } | 2852 | } |
2842 | |||
2843 | /* This is called to process an SSH_SMSG_AGENT_OPEN message. */ | ||
2844 | |||
2845 | void | ||
2846 | auth_input_open_request(int type, u_int32_t seq, void *ctxt) | ||
2847 | { | ||
2848 | Channel *c = NULL; | ||
2849 | int remote_id, sock; | ||
2850 | |||
2851 | /* Read the remote channel number from the message. */ | ||
2852 | remote_id = packet_get_int(); | ||
2853 | packet_check_eom(); | ||
2854 | |||
2855 | /* | ||
2856 | * Get a connection to the local authentication agent (this may again | ||
2857 | * get forwarded). | ||
2858 | */ | ||
2859 | sock = ssh_get_authentication_socket(); | ||
2860 | |||
2861 | /* | ||
2862 | * If we could not connect the agent, send an error message back to | ||
2863 | * the server. This should never happen unless the agent dies, | ||
2864 | * because authentication forwarding is only enabled if we have an | ||
2865 | * agent. | ||
2866 | */ | ||
2867 | if (sock >= 0) { | ||
2868 | c = channel_new("", SSH_CHANNEL_OPEN, sock, sock, | ||
2869 | -1, 0, 0, 0, "authentication agent connection", 1); | ||
2870 | c->remote_id = remote_id; | ||
2871 | c->force_drain = 1; | ||
2872 | } | ||
2873 | if (c == NULL) { | ||
2874 | packet_start(SSH_MSG_CHANNEL_OPEN_FAILURE); | ||
2875 | packet_put_int(remote_id); | ||
2876 | } else { | ||
2877 | /* Send a confirmation to the remote host. */ | ||
2878 | debug("Forwarding authentication connection."); | ||
2879 | packet_start(SSH_MSG_CHANNEL_OPEN_CONFIRMATION); | ||
2880 | packet_put_int(remote_id); | ||
2881 | packet_put_int(c->self); | ||
2882 | } | ||
2883 | packet_send(); | ||
2884 | } | ||
diff --git a/channels.h b/channels.h index bd2e92589..7d981479b 100644 --- a/channels.h +++ b/channels.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: channels.h,v 1.70 2002/06/24 14:33:27 markus Exp $ */ | 1 | /* $OpenBSD: channels.h,v 1.71 2003/09/23 20:41:11 markus Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> | 4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> |
@@ -214,7 +214,6 @@ void deny_input_open(int, u_int32_t, void *); | |||
214 | /* agent forwarding */ | 214 | /* agent forwarding */ |
215 | 215 | ||
216 | void auth_request_forwarding(void); | 216 | void auth_request_forwarding(void); |
217 | void auth_input_open_request(int, u_int32_t, void *); | ||
218 | 217 | ||
219 | /* channel close */ | 218 | /* channel close */ |
220 | 219 | ||
diff --git a/cipher-3des1.c b/cipher-3des1.c index 6f9f5dd6b..f815e8ae5 100644 --- a/cipher-3des1.c +++ b/cipher-3des1.c | |||
@@ -23,7 +23,7 @@ | |||
23 | */ | 23 | */ |
24 | 24 | ||
25 | #include "includes.h" | 25 | #include "includes.h" |
26 | RCSID("$OpenBSD: cipher-3des1.c,v 1.1 2003/05/15 03:08:29 markus Exp $"); | 26 | RCSID("$OpenBSD: cipher-3des1.c,v 1.2 2003/12/22 20:29:55 markus Exp $"); |
27 | 27 | ||
28 | #include <openssl/evp.h> | 28 | #include <openssl/evp.h> |
29 | #include "xmalloc.h" | 29 | #include "xmalloc.h" |
@@ -126,6 +126,9 @@ ssh1_3des_cleanup(EVP_CIPHER_CTX *ctx) | |||
126 | struct ssh1_3des_ctx *c; | 126 | struct ssh1_3des_ctx *c; |
127 | 127 | ||
128 | if ((c = EVP_CIPHER_CTX_get_app_data(ctx)) != NULL) { | 128 | if ((c = EVP_CIPHER_CTX_get_app_data(ctx)) != NULL) { |
129 | EVP_CIPHER_CTX_cleanup(&c->k1); | ||
130 | EVP_CIPHER_CTX_cleanup(&c->k2); | ||
131 | EVP_CIPHER_CTX_cleanup(&c->k3); | ||
129 | memset(c, 0, sizeof(*c)); | 132 | memset(c, 0, sizeof(*c)); |
130 | xfree(c); | 133 | xfree(c); |
131 | EVP_CIPHER_CTX_set_app_data(ctx, NULL); | 134 | EVP_CIPHER_CTX_set_app_data(ctx, NULL); |
diff --git a/cipher-acss.c b/cipher-acss.c new file mode 100644 index 000000000..3a966a74d --- /dev/null +++ b/cipher-acss.c | |||
@@ -0,0 +1,84 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2004 The OpenBSD project | ||
3 | * | ||
4 | * Permission to use, copy, modify, and distribute this software for any | ||
5 | * purpose with or without fee is hereby granted, provided that the above | ||
6 | * copyright notice and this permission notice appear in all copies. | ||
7 | * | ||
8 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||
9 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||
10 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||
11 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
12 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
13 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
14 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
15 | */ | ||
16 | |||
17 | #include "includes.h" | ||
18 | #include <openssl/evp.h> | ||
19 | |||
20 | RCSID("$Id: cipher-acss.c,v 1.2 2004/02/06 04:26:11 dtucker Exp $"); | ||
21 | |||
22 | #if !defined(EVP_CTRL_SET_ACSS_MODE) && (OPENSSL_VERSION_NUMBER >= 0x00907000L) | ||
23 | |||
24 | #include "acss.h" | ||
25 | |||
26 | #define data(ctx) ((EVP_ACSS_KEY *)(ctx)->cipher_data) | ||
27 | |||
28 | typedef struct { | ||
29 | ACSS_KEY ks; | ||
30 | } EVP_ACSS_KEY; | ||
31 | |||
32 | #define EVP_CTRL_SET_ACSS_MODE 0xff06 | ||
33 | #define EVP_CTRL_SET_ACSS_SUBKEY 0xff07 | ||
34 | |||
35 | static int | ||
36 | acss_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, | ||
37 | const unsigned char *iv, int enc) | ||
38 | { | ||
39 | acss_setkey(&data(ctx)->ks,key,enc,ACSS_DATA); | ||
40 | return 1; | ||
41 | } | ||
42 | |||
43 | static int | ||
44 | acss_ciph(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, | ||
45 | unsigned int inl) | ||
46 | { | ||
47 | acss(&data(ctx)->ks,inl,in,out); | ||
48 | return 1; | ||
49 | } | ||
50 | |||
51 | static int | ||
52 | acss_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr) | ||
53 | { | ||
54 | switch(type) { | ||
55 | case EVP_CTRL_SET_ACSS_MODE: | ||
56 | data(ctx)->ks.mode = arg; | ||
57 | return 1; | ||
58 | case EVP_CTRL_SET_ACSS_SUBKEY: | ||
59 | acss_setsubkey(&data(ctx)->ks,(unsigned char *)ptr); | ||
60 | return 1; | ||
61 | default: | ||
62 | return -1; | ||
63 | } | ||
64 | } | ||
65 | |||
66 | const EVP_CIPHER * | ||
67 | evp_acss(void) | ||
68 | { | ||
69 | static EVP_CIPHER acss_cipher; | ||
70 | |||
71 | memset(&acss_cipher, 0, sizeof(EVP_CIPHER)); | ||
72 | |||
73 | acss_cipher.nid = NID_undef; | ||
74 | acss_cipher.block_size = 1; | ||
75 | acss_cipher.key_len = 5; | ||
76 | acss_cipher.init = acss_init_key; | ||
77 | acss_cipher.do_cipher = acss_ciph; | ||
78 | acss_cipher.ctx_size = sizeof(EVP_ACSS_KEY); | ||
79 | acss_cipher.ctrl = acss_ctrl; | ||
80 | |||
81 | return (&acss_cipher); | ||
82 | } | ||
83 | #endif | ||
84 | |||
diff --git a/cipher-aes.c b/cipher-aes.c index 7ba950191..22d500d42 100644 --- a/cipher-aes.c +++ b/cipher-aes.c | |||
@@ -24,7 +24,7 @@ | |||
24 | 24 | ||
25 | #include "includes.h" | 25 | #include "includes.h" |
26 | #if OPENSSL_VERSION_NUMBER < 0x00907000L | 26 | #if OPENSSL_VERSION_NUMBER < 0x00907000L |
27 | RCSID("$OpenBSD: cipher-aes.c,v 1.1 2003/05/15 03:08:29 markus Exp $"); | 27 | RCSID("$OpenBSD: cipher-aes.c,v 1.2 2003/11/26 21:44:29 djm Exp $"); |
28 | 28 | ||
29 | #include <openssl/evp.h> | 29 | #include <openssl/evp.h> |
30 | #include "rijndael.h" | 30 | #include "rijndael.h" |
diff --git a/cipher-ctr.c b/cipher-ctr.c index 4f0814b22..395dabedd 100644 --- a/cipher-ctr.c +++ b/cipher-ctr.c | |||
@@ -14,7 +14,7 @@ | |||
14 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | 14 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
15 | */ | 15 | */ |
16 | #include "includes.h" | 16 | #include "includes.h" |
17 | RCSID("$OpenBSD: cipher-ctr.c,v 1.2 2003/06/17 18:14:23 markus Exp $"); | 17 | RCSID("$OpenBSD: cipher-ctr.c,v 1.4 2004/02/06 23:41:13 dtucker Exp $"); |
18 | 18 | ||
19 | #include <openssl/evp.h> | 19 | #include <openssl/evp.h> |
20 | 20 | ||
@@ -94,7 +94,8 @@ ssh_aes_ctr_init(EVP_CIPHER_CTX *ctx, const u_char *key, const u_char *iv, | |||
94 | EVP_CIPHER_CTX_set_app_data(ctx, c); | 94 | EVP_CIPHER_CTX_set_app_data(ctx, c); |
95 | } | 95 | } |
96 | if (key != NULL) | 96 | if (key != NULL) |
97 | AES_set_encrypt_key(key, ctx->key_len * 8, &c->aes_ctx); | 97 | AES_set_encrypt_key(key, EVP_CIPHER_CTX_key_length(ctx) * 8, |
98 | &c->aes_ctx); | ||
98 | if (iv != NULL) | 99 | if (iv != NULL) |
99 | memcpy(c->aes_counter, iv, AES_BLOCK_SIZE); | 100 | memcpy(c->aes_counter, iv, AES_BLOCK_SIZE); |
100 | return (1); | 101 | return (1); |
@@ -35,7 +35,7 @@ | |||
35 | */ | 35 | */ |
36 | 36 | ||
37 | #include "includes.h" | 37 | #include "includes.h" |
38 | RCSID("$OpenBSD: cipher.c,v 1.65 2003/05/17 04:27:52 markus Exp $"); | 38 | RCSID("$OpenBSD: cipher.c,v 1.68 2004/01/23 19:26:33 hshoexer Exp $"); |
39 | 39 | ||
40 | #include "xmalloc.h" | 40 | #include "xmalloc.h" |
41 | #include "log.h" | 41 | #include "log.h" |
@@ -52,6 +52,17 @@ RCSID("$OpenBSD: cipher.c,v 1.65 2003/05/17 04:27:52 markus Exp $"); | |||
52 | extern const EVP_CIPHER *evp_rijndael(void); | 52 | extern const EVP_CIPHER *evp_rijndael(void); |
53 | extern void ssh_rijndael_iv(EVP_CIPHER_CTX *, int, u_char *, u_int); | 53 | extern void ssh_rijndael_iv(EVP_CIPHER_CTX *, int, u_char *, u_int); |
54 | #endif | 54 | #endif |
55 | |||
56 | #if !defined(EVP_CTRL_SET_ACSS_MODE) | ||
57 | # if (OPENSSL_VERSION_NUMBER >= 0x00907000L) | ||
58 | extern const EVP_CIPHER *evp_acss(void); | ||
59 | # define EVP_acss evp_acss | ||
60 | # define EVP_CTRL_SET_ACSS_MODE xxx /* used below */ | ||
61 | # else | ||
62 | # define EVP_acss NULL /* Don't try to support ACSS on older OpenSSL */ | ||
63 | # endif /* (OPENSSL_VERSION_NUMBER >= 0x00906000L) */ | ||
64 | #endif /* !defined(EVP_CTRL_SET_ACSS_MODE) */ | ||
65 | |||
55 | extern const EVP_CIPHER *evp_ssh1_bf(void); | 66 | extern const EVP_CIPHER *evp_ssh1_bf(void); |
56 | extern const EVP_CIPHER *evp_ssh1_3des(void); | 67 | extern const EVP_CIPHER *evp_ssh1_3des(void); |
57 | extern void ssh1_3des_iv(EVP_CIPHER_CTX *, int, u_char *, int); | 68 | extern void ssh1_3des_iv(EVP_CIPHER_CTX *, int, u_char *, int); |
@@ -87,31 +98,33 @@ struct Cipher { | |||
87 | { "rijndael-cbc@lysator.liu.se", | 98 | { "rijndael-cbc@lysator.liu.se", |
88 | SSH_CIPHER_SSH2, 16, 32, EVP_aes_256_cbc }, | 99 | SSH_CIPHER_SSH2, 16, 32, EVP_aes_256_cbc }, |
89 | #endif | 100 | #endif |
90 | #if OPENSSL_VERSION_NUMBER >= 0x00906000L | 101 | #if OPENSSL_VERSION_NUMBER >= 0x00905000L |
91 | { "aes128-ctr", SSH_CIPHER_SSH2, 16, 16, evp_aes_128_ctr }, | 102 | { "aes128-ctr", SSH_CIPHER_SSH2, 16, 16, evp_aes_128_ctr }, |
92 | { "aes192-ctr", SSH_CIPHER_SSH2, 16, 24, evp_aes_128_ctr }, | 103 | { "aes192-ctr", SSH_CIPHER_SSH2, 16, 24, evp_aes_128_ctr }, |
93 | { "aes256-ctr", SSH_CIPHER_SSH2, 16, 32, evp_aes_128_ctr }, | 104 | { "aes256-ctr", SSH_CIPHER_SSH2, 16, 32, evp_aes_128_ctr }, |
94 | #endif | 105 | #endif |
95 | 106 | #if defined(EVP_CTRL_SET_ACSS_MODE) | |
107 | { "acss@openssh.org", SSH_CIPHER_SSH2, 16, 5, EVP_acss }, | ||
108 | #endif | ||
96 | { NULL, SSH_CIPHER_ILLEGAL, 0, 0, NULL } | 109 | { NULL, SSH_CIPHER_ILLEGAL, 0, 0, NULL } |
97 | }; | 110 | }; |
98 | 111 | ||
99 | /*--*/ | 112 | /*--*/ |
100 | 113 | ||
101 | u_int | 114 | u_int |
102 | cipher_blocksize(Cipher *c) | 115 | cipher_blocksize(const Cipher *c) |
103 | { | 116 | { |
104 | return (c->block_size); | 117 | return (c->block_size); |
105 | } | 118 | } |
106 | 119 | ||
107 | u_int | 120 | u_int |
108 | cipher_keylen(Cipher *c) | 121 | cipher_keylen(const Cipher *c) |
109 | { | 122 | { |
110 | return (c->key_len); | 123 | return (c->key_len); |
111 | } | 124 | } |
112 | 125 | ||
113 | u_int | 126 | u_int |
114 | cipher_get_number(Cipher *c) | 127 | cipher_get_number(const Cipher *c) |
115 | { | 128 | { |
116 | return (c->number); | 129 | return (c->number); |
117 | } | 130 | } |
@@ -311,7 +324,7 @@ cipher_set_key_string(CipherContext *cc, Cipher *cipher, | |||
311 | */ | 324 | */ |
312 | 325 | ||
313 | int | 326 | int |
314 | cipher_get_keyiv_len(CipherContext *cc) | 327 | cipher_get_keyiv_len(const CipherContext *cc) |
315 | { | 328 | { |
316 | Cipher *c = cc->cipher; | 329 | Cipher *c = cc->cipher; |
317 | int ivlen; | 330 | int ivlen; |
@@ -397,12 +410,12 @@ cipher_set_keyiv(CipherContext *cc, u_char *iv) | |||
397 | #endif | 410 | #endif |
398 | 411 | ||
399 | int | 412 | int |
400 | cipher_get_keycontext(CipherContext *cc, u_char *dat) | 413 | cipher_get_keycontext(const CipherContext *cc, u_char *dat) |
401 | { | 414 | { |
402 | Cipher *c = cc->cipher; | 415 | Cipher *c = cc->cipher; |
403 | int plen = 0; | 416 | int plen = 0; |
404 | 417 | ||
405 | if (c->evptype == EVP_rc4) { | 418 | if (c->evptype == EVP_rc4 || c->evptype == EVP_acss) { |
406 | plen = EVP_X_STATE_LEN(cc->evp); | 419 | plen = EVP_X_STATE_LEN(cc->evp); |
407 | if (dat == NULL) | 420 | if (dat == NULL) |
408 | return (plen); | 421 | return (plen); |
@@ -417,7 +430,7 @@ cipher_set_keycontext(CipherContext *cc, u_char *dat) | |||
417 | Cipher *c = cc->cipher; | 430 | Cipher *c = cc->cipher; |
418 | int plen; | 431 | int plen; |
419 | 432 | ||
420 | if (c->evptype == EVP_rc4) { | 433 | if (c->evptype == EVP_rc4 || c->evptype == EVP_acss) { |
421 | plen = EVP_X_STATE_LEN(cc->evp); | 434 | plen = EVP_X_STATE_LEN(cc->evp); |
422 | memcpy(EVP_X_STATE(cc->evp), dat, plen); | 435 | memcpy(EVP_X_STATE(cc->evp), dat, plen); |
423 | } | 436 | } |
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: cipher.h,v 1.33 2002/03/18 17:13:15 markus Exp $ */ | 1 | /* $OpenBSD: cipher.h,v 1.34 2003/11/10 16:23:41 jakob Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> | 4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> |
@@ -79,13 +79,13 @@ void cipher_init(CipherContext *, Cipher *, const u_char *, u_int, | |||
79 | void cipher_crypt(CipherContext *, u_char *, const u_char *, u_int); | 79 | void cipher_crypt(CipherContext *, u_char *, const u_char *, u_int); |
80 | void cipher_cleanup(CipherContext *); | 80 | void cipher_cleanup(CipherContext *); |
81 | void cipher_set_key_string(CipherContext *, Cipher *, const char *, int); | 81 | void cipher_set_key_string(CipherContext *, Cipher *, const char *, int); |
82 | u_int cipher_blocksize(Cipher *); | 82 | u_int cipher_blocksize(const Cipher *); |
83 | u_int cipher_keylen(Cipher *); | 83 | u_int cipher_keylen(const Cipher *); |
84 | 84 | ||
85 | u_int cipher_get_number(Cipher *); | 85 | u_int cipher_get_number(const Cipher *); |
86 | void cipher_get_keyiv(CipherContext *, u_char *, u_int); | 86 | void cipher_get_keyiv(CipherContext *, u_char *, u_int); |
87 | void cipher_set_keyiv(CipherContext *, u_char *); | 87 | void cipher_set_keyiv(CipherContext *, u_char *); |
88 | int cipher_get_keyiv_len(CipherContext *); | 88 | int cipher_get_keyiv_len(const CipherContext *); |
89 | int cipher_get_keycontext(CipherContext *, u_char *); | 89 | int cipher_get_keycontext(const CipherContext *, u_char *); |
90 | void cipher_set_keycontext(CipherContext *, u_char *); | 90 | void cipher_set_keycontext(CipherContext *, u_char *); |
91 | #endif /* CIPHER_H */ | 91 | #endif /* CIPHER_H */ |
diff --git a/cleanup.c b/cleanup.c new file mode 100644 index 000000000..11d1d4d9a --- /dev/null +++ b/cleanup.c | |||
@@ -0,0 +1,26 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2003 Markus Friedl <markus@openbsd.org> | ||
3 | * | ||
4 | * Permission to use, copy, modify, and distribute this software for any | ||
5 | * purpose with or without fee is hereby granted, provided that the above | ||
6 | * copyright notice and this permission notice appear in all copies. | ||
7 | * | ||
8 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||
9 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||
10 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||
11 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
12 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
13 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
14 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
15 | */ | ||
16 | #include "includes.h" | ||
17 | RCSID("$OpenBSD: cleanup.c,v 1.1 2003/09/23 20:17:11 markus Exp $"); | ||
18 | |||
19 | #include "log.h" | ||
20 | |||
21 | /* default implementation */ | ||
22 | void | ||
23 | cleanup_exit(int i) | ||
24 | { | ||
25 | _exit(i); | ||
26 | } | ||
diff --git a/clientloop.c b/clientloop.c index d8def78bd..626b29a5a 100644 --- a/clientloop.c +++ b/clientloop.c | |||
@@ -59,7 +59,7 @@ | |||
59 | */ | 59 | */ |
60 | 60 | ||
61 | #include "includes.h" | 61 | #include "includes.h" |
62 | RCSID("$OpenBSD: clientloop.c,v 1.112 2003/06/28 16:23:06 deraadt Exp $"); | 62 | RCSID("$OpenBSD: clientloop.c,v 1.117 2003/12/16 15:49:51 markus Exp $"); |
63 | 63 | ||
64 | #include "ssh.h" | 64 | #include "ssh.h" |
65 | #include "ssh1.h" | 65 | #include "ssh1.h" |
@@ -89,6 +89,9 @@ extern Options options; | |||
89 | /* Flag indicating that stdin should be redirected from /dev/null. */ | 89 | /* Flag indicating that stdin should be redirected from /dev/null. */ |
90 | extern int stdin_null_flag; | 90 | extern int stdin_null_flag; |
91 | 91 | ||
92 | /* Flag indicating that no shell has been requested */ | ||
93 | extern int no_shell_flag; | ||
94 | |||
92 | /* | 95 | /* |
93 | * Name of the host we are connecting to. This is the name given on the | 96 | * Name of the host we are connecting to. This is the name given on the |
94 | * command line, or the HostName specified for the user-supplied name in a | 97 | * command line, or the HostName specified for the user-supplied name in a |
@@ -124,6 +127,7 @@ static int connection_in; /* Connection to server (input). */ | |||
124 | static int connection_out; /* Connection to server (output). */ | 127 | static int connection_out; /* Connection to server (output). */ |
125 | static int need_rekeying; /* Set to non-zero if rekeying is requested. */ | 128 | static int need_rekeying; /* Set to non-zero if rekeying is requested. */ |
126 | static int session_closed = 0; /* In SSH2: login session closed. */ | 129 | static int session_closed = 0; /* In SSH2: login session closed. */ |
130 | static int server_alive_timeouts = 0; | ||
127 | 131 | ||
128 | static void client_init_dispatch(void); | 132 | static void client_init_dispatch(void); |
129 | int session_ident = -1; | 133 | int session_ident = -1; |
@@ -139,7 +143,6 @@ leave_non_blocking(void) | |||
139 | if (in_non_blocking_mode) { | 143 | if (in_non_blocking_mode) { |
140 | (void) fcntl(fileno(stdin), F_SETFL, 0); | 144 | (void) fcntl(fileno(stdin), F_SETFL, 0); |
141 | in_non_blocking_mode = 0; | 145 | in_non_blocking_mode = 0; |
142 | fatal_remove_cleanup((void (*) (void *)) leave_non_blocking, NULL); | ||
143 | } | 146 | } |
144 | } | 147 | } |
145 | 148 | ||
@@ -150,7 +153,6 @@ enter_non_blocking(void) | |||
150 | { | 153 | { |
151 | in_non_blocking_mode = 1; | 154 | in_non_blocking_mode = 1; |
152 | (void) fcntl(fileno(stdin), F_SETFL, O_NONBLOCK); | 155 | (void) fcntl(fileno(stdin), F_SETFL, O_NONBLOCK); |
153 | fatal_add_cleanup((void (*) (void *)) leave_non_blocking, NULL); | ||
154 | } | 156 | } |
155 | 157 | ||
156 | /* | 158 | /* |
@@ -312,6 +314,24 @@ client_check_window_change(void) | |||
312 | } | 314 | } |
313 | } | 315 | } |
314 | 316 | ||
317 | static void | ||
318 | client_global_request_reply(int type, u_int32_t seq, void *ctxt) | ||
319 | { | ||
320 | server_alive_timeouts = 0; | ||
321 | client_global_request_reply_fwd(type, seq, ctxt); | ||
322 | } | ||
323 | |||
324 | static void | ||
325 | server_alive_check(void) | ||
326 | { | ||
327 | if (++server_alive_timeouts > options.server_alive_count_max) | ||
328 | packet_disconnect("Timeout, server not responding."); | ||
329 | packet_start(SSH2_MSG_GLOBAL_REQUEST); | ||
330 | packet_put_cstring("keepalive@openssh.com"); | ||
331 | packet_put_char(1); /* boolean: want reply */ | ||
332 | packet_send(); | ||
333 | } | ||
334 | |||
315 | /* | 335 | /* |
316 | * Waits until the client can do something (some data becomes available on | 336 | * Waits until the client can do something (some data becomes available on |
317 | * one of the file descriptors). | 337 | * one of the file descriptors). |
@@ -321,6 +341,9 @@ static void | |||
321 | client_wait_until_can_do_something(fd_set **readsetp, fd_set **writesetp, | 341 | client_wait_until_can_do_something(fd_set **readsetp, fd_set **writesetp, |
322 | int *maxfdp, int *nallocp, int rekeying) | 342 | int *maxfdp, int *nallocp, int rekeying) |
323 | { | 343 | { |
344 | struct timeval tv, *tvp; | ||
345 | int ret; | ||
346 | |||
324 | /* Add any selections by the channel mechanism. */ | 347 | /* Add any selections by the channel mechanism. */ |
325 | channel_prepare_select(readsetp, writesetp, maxfdp, nallocp, rekeying); | 348 | channel_prepare_select(readsetp, writesetp, maxfdp, nallocp, rekeying); |
326 | 349 | ||
@@ -362,13 +385,18 @@ client_wait_until_can_do_something(fd_set **readsetp, fd_set **writesetp, | |||
362 | /* | 385 | /* |
363 | * Wait for something to happen. This will suspend the process until | 386 | * Wait for something to happen. This will suspend the process until |
364 | * some selected descriptor can be read, written, or has some other | 387 | * some selected descriptor can be read, written, or has some other |
365 | * event pending. Note: if you want to implement SSH_MSG_IGNORE | 388 | * event pending. |
366 | * messages to fool traffic analysis, this might be the place to do | ||
367 | * it: just have a random timeout for the select, and send a random | ||
368 | * SSH_MSG_IGNORE packet when the timeout expires. | ||
369 | */ | 389 | */ |
370 | 390 | ||
371 | if (select((*maxfdp)+1, *readsetp, *writesetp, NULL, NULL) < 0) { | 391 | if (options.server_alive_interval == 0 || !compat20) |
392 | tvp = NULL; | ||
393 | else { | ||
394 | tv.tv_sec = options.server_alive_interval; | ||
395 | tv.tv_usec = 0; | ||
396 | tvp = &tv; | ||
397 | } | ||
398 | ret = select((*maxfdp)+1, *readsetp, *writesetp, NULL, tvp); | ||
399 | if (ret < 0) { | ||
372 | char buf[100]; | 400 | char buf[100]; |
373 | 401 | ||
374 | /* | 402 | /* |
@@ -385,7 +413,8 @@ client_wait_until_can_do_something(fd_set **readsetp, fd_set **writesetp, | |||
385 | snprintf(buf, sizeof buf, "select: %s\r\n", strerror(errno)); | 413 | snprintf(buf, sizeof buf, "select: %s\r\n", strerror(errno)); |
386 | buffer_append(&stderr_buffer, buf, strlen(buf)); | 414 | buffer_append(&stderr_buffer, buf, strlen(buf)); |
387 | quit_pending = 1; | 415 | quit_pending = 1; |
388 | } | 416 | } else if (ret == 0) |
417 | server_alive_check(); | ||
389 | } | 418 | } |
390 | 419 | ||
391 | static void | 420 | static void |
@@ -844,8 +873,7 @@ client_channel_closed(int id, void *arg) | |||
844 | id, session_ident); | 873 | id, session_ident); |
845 | channel_cancel_cleanup(id); | 874 | channel_cancel_cleanup(id); |
846 | session_closed = 1; | 875 | session_closed = 1; |
847 | if (in_raw_mode()) | 876 | leave_raw_mode(); |
848 | leave_raw_mode(); | ||
849 | } | 877 | } |
850 | 878 | ||
851 | /* | 879 | /* |
@@ -1034,12 +1062,19 @@ client_loop(int have_pty, int escape_char_arg, int ssh2_chan_id) | |||
1034 | if (!isatty(fileno(stderr))) | 1062 | if (!isatty(fileno(stderr))) |
1035 | unset_nonblock(fileno(stderr)); | 1063 | unset_nonblock(fileno(stderr)); |
1036 | 1064 | ||
1037 | if (received_signal) { | 1065 | /* |
1038 | if (in_non_blocking_mode) /* XXX */ | 1066 | * If there was no shell or command requested, there will be no remote |
1039 | leave_non_blocking(); | 1067 | * exit status to be returned. In that case, clear error code if the |
1040 | fatal("Killed by signal %d.", (int) received_signal); | 1068 | * connection was deliberately terminated at this end. |
1069 | */ | ||
1070 | if (no_shell_flag && received_signal == SIGTERM) { | ||
1071 | received_signal = 0; | ||
1072 | exit_status = 0; | ||
1041 | } | 1073 | } |
1042 | 1074 | ||
1075 | if (received_signal) | ||
1076 | fatal("Killed by signal %d.", (int) received_signal); | ||
1077 | |||
1043 | /* | 1078 | /* |
1044 | * In interactive mode (with pseudo tty) display a message indicating | 1079 | * In interactive mode (with pseudo tty) display a message indicating |
1045 | * that the connection has been closed. | 1080 | * that the connection has been closed. |
@@ -1131,6 +1166,46 @@ client_input_exit_status(int type, u_int32_t seq, void *ctxt) | |||
1131 | /* Flag that we want to exit. */ | 1166 | /* Flag that we want to exit. */ |
1132 | quit_pending = 1; | 1167 | quit_pending = 1; |
1133 | } | 1168 | } |
1169 | static void | ||
1170 | client_input_agent_open(int type, u_int32_t seq, void *ctxt) | ||
1171 | { | ||
1172 | Channel *c = NULL; | ||
1173 | int remote_id, sock; | ||
1174 | |||
1175 | /* Read the remote channel number from the message. */ | ||
1176 | remote_id = packet_get_int(); | ||
1177 | packet_check_eom(); | ||
1178 | |||
1179 | /* | ||
1180 | * Get a connection to the local authentication agent (this may again | ||
1181 | * get forwarded). | ||
1182 | */ | ||
1183 | sock = ssh_get_authentication_socket(); | ||
1184 | |||
1185 | /* | ||
1186 | * If we could not connect the agent, send an error message back to | ||
1187 | * the server. This should never happen unless the agent dies, | ||
1188 | * because authentication forwarding is only enabled if we have an | ||
1189 | * agent. | ||
1190 | */ | ||
1191 | if (sock >= 0) { | ||
1192 | c = channel_new("", SSH_CHANNEL_OPEN, sock, sock, | ||
1193 | -1, 0, 0, 0, "authentication agent connection", 1); | ||
1194 | c->remote_id = remote_id; | ||
1195 | c->force_drain = 1; | ||
1196 | } | ||
1197 | if (c == NULL) { | ||
1198 | packet_start(SSH_MSG_CHANNEL_OPEN_FAILURE); | ||
1199 | packet_put_int(remote_id); | ||
1200 | } else { | ||
1201 | /* Send a confirmation to the remote host. */ | ||
1202 | debug("Forwarding authentication connection."); | ||
1203 | packet_start(SSH_MSG_CHANNEL_OPEN_CONFIRMATION); | ||
1204 | packet_put_int(remote_id); | ||
1205 | packet_put_int(c->self); | ||
1206 | } | ||
1207 | packet_send(); | ||
1208 | } | ||
1134 | 1209 | ||
1135 | static Channel * | 1210 | static Channel * |
1136 | client_request_forwarded_tcpip(const char *request_type, int rchan) | 1211 | client_request_forwarded_tcpip(const char *request_type, int rchan) |
@@ -1318,7 +1393,8 @@ client_input_global_request(int type, u_int32_t seq, void *ctxt) | |||
1318 | 1393 | ||
1319 | rtype = packet_get_string(NULL); | 1394 | rtype = packet_get_string(NULL); |
1320 | want_reply = packet_get_char(); | 1395 | want_reply = packet_get_char(); |
1321 | debug("client_input_global_request: rtype %s want_reply %d", rtype, want_reply); | 1396 | debug("client_input_global_request: rtype %s want_reply %d", |
1397 | rtype, want_reply); | ||
1322 | if (want_reply) { | 1398 | if (want_reply) { |
1323 | packet_start(success ? | 1399 | packet_start(success ? |
1324 | SSH2_MSG_REQUEST_SUCCESS : SSH2_MSG_REQUEST_FAILURE); | 1400 | SSH2_MSG_REQUEST_SUCCESS : SSH2_MSG_REQUEST_FAILURE); |
@@ -1366,7 +1442,7 @@ client_init_dispatch_13(void) | |||
1366 | dispatch_set(SSH_SMSG_STDOUT_DATA, &client_input_stdout_data); | 1442 | dispatch_set(SSH_SMSG_STDOUT_DATA, &client_input_stdout_data); |
1367 | 1443 | ||
1368 | dispatch_set(SSH_SMSG_AGENT_OPEN, options.forward_agent ? | 1444 | dispatch_set(SSH_SMSG_AGENT_OPEN, options.forward_agent ? |
1369 | &auth_input_open_request : &deny_input_open); | 1445 | &client_input_agent_open : &deny_input_open); |
1370 | dispatch_set(SSH_SMSG_X11_OPEN, options.forward_x11 ? | 1446 | dispatch_set(SSH_SMSG_X11_OPEN, options.forward_x11 ? |
1371 | &x11_input_open : &deny_input_open); | 1447 | &x11_input_open : &deny_input_open); |
1372 | } | 1448 | } |
@@ -1387,3 +1463,12 @@ client_init_dispatch(void) | |||
1387 | else | 1463 | else |
1388 | client_init_dispatch_15(); | 1464 | client_init_dispatch_15(); |
1389 | } | 1465 | } |
1466 | |||
1467 | /* client specific fatal cleanup */ | ||
1468 | void | ||
1469 | cleanup_exit(int i) | ||
1470 | { | ||
1471 | leave_raw_mode(); | ||
1472 | leave_non_blocking(); | ||
1473 | _exit(i); | ||
1474 | } | ||
diff --git a/clientloop.h b/clientloop.h index 8056a40c3..56af06bc1 100644 --- a/clientloop.h +++ b/clientloop.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: clientloop.h,v 1.7 2002/04/22 21:04:52 markus Exp $ */ | 1 | /* $OpenBSD: clientloop.h,v 1.8 2003/12/16 15:49:51 markus Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> | 4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> |
@@ -37,4 +37,4 @@ | |||
37 | 37 | ||
38 | /* Client side main loop for the interactive session. */ | 38 | /* Client side main loop for the interactive session. */ |
39 | int client_loop(int, int, int); | 39 | int client_loop(int, int, int); |
40 | void client_global_request_reply(int type, u_int32_t seq, void *ctxt); | 40 | void client_global_request_reply_fwd(int, u_int32_t, void *); |
@@ -23,7 +23,7 @@ | |||
23 | */ | 23 | */ |
24 | 24 | ||
25 | #include "includes.h" | 25 | #include "includes.h" |
26 | RCSID("$OpenBSD: compat.c,v 1.69 2003/08/29 10:03:15 markus Exp $"); | 26 | RCSID("$OpenBSD: compat.c,v 1.70 2003/11/02 11:01:03 markus Exp $"); |
27 | 27 | ||
28 | #include "buffer.h" | 28 | #include "buffer.h" |
29 | #include "packet.h" | 29 | #include "packet.h" |
@@ -79,11 +79,7 @@ compat_datafellows(const char *version) | |||
79 | { "OpenSSH_2.5.3*", SSH_BUG_NOREKEY|SSH_BUG_EXTEOF}, | 79 | { "OpenSSH_2.5.3*", SSH_BUG_NOREKEY|SSH_BUG_EXTEOF}, |
80 | { "OpenSSH_2.*," | 80 | { "OpenSSH_2.*," |
81 | "OpenSSH_3.0*," | 81 | "OpenSSH_3.0*," |
82 | "OpenSSH_3.1*", SSH_BUG_EXTEOF|SSH_BUG_GSSAPI_BER}, | 82 | "OpenSSH_3.1*", SSH_BUG_EXTEOF}, |
83 | { "OpenSSH_3.2*," | ||
84 | "OpenSSH_3.3*," | ||
85 | "OpenSSH_3.4*," | ||
86 | "OpenSSH_3.5*", SSH_BUG_GSSAPI_BER}, | ||
87 | { "Sun_SSH_1.0*", SSH_BUG_NOREKEY|SSH_BUG_EXTEOF}, | 83 | { "Sun_SSH_1.0*", SSH_BUG_NOREKEY|SSH_BUG_EXTEOF}, |
88 | { "OpenSSH*", 0 }, | 84 | { "OpenSSH*", 0 }, |
89 | { "*MindTerm*", 0 }, | 85 | { "*MindTerm*", 0 }, |
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: compat.h,v 1.36 2003/08/29 10:03:15 markus Exp $ */ | 1 | /* $OpenBSD: compat.h,v 1.37 2003/11/02 11:01:03 markus Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 1999, 2000, 2001 Markus Friedl. All rights reserved. | 4 | * Copyright (c) 1999, 2000, 2001 Markus Friedl. All rights reserved. |
@@ -55,7 +55,6 @@ | |||
55 | #define SSH_BUG_EXTEOF 0x00200000 | 55 | #define SSH_BUG_EXTEOF 0x00200000 |
56 | #define SSH_BUG_PROBE 0x00400000 | 56 | #define SSH_BUG_PROBE 0x00400000 |
57 | #define SSH_BUG_FIRSTKEX 0x00800000 | 57 | #define SSH_BUG_FIRSTKEX 0x00800000 |
58 | #define SSH_BUG_GSSAPI_BER 0x01000000 | ||
59 | 58 | ||
60 | void enable_compat13(void); | 59 | void enable_compat13(void); |
61 | void enable_compat20(void); | 60 | void enable_compat20(void); |
diff --git a/compress.c b/compress.c index 85a361d3a..0d1c7e55e 100644 --- a/compress.c +++ b/compress.c | |||
@@ -12,7 +12,7 @@ | |||
12 | */ | 12 | */ |
13 | 13 | ||
14 | #include "includes.h" | 14 | #include "includes.h" |
15 | RCSID("$OpenBSD: compress.c,v 1.19 2002/03/18 17:31:54 provos Exp $"); | 15 | RCSID("$OpenBSD: compress.c,v 1.21 2004/01/13 19:45:15 markus Exp $"); |
16 | 16 | ||
17 | #include "log.h" | 17 | #include "log.h" |
18 | #include "buffer.h" | 18 | #include "buffer.h" |
@@ -56,12 +56,14 @@ buffer_compress_init_recv(void) | |||
56 | void | 56 | void |
57 | buffer_compress_uninit(void) | 57 | buffer_compress_uninit(void) |
58 | { | 58 | { |
59 | debug("compress outgoing: raw data %lu, compressed %lu, factor %.2f", | 59 | debug("compress outgoing: raw data %llu, compressed %llu, factor %.2f", |
60 | outgoing_stream.total_in, outgoing_stream.total_out, | 60 | (unsigned long long)outgoing_stream.total_in, |
61 | (unsigned long long)outgoing_stream.total_out, | ||
61 | outgoing_stream.total_in == 0 ? 0.0 : | 62 | outgoing_stream.total_in == 0 ? 0.0 : |
62 | (double) outgoing_stream.total_out / outgoing_stream.total_in); | 63 | (double) outgoing_stream.total_out / outgoing_stream.total_in); |
63 | debug("compress incoming: raw data %lu, compressed %lu, factor %.2f", | 64 | debug("compress incoming: raw data %llu, compressed %llu, factor %.2f", |
64 | incoming_stream.total_out, incoming_stream.total_in, | 65 | (unsigned long long)incoming_stream.total_out, |
66 | (unsigned long long)incoming_stream.total_in, | ||
65 | incoming_stream.total_out == 0 ? 0.0 : | 67 | incoming_stream.total_out == 0 ? 0.0 : |
66 | (double) incoming_stream.total_in / incoming_stream.total_out); | 68 | (double) incoming_stream.total_in / incoming_stream.total_out); |
67 | if (compress_init_recv_called == 1 && inflate_failed == 0) | 69 | if (compress_init_recv_called == 1 && inflate_failed == 0) |
diff --git a/config.guess b/config.guess index e8f206123..3fe4d4f35 100755 --- a/config.guess +++ b/config.guess | |||
@@ -174,7 +174,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in | |||
174 | fi | 174 | fi |
175 | ;; | 175 | ;; |
176 | *) | 176 | *) |
177 | os=netbsd | 177 | os=netbsd |
178 | ;; | 178 | ;; |
179 | esac | 179 | esac |
180 | # The OS release | 180 | # The OS release |
@@ -382,23 +382,23 @@ EOF | |||
382 | # MiNT. But MiNT is downward compatible to TOS, so this should | 382 | # MiNT. But MiNT is downward compatible to TOS, so this should |
383 | # be no problem. | 383 | # be no problem. |
384 | atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) | 384 | atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) |
385 | echo m68k-atari-mint${UNAME_RELEASE} | 385 | echo m68k-atari-mint${UNAME_RELEASE} |
386 | exit 0 ;; | 386 | exit 0 ;; |
387 | atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) | 387 | atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) |
388 | echo m68k-atari-mint${UNAME_RELEASE} | 388 | echo m68k-atari-mint${UNAME_RELEASE} |
389 | exit 0 ;; | 389 | exit 0 ;; |
390 | *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) | 390 | *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) |
391 | echo m68k-atari-mint${UNAME_RELEASE} | 391 | echo m68k-atari-mint${UNAME_RELEASE} |
392 | exit 0 ;; | 392 | exit 0 ;; |
393 | milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) | 393 | milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) |
394 | echo m68k-milan-mint${UNAME_RELEASE} | 394 | echo m68k-milan-mint${UNAME_RELEASE} |
395 | exit 0 ;; | 395 | exit 0 ;; |
396 | hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) | 396 | hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) |
397 | echo m68k-hades-mint${UNAME_RELEASE} | 397 | echo m68k-hades-mint${UNAME_RELEASE} |
398 | exit 0 ;; | 398 | exit 0 ;; |
399 | *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) | 399 | *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) |
400 | echo m68k-unknown-mint${UNAME_RELEASE} | 400 | echo m68k-unknown-mint${UNAME_RELEASE} |
401 | exit 0 ;; | 401 | exit 0 ;; |
402 | powerpc:machten:*:*) | 402 | powerpc:machten:*:*) |
403 | echo powerpc-apple-machten${UNAME_RELEASE} | 403 | echo powerpc-apple-machten${UNAME_RELEASE} |
404 | exit 0 ;; | 404 | exit 0 ;; |
@@ -462,8 +462,8 @@ EOF | |||
462 | echo m88k-motorola-sysv3 | 462 | echo m88k-motorola-sysv3 |
463 | exit 0 ;; | 463 | exit 0 ;; |
464 | AViiON:dgux:*:*) | 464 | AViiON:dgux:*:*) |
465 | # DG/UX returns AViiON for all architectures | 465 | # DG/UX returns AViiON for all architectures |
466 | UNAME_PROCESSOR=`/usr/bin/uname -p` | 466 | UNAME_PROCESSOR=`/usr/bin/uname -p` |
467 | if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] | 467 | if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] |
468 | then | 468 | then |
469 | if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ | 469 | if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ |
@@ -476,7 +476,7 @@ EOF | |||
476 | else | 476 | else |
477 | echo i586-dg-dgux${UNAME_RELEASE} | 477 | echo i586-dg-dgux${UNAME_RELEASE} |
478 | fi | 478 | fi |
479 | exit 0 ;; | 479 | exit 0 ;; |
480 | M88*:DolphinOS:*:*) # DolphinOS (SVR3) | 480 | M88*:DolphinOS:*:*) # DolphinOS (SVR3) |
481 | echo m88k-dolphin-sysv3 | 481 | echo m88k-dolphin-sysv3 |
482 | exit 0 ;; | 482 | exit 0 ;; |
@@ -573,52 +573,52 @@ EOF | |||
573 | 9000/[678][0-9][0-9]) | 573 | 9000/[678][0-9][0-9]) |
574 | if [ -x /usr/bin/getconf ]; then | 574 | if [ -x /usr/bin/getconf ]; then |
575 | sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` | 575 | sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` |
576 | sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` | 576 | sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` |
577 | case "${sc_cpu_version}" in | 577 | case "${sc_cpu_version}" in |
578 | 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 | 578 | 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 |
579 | 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 | 579 | 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 |
580 | 532) # CPU_PA_RISC2_0 | 580 | 532) # CPU_PA_RISC2_0 |
581 | case "${sc_kernel_bits}" in | 581 | case "${sc_kernel_bits}" in |
582 | 32) HP_ARCH="hppa2.0n" ;; | 582 | 32) HP_ARCH="hppa2.0n" ;; |
583 | 64) HP_ARCH="hppa2.0w" ;; | 583 | 64) HP_ARCH="hppa2.0w" ;; |
584 | '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 | 584 | '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 |
585 | esac ;; | 585 | esac ;; |
586 | esac | 586 | esac |
587 | fi | 587 | fi |
588 | if [ "${HP_ARCH}" = "" ]; then | 588 | if [ "${HP_ARCH}" = "" ]; then |
589 | eval $set_cc_for_build | 589 | eval $set_cc_for_build |
590 | sed 's/^ //' << EOF >$dummy.c | 590 | sed 's/^ //' << EOF >$dummy.c |
591 | 591 | ||
592 | #define _HPUX_SOURCE | 592 | #define _HPUX_SOURCE |
593 | #include <stdlib.h> | 593 | #include <stdlib.h> |
594 | #include <unistd.h> | 594 | #include <unistd.h> |
595 | 595 | ||
596 | int main () | 596 | int main () |
597 | { | 597 | { |
598 | #if defined(_SC_KERNEL_BITS) | 598 | #if defined(_SC_KERNEL_BITS) |
599 | long bits = sysconf(_SC_KERNEL_BITS); | 599 | long bits = sysconf(_SC_KERNEL_BITS); |
600 | #endif | 600 | #endif |
601 | long cpu = sysconf (_SC_CPU_VERSION); | 601 | long cpu = sysconf (_SC_CPU_VERSION); |
602 | 602 | ||
603 | switch (cpu) | 603 | switch (cpu) |
604 | { | 604 | { |
605 | case CPU_PA_RISC1_0: puts ("hppa1.0"); break; | 605 | case CPU_PA_RISC1_0: puts ("hppa1.0"); break; |
606 | case CPU_PA_RISC1_1: puts ("hppa1.1"); break; | 606 | case CPU_PA_RISC1_1: puts ("hppa1.1"); break; |
607 | case CPU_PA_RISC2_0: | 607 | case CPU_PA_RISC2_0: |
608 | #if defined(_SC_KERNEL_BITS) | 608 | #if defined(_SC_KERNEL_BITS) |
609 | switch (bits) | 609 | switch (bits) |
610 | { | 610 | { |
611 | case 64: puts ("hppa2.0w"); break; | 611 | case 64: puts ("hppa2.0w"); break; |
612 | case 32: puts ("hppa2.0n"); break; | 612 | case 32: puts ("hppa2.0n"); break; |
613 | default: puts ("hppa2.0"); break; | 613 | default: puts ("hppa2.0"); break; |
614 | } break; | 614 | } break; |
615 | #else /* !defined(_SC_KERNEL_BITS) */ | 615 | #else /* !defined(_SC_KERNEL_BITS) */ |
616 | puts ("hppa2.0"); break; | 616 | puts ("hppa2.0"); break; |
617 | #endif | 617 | #endif |
618 | default: puts ("hppa1.0"); break; | 618 | default: puts ("hppa1.0"); break; |
619 | } | 619 | } |
620 | exit (0); | 620 | exit (0); |
621 | } | 621 | } |
622 | EOF | 622 | EOF |
623 | (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null) && HP_ARCH=`$dummy` | 623 | (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null) && HP_ARCH=`$dummy` |
624 | if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi | 624 | if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi |
@@ -689,22 +689,22 @@ EOF | |||
689 | exit 0 ;; | 689 | exit 0 ;; |
690 | C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) | 690 | C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) |
691 | echo c1-convex-bsd | 691 | echo c1-convex-bsd |
692 | exit 0 ;; | 692 | exit 0 ;; |
693 | C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) | 693 | C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) |
694 | if getsysinfo -f scalar_acc | 694 | if getsysinfo -f scalar_acc |
695 | then echo c32-convex-bsd | 695 | then echo c32-convex-bsd |
696 | else echo c2-convex-bsd | 696 | else echo c2-convex-bsd |
697 | fi | 697 | fi |
698 | exit 0 ;; | 698 | exit 0 ;; |
699 | C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) | 699 | C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) |
700 | echo c34-convex-bsd | 700 | echo c34-convex-bsd |
701 | exit 0 ;; | 701 | exit 0 ;; |
702 | C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) | 702 | C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) |
703 | echo c38-convex-bsd | 703 | echo c38-convex-bsd |
704 | exit 0 ;; | 704 | exit 0 ;; |
705 | C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) | 705 | C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) |
706 | echo c4-convex-bsd | 706 | echo c4-convex-bsd |
707 | exit 0 ;; | 707 | exit 0 ;; |
708 | CRAY*Y-MP:*:*:*) | 708 | CRAY*Y-MP:*:*:*) |
709 | echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' | 709 | echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' |
710 | exit 0 ;; | 710 | exit 0 ;; |
@@ -731,10 +731,10 @@ EOF | |||
731 | exit 0 ;; | 731 | exit 0 ;; |
732 | F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) | 732 | F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) |
733 | FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` | 733 | FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` |
734 | FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` | 734 | FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` |
735 | FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` | 735 | FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` |
736 | echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" | 736 | echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" |
737 | exit 0 ;; | 737 | exit 0 ;; |
738 | i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) | 738 | i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) |
739 | echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} | 739 | echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} |
740 | exit 0 ;; | 740 | exit 0 ;; |
@@ -836,7 +836,7 @@ EOF | |||
836 | EV6) UNAME_MACHINE=alphaev6 ;; | 836 | EV6) UNAME_MACHINE=alphaev6 ;; |
837 | EV67) UNAME_MACHINE=alphaev67 ;; | 837 | EV67) UNAME_MACHINE=alphaev67 ;; |
838 | EV68*) UNAME_MACHINE=alphaev68 ;; | 838 | EV68*) UNAME_MACHINE=alphaev68 ;; |
839 | esac | 839 | esac |
840 | objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null | 840 | objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null |
841 | if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi | 841 | if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi |
842 | echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} | 842 | echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} |
@@ -875,7 +875,7 @@ EOF | |||
875 | s/.*supported targets: *// | 875 | s/.*supported targets: *// |
876 | s/ .*// | 876 | s/ .*// |
877 | p'` | 877 | p'` |
878 | case "$ld_supported_targets" in | 878 | case "$ld_supported_targets" in |
879 | elf32-i386) | 879 | elf32-i386) |
880 | TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" | 880 | TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" |
881 | ;; | 881 | ;; |
@@ -925,11 +925,11 @@ EOF | |||
925 | echo i386-sequent-sysv4 | 925 | echo i386-sequent-sysv4 |
926 | exit 0 ;; | 926 | exit 0 ;; |
927 | i*86:UNIX_SV:4.2MP:2.*) | 927 | i*86:UNIX_SV:4.2MP:2.*) |
928 | # Unixware is an offshoot of SVR4, but it has its own version | 928 | # Unixware is an offshoot of SVR4, but it has its own version |
929 | # number series starting with 2... | 929 | # number series starting with 2... |
930 | # I am not positive that other SVR4 systems won't match this, | 930 | # I am not positive that other SVR4 systems won't match this, |
931 | # I just have to hope. -- rms. | 931 | # I just have to hope. -- rms. |
932 | # Use sysv4.2uw... so that sysv4* matches it. | 932 | # Use sysv4.2uw... so that sysv4* matches it. |
933 | echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} | 933 | echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} |
934 | exit 0 ;; | 934 | exit 0 ;; |
935 | i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) | 935 | i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) |
@@ -971,10 +971,10 @@ EOF | |||
971 | exit 0 ;; | 971 | exit 0 ;; |
972 | pc:*:*:*) | 972 | pc:*:*:*) |
973 | # Left here for compatibility: | 973 | # Left here for compatibility: |
974 | # uname -m prints for DJGPP always 'pc', but it prints nothing about | 974 | # uname -m prints for DJGPP always 'pc', but it prints nothing about |
975 | # the processor, so we play safe by assuming i386. | 975 | # the processor, so we play safe by assuming i386. |
976 | echo i386-pc-msdosdjgpp | 976 | echo i386-pc-msdosdjgpp |
977 | exit 0 ;; | 977 | exit 0 ;; |
978 | Intel:Mach:3*:*) | 978 | Intel:Mach:3*:*) |
979 | echo i386-pc-mach3 | 979 | echo i386-pc-mach3 |
980 | exit 0 ;; | 980 | exit 0 ;; |
@@ -1003,8 +1003,8 @@ EOF | |||
1003 | /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ | 1003 | /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ |
1004 | && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; | 1004 | && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; |
1005 | 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) | 1005 | 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) |
1006 | /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ | 1006 | /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ |
1007 | && echo i486-ncr-sysv4 && exit 0 ;; | 1007 | && echo i486-ncr-sysv4 && exit 0 ;; |
1008 | m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) | 1008 | m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) |
1009 | echo m68k-unknown-lynxos${UNAME_RELEASE} | 1009 | echo m68k-unknown-lynxos${UNAME_RELEASE} |
1010 | exit 0 ;; | 1010 | exit 0 ;; |
@@ -1041,9 +1041,9 @@ EOF | |||
1041 | fi | 1041 | fi |
1042 | exit 0 ;; | 1042 | exit 0 ;; |
1043 | PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort | 1043 | PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort |
1044 | # says <Richard.M.Bartel@ccMail.Census.GOV> | 1044 | # says <Richard.M.Bartel@ccMail.Census.GOV> |
1045 | echo i586-unisys-sysv4 | 1045 | echo i586-unisys-sysv4 |
1046 | exit 0 ;; | 1046 | exit 0 ;; |
1047 | *:UNIX_System_V:4*:FTX*) | 1047 | *:UNIX_System_V:4*:FTX*) |
1048 | # From Gerald Hewes <hewes@openmarket.com>. | 1048 | # From Gerald Hewes <hewes@openmarket.com>. |
1049 | # How about differentiating between stratus architectures? -djm | 1049 | # How about differentiating between stratus architectures? -djm |
@@ -1065,11 +1065,11 @@ EOF | |||
1065 | exit 0 ;; | 1065 | exit 0 ;; |
1066 | R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) | 1066 | R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) |
1067 | if [ -d /usr/nec ]; then | 1067 | if [ -d /usr/nec ]; then |
1068 | echo mips-nec-sysv${UNAME_RELEASE} | 1068 | echo mips-nec-sysv${UNAME_RELEASE} |
1069 | else | 1069 | else |
1070 | echo mips-unknown-sysv${UNAME_RELEASE} | 1070 | echo mips-unknown-sysv${UNAME_RELEASE} |
1071 | fi | 1071 | fi |
1072 | exit 0 ;; | 1072 | exit 0 ;; |
1073 | BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. | 1073 | BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. |
1074 | echo powerpc-be-beos | 1074 | echo powerpc-be-beos |
1075 | exit 0 ;; | 1075 | exit 0 ;; |
@@ -1179,11 +1179,11 @@ main () | |||
1179 | #include <sys/param.h> | 1179 | #include <sys/param.h> |
1180 | printf ("m68k-sony-newsos%s\n", | 1180 | printf ("m68k-sony-newsos%s\n", |
1181 | #ifdef NEWSOS4 | 1181 | #ifdef NEWSOS4 |
1182 | "4" | 1182 | "4" |
1183 | #else | 1183 | #else |
1184 | "" | 1184 | "" |
1185 | #endif | 1185 | #endif |
1186 | ); exit (0); | 1186 | ); exit (0); |
1187 | #endif | 1187 | #endif |
1188 | #endif | 1188 | #endif |
1189 | 1189 | ||
diff --git a/config.h.in b/config.h.in index 55536286a..32622dc5f 100644 --- a/config.h.in +++ b/config.h.in | |||
@@ -1,5 +1,5 @@ | |||
1 | /* config.h.in. Generated automatically from configure.ac by autoheader. */ | 1 | /* config.h.in. Generated automatically from configure.ac by autoheader. */ |
2 | /* $Id: acconfig.h,v 1.166 2003/09/16 01:52:19 dtucker Exp $ */ | 2 | /* $Id: acconfig.h,v 1.173 2004/02/06 05:24:31 dtucker Exp $ */ |
3 | 3 | ||
4 | /* | 4 | /* |
5 | * Copyright (c) 1999-2003 Damien Miller. All rights reserved. | 5 | * Copyright (c) 1999-2003 Damien Miller. All rights reserved. |
@@ -42,6 +42,12 @@ | |||
42 | /* Define if your setregid() is broken */ | 42 | /* Define if your setregid() is broken */ |
43 | #undef BROKEN_SETREGID | 43 | #undef BROKEN_SETREGID |
44 | 44 | ||
45 | /* Define if your setresuid() is broken */ | ||
46 | #undef BROKEN_SETRESUID | ||
47 | |||
48 | /* Define if your setresgid() is broken */ | ||
49 | #undef BROKEN_SETRESGID | ||
50 | |||
45 | /* Define to a Set Process Title type if your system is */ | 51 | /* Define to a Set Process Title type if your system is */ |
46 | /* supported by bsd-setproctitle.c */ | 52 | /* supported by bsd-setproctitle.c */ |
47 | #undef SPT_TYPE | 53 | #undef SPT_TYPE |
@@ -60,6 +66,9 @@ | |||
60 | /* from environment and PATH */ | 66 | /* from environment and PATH */ |
61 | #undef LOGIN_PROGRAM_FALLBACK | 67 | #undef LOGIN_PROGRAM_FALLBACK |
62 | 68 | ||
69 | /* Full path of your "passwd" program */ | ||
70 | #undef _PATH_PASSWD_PROG | ||
71 | |||
63 | /* Define if your password has a pw_class field */ | 72 | /* Define if your password has a pw_class field */ |
64 | #undef HAVE_PW_CLASS_IN_PASSWD | 73 | #undef HAVE_PW_CLASS_IN_PASSWD |
65 | 74 | ||
@@ -90,6 +99,9 @@ | |||
90 | /* Define if you have the getuserattr function. */ | 99 | /* Define if you have the getuserattr function. */ |
91 | #undef HAVE_GETUSERATTR | 100 | #undef HAVE_GETUSERATTR |
92 | 101 | ||
102 | /* Define if you have the basename function. */ | ||
103 | #undef HAVE_BASENAME | ||
104 | |||
93 | /* Work around problematic Linux PAM modules handling of PAM_TTY */ | 105 | /* Work around problematic Linux PAM modules handling of PAM_TTY */ |
94 | #undef PAM_TTY_KLUDGE | 106 | #undef PAM_TTY_KLUDGE |
95 | 107 | ||
@@ -248,6 +260,9 @@ | |||
248 | /* Define this if you are using the Heimdal version of Kerberos V5 */ | 260 | /* Define this if you are using the Heimdal version of Kerberos V5 */ |
249 | #undef HEIMDAL | 261 | #undef HEIMDAL |
250 | 262 | ||
263 | /* Define this if you want to use libkafs' AFS support */ | ||
264 | #undef USE_AFS | ||
265 | |||
251 | /* Define if you want S/Key support */ | 266 | /* Define if you want S/Key support */ |
252 | #undef SKEY | 267 | #undef SKEY |
253 | 268 | ||
@@ -416,15 +431,15 @@ | |||
416 | #undef LOCKED_PASSWD_PREFIX | 431 | #undef LOCKED_PASSWD_PREFIX |
417 | #undef LOCKED_PASSWD_SUBSTR | 432 | #undef LOCKED_PASSWD_SUBSTR |
418 | 433 | ||
419 | /* Define if DNS support is to be activated */ | ||
420 | #undef DNS | ||
421 | |||
422 | /* Define if getrrsetbyname() exists */ | 434 | /* Define if getrrsetbyname() exists */ |
423 | #undef HAVE_GETRRSETBYNAME | 435 | #undef HAVE_GETRRSETBYNAME |
424 | 436 | ||
425 | /* Define if HEADER.ad exists in arpa/nameser.h */ | 437 | /* Define if HEADER.ad exists in arpa/nameser.h */ |
426 | #undef HAVE_HEADER_AD | 438 | #undef HAVE_HEADER_AD |
427 | 439 | ||
440 | /* Define if your resolver libs need this for getrrsetbyname */ | ||
441 | #undef BIND_8_COMPAT | ||
442 | |||
428 | 443 | ||
429 | /* Define if the `getpgrp' function takes no argument. */ | 444 | /* Define if the `getpgrp' function takes no argument. */ |
430 | #undef GETPGRP_VOID | 445 | #undef GETPGRP_VOID |
@@ -438,9 +453,6 @@ | |||
438 | /* Define if you have the `b64_pton' function. */ | 453 | /* Define if you have the `b64_pton' function. */ |
439 | #undef HAVE_B64_PTON | 454 | #undef HAVE_B64_PTON |
440 | 455 | ||
441 | /* Define if you have the `basename' function. */ | ||
442 | #undef HAVE_BASENAME | ||
443 | |||
444 | /* Define if you have the `bcopy' function. */ | 456 | /* Define if you have the `bcopy' function. */ |
445 | #undef HAVE_BCOPY | 457 | #undef HAVE_BCOPY |
446 | 458 | ||
@@ -555,9 +567,24 @@ | |||
555 | /* Define if you have the <glob.h> header file. */ | 567 | /* Define if you have the <glob.h> header file. */ |
556 | #undef HAVE_GLOB_H | 568 | #undef HAVE_GLOB_H |
557 | 569 | ||
570 | /* Define if you have the <gssapi_generic.h> header file. */ | ||
571 | #undef HAVE_GSSAPI_GENERIC_H | ||
572 | |||
573 | /* Define if you have the <gssapi/gssapi_generic.h> header file. */ | ||
574 | #undef HAVE_GSSAPI_GSSAPI_GENERIC_H | ||
575 | |||
576 | /* Define if you have the <gssapi/gssapi.h> header file. */ | ||
577 | #undef HAVE_GSSAPI_GSSAPI_H | ||
578 | |||
579 | /* Define if you have the <gssapi/gssapi_krb5.h> header file. */ | ||
580 | #undef HAVE_GSSAPI_GSSAPI_KRB5_H | ||
581 | |||
558 | /* Define if you have the <gssapi.h> header file. */ | 582 | /* Define if you have the <gssapi.h> header file. */ |
559 | #undef HAVE_GSSAPI_H | 583 | #undef HAVE_GSSAPI_H |
560 | 584 | ||
585 | /* Define if you have the <gssapi_krb5.h> header file. */ | ||
586 | #undef HAVE_GSSAPI_KRB5_H | ||
587 | |||
561 | /* Define if you have the <ia.h> header file. */ | 588 | /* Define if you have the <ia.h> header file. */ |
562 | #undef HAVE_IA_H | 589 | #undef HAVE_IA_H |
563 | 590 | ||
@@ -672,6 +699,9 @@ | |||
672 | /* Define if you have the `pam_getenvlist' function. */ | 699 | /* Define if you have the `pam_getenvlist' function. */ |
673 | #undef HAVE_PAM_GETENVLIST | 700 | #undef HAVE_PAM_GETENVLIST |
674 | 701 | ||
702 | /* Define if you have the <pam/pam_appl.h> header file. */ | ||
703 | #undef HAVE_PAM_PAM_APPL_H | ||
704 | |||
675 | /* Define if you have the `pam_putenv' function. */ | 705 | /* Define if you have the `pam_putenv' function. */ |
676 | #undef HAVE_PAM_PUTENV | 706 | #undef HAVE_PAM_PUTENV |
677 | 707 | ||
@@ -828,6 +858,9 @@ | |||
828 | /* Define if you have the `strsep' function. */ | 858 | /* Define if you have the `strsep' function. */ |
829 | #undef HAVE_STRSEP | 859 | #undef HAVE_STRSEP |
830 | 860 | ||
861 | /* Define if you have the `strtoul' function. */ | ||
862 | #undef HAVE_STRTOUL | ||
863 | |||
831 | /* Define if `st_blksize' is member of `struct stat'. */ | 864 | /* Define if `st_blksize' is member of `struct stat'. */ |
832 | #undef HAVE_STRUCT_STAT_ST_BLKSIZE | 865 | #undef HAVE_STRUCT_STAT_ST_BLKSIZE |
833 | 866 | ||
@@ -855,12 +888,18 @@ | |||
855 | /* Define if you have the <sys/pstat.h> header file. */ | 888 | /* Define if you have the <sys/pstat.h> header file. */ |
856 | #undef HAVE_SYS_PSTAT_H | 889 | #undef HAVE_SYS_PSTAT_H |
857 | 890 | ||
891 | /* Define if you have the <sys/ptms.h> header file. */ | ||
892 | #undef HAVE_SYS_PTMS_H | ||
893 | |||
858 | /* Define if you have the <sys/select.h> header file. */ | 894 | /* Define if you have the <sys/select.h> header file. */ |
859 | #undef HAVE_SYS_SELECT_H | 895 | #undef HAVE_SYS_SELECT_H |
860 | 896 | ||
861 | /* Define if you have the <sys/stat.h> header file. */ | 897 | /* Define if you have the <sys/stat.h> header file. */ |
862 | #undef HAVE_SYS_STAT_H | 898 | #undef HAVE_SYS_STAT_H |
863 | 899 | ||
900 | /* Define if you have the <sys/stream.h> header file. */ | ||
901 | #undef HAVE_SYS_STREAM_H | ||
902 | |||
864 | /* Define if you have the <sys/stropts.h> header file. */ | 903 | /* Define if you have the <sys/stropts.h> header file. */ |
865 | #undef HAVE_SYS_STROPTS_H | 904 | #undef HAVE_SYS_STROPTS_H |
866 | 905 | ||
@@ -909,6 +948,9 @@ | |||
909 | /* Define if you have the `updwtmp' function. */ | 948 | /* Define if you have the `updwtmp' function. */ |
910 | #undef HAVE_UPDWTMP | 949 | #undef HAVE_UPDWTMP |
911 | 950 | ||
951 | /* Define if you have the `updwtmpx' function. */ | ||
952 | #undef HAVE_UPDWTMPX | ||
953 | |||
912 | /* Define if you have the <usersec.h> header file. */ | 954 | /* Define if you have the <usersec.h> header file. */ |
913 | #undef HAVE_USERSEC_H | 955 | #undef HAVE_USERSEC_H |
914 | 956 | ||
diff --git a/config.sub b/config.sub index a0b7bb9e8..75a74f78e 100755 --- a/config.sub +++ b/config.sub | |||
@@ -162,10 +162,10 @@ case $os in | |||
162 | os=-chorusos | 162 | os=-chorusos |
163 | basic_machine=$1 | 163 | basic_machine=$1 |
164 | ;; | 164 | ;; |
165 | -chorusrdb) | 165 | -chorusrdb) |
166 | os=-chorusrdb | 166 | os=-chorusrdb |
167 | basic_machine=$1 | 167 | basic_machine=$1 |
168 | ;; | 168 | ;; |
169 | -hiux*) | 169 | -hiux*) |
170 | os=-hiuxwe2 | 170 | os=-hiuxwe2 |
171 | ;; | 171 | ;; |
@@ -748,7 +748,7 @@ case $basic_machine in | |||
748 | pbb) | 748 | pbb) |
749 | basic_machine=m68k-tti | 749 | basic_machine=m68k-tti |
750 | ;; | 750 | ;; |
751 | pc532 | pc532-*) | 751 | pc532 | pc532-*) |
752 | basic_machine=ns32k-pc532 | 752 | basic_machine=ns32k-pc532 |
753 | ;; | 753 | ;; |
754 | pentium | p5 | k5 | k6 | nexgen | viac3) | 754 | pentium | p5 | k5 | k6 | nexgen | viac3) |
@@ -775,22 +775,22 @@ case $basic_machine in | |||
775 | power) basic_machine=power-ibm | 775 | power) basic_machine=power-ibm |
776 | ;; | 776 | ;; |
777 | ppc) basic_machine=powerpc-unknown | 777 | ppc) basic_machine=powerpc-unknown |
778 | ;; | 778 | ;; |
779 | ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` | 779 | ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` |
780 | ;; | 780 | ;; |
781 | ppcle | powerpclittle | ppc-le | powerpc-little) | 781 | ppcle | powerpclittle | ppc-le | powerpc-little) |
782 | basic_machine=powerpcle-unknown | 782 | basic_machine=powerpcle-unknown |
783 | ;; | 783 | ;; |
784 | ppcle-* | powerpclittle-*) | 784 | ppcle-* | powerpclittle-*) |
785 | basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` | 785 | basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` |
786 | ;; | 786 | ;; |
787 | ppc64) basic_machine=powerpc64-unknown | 787 | ppc64) basic_machine=powerpc64-unknown |
788 | ;; | 788 | ;; |
789 | ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` | 789 | ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` |
790 | ;; | 790 | ;; |
791 | ppc64le | powerpc64little | ppc64-le | powerpc64-little) | 791 | ppc64le | powerpc64little | ppc64-le | powerpc64-little) |
792 | basic_machine=powerpc64le-unknown | 792 | basic_machine=powerpc64le-unknown |
793 | ;; | 793 | ;; |
794 | ppc64le-* | powerpc64little-*) | 794 | ppc64le-* | powerpc64little-*) |
795 | basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` | 795 | basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` |
796 | ;; | 796 | ;; |
@@ -886,11 +886,11 @@ case $basic_machine in | |||
886 | sun386 | sun386i | roadrunner) | 886 | sun386 | sun386i | roadrunner) |
887 | basic_machine=i386-sun | 887 | basic_machine=i386-sun |
888 | ;; | 888 | ;; |
889 | sv1) | 889 | sv1) |
890 | basic_machine=sv1-cray | 890 | basic_machine=sv1-cray |
891 | os=-unicos | 891 | os=-unicos |
892 | ;; | 892 | ;; |
893 | sx*-nec) | 893 | sx*-nec) |
894 | basic_machine=sx6-nec | 894 | basic_machine=sx6-nec |
895 | os=-sysv | 895 | os=-sysv |
896 | ;; | 896 | ;; |
@@ -948,8 +948,8 @@ case $basic_machine in | |||
948 | os=-vms | 948 | os=-vms |
949 | ;; | 949 | ;; |
950 | vpp*|vx|vx-*) | 950 | vpp*|vx|vx-*) |
951 | basic_machine=f301-fujitsu | 951 | basic_machine=f301-fujitsu |
952 | ;; | 952 | ;; |
953 | vxworks960) | 953 | vxworks960) |
954 | basic_machine=i960-wrs | 954 | basic_machine=i960-wrs |
955 | os=-vxworks | 955 | os=-vxworks |
@@ -974,7 +974,7 @@ case $basic_machine in | |||
974 | basic_machine=i386-pc | 974 | basic_machine=i386-pc |
975 | os=-windows32-msvcrt | 975 | os=-windows32-msvcrt |
976 | ;; | 976 | ;; |
977 | xps | xps100) | 977 | xps | xps100) |
978 | basic_machine=xps100-honeywell | 978 | basic_machine=xps100-honeywell |
979 | ;; | 979 | ;; |
980 | ymp) | 980 | ymp) |
@@ -1029,7 +1029,7 @@ case $basic_machine in | |||
1029 | sparc | sparcv9 | sparcv9b) | 1029 | sparc | sparcv9 | sparcv9b) |
1030 | basic_machine=sparc-sun | 1030 | basic_machine=sparc-sun |
1031 | ;; | 1031 | ;; |
1032 | cydra) | 1032 | cydra) |
1033 | basic_machine=cydra-cydrome | 1033 | basic_machine=cydra-cydrome |
1034 | ;; | 1034 | ;; |
1035 | orion) | 1035 | orion) |
@@ -1074,8 +1074,8 @@ esac | |||
1074 | if [ x"$os" != x"" ] | 1074 | if [ x"$os" != x"" ] |
1075 | then | 1075 | then |
1076 | case $os in | 1076 | case $os in |
1077 | # First match some system type aliases | 1077 | # First match some system type aliases |
1078 | # that might get confused with valid system types. | 1078 | # that might get confused with valid system types. |
1079 | # -solaris* is a basic system type, with this one exception. | 1079 | # -solaris* is a basic system type, with this one exception. |
1080 | -solaris1 | -solaris1.*) | 1080 | -solaris1 | -solaris1.*) |
1081 | os=`echo $os | sed -e 's|solaris1|sunos4|'` | 1081 | os=`echo $os | sed -e 's|solaris1|sunos4|'` |
@@ -1179,7 +1179,7 @@ case $os in | |||
1179 | os=-rtmk-nova | 1179 | os=-rtmk-nova |
1180 | ;; | 1180 | ;; |
1181 | -ns2 ) | 1181 | -ns2 ) |
1182 | os=-nextstep2 | 1182 | os=-nextstep2 |
1183 | ;; | 1183 | ;; |
1184 | -nsk*) | 1184 | -nsk*) |
1185 | os=-nsk | 1185 | os=-nsk |
@@ -1218,8 +1218,8 @@ case $os in | |||
1218 | -xenix) | 1218 | -xenix) |
1219 | os=-xenix | 1219 | os=-xenix |
1220 | ;; | 1220 | ;; |
1221 | -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) | 1221 | -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) |
1222 | os=-mint | 1222 | os=-mint |
1223 | ;; | 1223 | ;; |
1224 | -none) | 1224 | -none) |
1225 | ;; | 1225 | ;; |
@@ -1256,7 +1256,7 @@ case $basic_machine in | |||
1256 | pdp10-*) | 1256 | pdp10-*) |
1257 | os=-tops20 | 1257 | os=-tops20 |
1258 | ;; | 1258 | ;; |
1259 | pdp11-*) | 1259 | pdp11-*) |
1260 | os=-none | 1260 | os=-none |
1261 | ;; | 1261 | ;; |
1262 | *-dec | vax-*) | 1262 | *-dec | vax-*) |
@@ -1349,19 +1349,19 @@ case $basic_machine in | |||
1349 | *-next) | 1349 | *-next) |
1350 | os=-nextstep3 | 1350 | os=-nextstep3 |
1351 | ;; | 1351 | ;; |
1352 | *-gould) | 1352 | *-gould) |
1353 | os=-sysv | 1353 | os=-sysv |
1354 | ;; | 1354 | ;; |
1355 | *-highlevel) | 1355 | *-highlevel) |
1356 | os=-bsd | 1356 | os=-bsd |
1357 | ;; | 1357 | ;; |
1358 | *-encore) | 1358 | *-encore) |
1359 | os=-bsd | 1359 | os=-bsd |
1360 | ;; | 1360 | ;; |
1361 | *-sgi) | 1361 | *-sgi) |
1362 | os=-irix | 1362 | os=-irix |
1363 | ;; | 1363 | ;; |
1364 | *-siemens) | 1364 | *-siemens) |
1365 | os=-sysv4 | 1365 | os=-sysv4 |
1366 | ;; | 1366 | ;; |
1367 | *-masscomp) | 1367 | *-masscomp) |
@@ -682,17 +682,18 @@ Optional Features: | |||
682 | Optional Packages: | 682 | Optional Packages: |
683 | --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] | 683 | --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] |
684 | --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) | 684 | --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) |
685 | --without-rpath Disable auto-added -R linker paths | ||
685 | --with-osfsia Enable Digital Unix SIA | 686 | --with-osfsia Enable Digital Unix SIA |
686 | --with-cflags Specify additional flags to pass to compiler | 687 | --with-cflags Specify additional flags to pass to compiler |
687 | --with-cppflags Specify additional flags to pass to preprocessor | 688 | --with-cppflags Specify additional flags to pass to preprocessor |
688 | --with-ldflags Specify additional flags to pass to linker | 689 | --with-ldflags Specify additional flags to pass to linker |
689 | --with-libs Specify additional libraries to link with | 690 | --with-libs Specify additional libraries to link with |
690 | --without-rpath Disable auto-added -R linker paths | ||
691 | --with-zlib=PATH Use zlib in PATH | 691 | --with-zlib=PATH Use zlib in PATH |
692 | --without-zlib-version-check Disable zlib version check | ||
692 | --with-skey[=PATH] Enable S/Key support | 693 | --with-skey[=PATH] Enable S/Key support |
693 | (optionally in PATH) | 694 | (optionally in PATH) |
694 | --with-tcp-wrappers[=PATH] Enable tcpwrappers support | 695 | --with-tcp-wrappers[=PATH] Enable tcpwrappers support |
695 | (optionally in PATH) | 696 | (optionally in PATH) |
696 | --with-pam Enable PAM support | 697 | --with-pam Enable PAM support |
697 | --with-ssl-dir=PATH Specify path to OpenSSL installation | 698 | --with-ssl-dir=PATH Specify path to OpenSSL installation |
698 | --with-rand-helper Use subprocess to gather strong randomness | 699 | --with-rand-helper Use subprocess to gather strong randomness |
@@ -702,7 +703,6 @@ Optional Packages: | |||
702 | --with-privsep-user=user Specify non-privileged user for privilege separation | 703 | --with-privsep-user=user Specify non-privileged user for privilege separation |
703 | --with-sectok Enable smartcard support using libsectok | 704 | --with-sectok Enable smartcard support using libsectok |
704 | --with-opensc=PFX Enable smartcard support using OpenSC | 705 | --with-opensc=PFX Enable smartcard support using OpenSC |
705 | --with-dns Support for fetching keys from DNS (experimental) | ||
706 | --with-kerberos5=PATH Enable Kerberos 5 support | 706 | --with-kerberos5=PATH Enable Kerberos 5 support |
707 | --with-privsep-path=xxx Path for privilege separation chroot (default=/var/empty) | 707 | --with-privsep-path=xxx Path for privilege separation chroot (default=/var/empty) |
708 | --with-xauth=PATH Specify path to xauth program | 708 | --with-xauth=PATH Specify path to xauth program |
@@ -2946,11 +2946,55 @@ EOF | |||
2946 | fi | 2946 | fi |
2947 | fi | 2947 | fi |
2948 | 2948 | ||
2949 | # Extract the first word of "passwd", so it can be a program name with args. | ||
2950 | set dummy passwd; ac_word=$2 | ||
2951 | echo "$as_me:2951: checking for $ac_word" >&5 | ||
2952 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 | ||
2953 | if test "${ac_cv_path_PATH_PASSWD_PROG+set}" = set; then | ||
2954 | echo $ECHO_N "(cached) $ECHO_C" >&6 | ||
2955 | else | ||
2956 | case $PATH_PASSWD_PROG in | ||
2957 | [\\/]* | ?:[\\/]*) | ||
2958 | ac_cv_path_PATH_PASSWD_PROG="$PATH_PASSWD_PROG" # Let the user override the test with a path. | ||
2959 | ;; | ||
2960 | *) | ||
2961 | ac_save_IFS=$IFS; IFS=$ac_path_separator | ||
2962 | ac_dummy="$PATH" | ||
2963 | for ac_dir in $ac_dummy; do | ||
2964 | IFS=$ac_save_IFS | ||
2965 | test -z "$ac_dir" && ac_dir=. | ||
2966 | if $as_executable_p "$ac_dir/$ac_word"; then | ||
2967 | ac_cv_path_PATH_PASSWD_PROG="$ac_dir/$ac_word" | ||
2968 | echo "$as_me:2968: found $ac_dir/$ac_word" >&5 | ||
2969 | break | ||
2970 | fi | ||
2971 | done | ||
2972 | |||
2973 | ;; | ||
2974 | esac | ||
2975 | fi | ||
2976 | PATH_PASSWD_PROG=$ac_cv_path_PATH_PASSWD_PROG | ||
2977 | |||
2978 | if test -n "$PATH_PASSWD_PROG"; then | ||
2979 | echo "$as_me:2979: result: $PATH_PASSWD_PROG" >&5 | ||
2980 | echo "${ECHO_T}$PATH_PASSWD_PROG" >&6 | ||
2981 | else | ||
2982 | echo "$as_me:2982: result: no" >&5 | ||
2983 | echo "${ECHO_T}no" >&6 | ||
2984 | fi | ||
2985 | |||
2986 | if test ! -z "$PATH_PASSWD_PROG" ; then | ||
2987 | cat >>confdefs.h <<EOF | ||
2988 | #define _PATH_PASSWD_PROG "$PATH_PASSWD_PROG" | ||
2989 | EOF | ||
2990 | |||
2991 | fi | ||
2992 | |||
2949 | if test -z "$LD" ; then | 2993 | if test -z "$LD" ; then |
2950 | LD=$CC | 2994 | LD=$CC |
2951 | fi | 2995 | fi |
2952 | 2996 | ||
2953 | echo "$as_me:2953: checking for $CC option to accept ANSI C" >&5 | 2997 | echo "$as_me:2997: checking for $CC option to accept ANSI C" >&5 |
2954 | echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 | 2998 | echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 |
2955 | if test "${ac_cv_prog_cc_stdc+set}" = set; then | 2999 | if test "${ac_cv_prog_cc_stdc+set}" = set; then |
2956 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 3000 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -2958,7 +3002,7 @@ else | |||
2958 | ac_cv_prog_cc_stdc=no | 3002 | ac_cv_prog_cc_stdc=no |
2959 | ac_save_CC=$CC | 3003 | ac_save_CC=$CC |
2960 | cat >conftest.$ac_ext <<_ACEOF | 3004 | cat >conftest.$ac_ext <<_ACEOF |
2961 | #line 2961 "configure" | 3005 | #line 3005 "configure" |
2962 | #include "confdefs.h" | 3006 | #include "confdefs.h" |
2963 | #include <stdarg.h> | 3007 | #include <stdarg.h> |
2964 | #include <stdio.h> | 3008 | #include <stdio.h> |
@@ -3007,16 +3051,16 @@ for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIO | |||
3007 | do | 3051 | do |
3008 | CC="$ac_save_CC $ac_arg" | 3052 | CC="$ac_save_CC $ac_arg" |
3009 | rm -f conftest.$ac_objext | 3053 | rm -f conftest.$ac_objext |
3010 | if { (eval echo "$as_me:3010: \"$ac_compile\"") >&5 | 3054 | if { (eval echo "$as_me:3054: \"$ac_compile\"") >&5 |
3011 | (eval $ac_compile) 2>&5 | 3055 | (eval $ac_compile) 2>&5 |
3012 | ac_status=$? | 3056 | ac_status=$? |
3013 | echo "$as_me:3013: \$? = $ac_status" >&5 | 3057 | echo "$as_me:3057: \$? = $ac_status" >&5 |
3014 | (exit $ac_status); } && | 3058 | (exit $ac_status); } && |
3015 | { ac_try='test -s conftest.$ac_objext' | 3059 | { ac_try='test -s conftest.$ac_objext' |
3016 | { (eval echo "$as_me:3016: \"$ac_try\"") >&5 | 3060 | { (eval echo "$as_me:3060: \"$ac_try\"") >&5 |
3017 | (eval $ac_try) 2>&5 | 3061 | (eval $ac_try) 2>&5 |
3018 | ac_status=$? | 3062 | ac_status=$? |
3019 | echo "$as_me:3019: \$? = $ac_status" >&5 | 3063 | echo "$as_me:3063: \$? = $ac_status" >&5 |
3020 | (exit $ac_status); }; }; then | 3064 | (exit $ac_status); }; }; then |
3021 | ac_cv_prog_cc_stdc=$ac_arg | 3065 | ac_cv_prog_cc_stdc=$ac_arg |
3022 | break | 3066 | break |
@@ -3033,15 +3077,15 @@ fi | |||
3033 | 3077 | ||
3034 | case "x$ac_cv_prog_cc_stdc" in | 3078 | case "x$ac_cv_prog_cc_stdc" in |
3035 | x|xno) | 3079 | x|xno) |
3036 | echo "$as_me:3036: result: none needed" >&5 | 3080 | echo "$as_me:3080: result: none needed" >&5 |
3037 | echo "${ECHO_T}none needed" >&6 ;; | 3081 | echo "${ECHO_T}none needed" >&6 ;; |
3038 | *) | 3082 | *) |
3039 | echo "$as_me:3039: result: $ac_cv_prog_cc_stdc" >&5 | 3083 | echo "$as_me:3083: result: $ac_cv_prog_cc_stdc" >&5 |
3040 | echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 | 3084 | echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 |
3041 | CC="$CC $ac_cv_prog_cc_stdc" ;; | 3085 | CC="$CC $ac_cv_prog_cc_stdc" ;; |
3042 | esac | 3086 | esac |
3043 | 3087 | ||
3044 | echo "$as_me:3044: checking for inline" >&5 | 3088 | echo "$as_me:3088: checking for inline" >&5 |
3045 | echo $ECHO_N "checking for inline... $ECHO_C" >&6 | 3089 | echo $ECHO_N "checking for inline... $ECHO_C" >&6 |
3046 | if test "${ac_cv_c_inline+set}" = set; then | 3090 | if test "${ac_cv_c_inline+set}" = set; then |
3047 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 3091 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -3049,7 +3093,7 @@ else | |||
3049 | ac_cv_c_inline=no | 3093 | ac_cv_c_inline=no |
3050 | for ac_kw in inline __inline__ __inline; do | 3094 | for ac_kw in inline __inline__ __inline; do |
3051 | cat >conftest.$ac_ext <<_ACEOF | 3095 | cat >conftest.$ac_ext <<_ACEOF |
3052 | #line 3052 "configure" | 3096 | #line 3096 "configure" |
3053 | #include "confdefs.h" | 3097 | #include "confdefs.h" |
3054 | #ifndef __cplusplus | 3098 | #ifndef __cplusplus |
3055 | static $ac_kw int static_foo () {return 0; } | 3099 | static $ac_kw int static_foo () {return 0; } |
@@ -3058,16 +3102,16 @@ $ac_kw int foo () {return 0; } | |||
3058 | 3102 | ||
3059 | _ACEOF | 3103 | _ACEOF |
3060 | rm -f conftest.$ac_objext | 3104 | rm -f conftest.$ac_objext |
3061 | if { (eval echo "$as_me:3061: \"$ac_compile\"") >&5 | 3105 | if { (eval echo "$as_me:3105: \"$ac_compile\"") >&5 |
3062 | (eval $ac_compile) 2>&5 | 3106 | (eval $ac_compile) 2>&5 |
3063 | ac_status=$? | 3107 | ac_status=$? |
3064 | echo "$as_me:3064: \$? = $ac_status" >&5 | 3108 | echo "$as_me:3108: \$? = $ac_status" >&5 |
3065 | (exit $ac_status); } && | 3109 | (exit $ac_status); } && |
3066 | { ac_try='test -s conftest.$ac_objext' | 3110 | { ac_try='test -s conftest.$ac_objext' |
3067 | { (eval echo "$as_me:3067: \"$ac_try\"") >&5 | 3111 | { (eval echo "$as_me:3111: \"$ac_try\"") >&5 |
3068 | (eval $ac_try) 2>&5 | 3112 | (eval $ac_try) 2>&5 |
3069 | ac_status=$? | 3113 | ac_status=$? |
3070 | echo "$as_me:3070: \$? = $ac_status" >&5 | 3114 | echo "$as_me:3114: \$? = $ac_status" >&5 |
3071 | (exit $ac_status); }; }; then | 3115 | (exit $ac_status); }; }; then |
3072 | ac_cv_c_inline=$ac_kw; break | 3116 | ac_cv_c_inline=$ac_kw; break |
3073 | else | 3117 | else |
@@ -3078,7 +3122,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext | |||
3078 | done | 3122 | done |
3079 | 3123 | ||
3080 | fi | 3124 | fi |
3081 | echo "$as_me:3081: result: $ac_cv_c_inline" >&5 | 3125 | echo "$as_me:3125: result: $ac_cv_c_inline" >&5 |
3082 | echo "${ECHO_T}$ac_cv_c_inline" >&6 | 3126 | echo "${ECHO_T}$ac_cv_c_inline" >&6 |
3083 | case $ac_cv_c_inline in | 3127 | case $ac_cv_c_inline in |
3084 | inline | yes) ;; | 3128 | inline | yes) ;; |
@@ -3097,22 +3141,33 @@ if test "$GCC" = "yes" || test "$GCC" = "egcs"; then | |||
3097 | CFLAGS="$CFLAGS -Wall -Wpointer-arith -Wno-uninitialized" | 3141 | CFLAGS="$CFLAGS -Wall -Wpointer-arith -Wno-uninitialized" |
3098 | fi | 3142 | fi |
3099 | 3143 | ||
3144 | # Check whether --with-rpath or --without-rpath was given. | ||
3145 | if test "${with_rpath+set}" = set; then | ||
3146 | withval="$with_rpath" | ||
3147 | |||
3148 | if test "x$withval" = "xno" ; then | ||
3149 | need_dash_r="" | ||
3150 | fi | ||
3151 | if test "x$withval" = "xyes" ; then | ||
3152 | need_dash_r=1 | ||
3153 | fi | ||
3154 | |||
3155 | fi; | ||
3156 | |||
3100 | # Check for some target-specific stuff | 3157 | # Check for some target-specific stuff |
3101 | case "$host" in | 3158 | case "$host" in |
3102 | *-*-aix*) | 3159 | *-*-aix*) |
3103 | CPPFLAGS="$CPPFLAGS -I/usr/local/include" | 3160 | echo "$as_me:3160: checking how to specify blibpath for linker ($LD)" >&5 |
3104 | LDFLAGS="$LDFLAGS -L/usr/local/lib" | ||
3105 | echo "$as_me:3105: checking how to specify blibpath for linker ($LD)" >&5 | ||
3106 | echo $ECHO_N "checking how to specify blibpath for linker ($LD)... $ECHO_C" >&6 | 3161 | echo $ECHO_N "checking how to specify blibpath for linker ($LD)... $ECHO_C" >&6 |
3107 | if (test -z "$blibpath"); then | 3162 | if (test -z "$blibpath"); then |
3108 | blibpath="/usr/lib:/lib:/usr/local/lib" | 3163 | blibpath="/usr/lib:/lib" |
3109 | fi | 3164 | fi |
3110 | saved_LDFLAGS="$LDFLAGS" | 3165 | saved_LDFLAGS="$LDFLAGS" |
3111 | for tryflags in -blibpath: -Wl,-blibpath: -Wl,-rpath, ;do | 3166 | for tryflags in -blibpath: -Wl,-blibpath: -Wl,-rpath, ;do |
3112 | if (test -z "$blibflags"); then | 3167 | if (test -z "$blibflags"); then |
3113 | LDFLAGS="$saved_LDFLAGS $tryflags$blibpath" | 3168 | LDFLAGS="$saved_LDFLAGS $tryflags$blibpath" |
3114 | cat >conftest.$ac_ext <<_ACEOF | 3169 | cat >conftest.$ac_ext <<_ACEOF |
3115 | #line 3115 "configure" | 3170 | #line 3170 "configure" |
3116 | #include "confdefs.h" | 3171 | #include "confdefs.h" |
3117 | 3172 | ||
3118 | int | 3173 | int |
@@ -3124,16 +3179,16 @@ main () | |||
3124 | } | 3179 | } |
3125 | _ACEOF | 3180 | _ACEOF |
3126 | rm -f conftest.$ac_objext conftest$ac_exeext | 3181 | rm -f conftest.$ac_objext conftest$ac_exeext |
3127 | if { (eval echo "$as_me:3127: \"$ac_link\"") >&5 | 3182 | if { (eval echo "$as_me:3182: \"$ac_link\"") >&5 |
3128 | (eval $ac_link) 2>&5 | 3183 | (eval $ac_link) 2>&5 |
3129 | ac_status=$? | 3184 | ac_status=$? |
3130 | echo "$as_me:3130: \$? = $ac_status" >&5 | 3185 | echo "$as_me:3185: \$? = $ac_status" >&5 |
3131 | (exit $ac_status); } && | 3186 | (exit $ac_status); } && |
3132 | { ac_try='test -s conftest$ac_exeext' | 3187 | { ac_try='test -s conftest$ac_exeext' |
3133 | { (eval echo "$as_me:3133: \"$ac_try\"") >&5 | 3188 | { (eval echo "$as_me:3188: \"$ac_try\"") >&5 |
3134 | (eval $ac_try) 2>&5 | 3189 | (eval $ac_try) 2>&5 |
3135 | ac_status=$? | 3190 | ac_status=$? |
3136 | echo "$as_me:3136: \$? = $ac_status" >&5 | 3191 | echo "$as_me:3191: \$? = $ac_status" >&5 |
3137 | (exit $ac_status); }; }; then | 3192 | (exit $ac_status); }; }; then |
3138 | blibflags=$tryflags | 3193 | blibflags=$tryflags |
3139 | else | 3194 | else |
@@ -3144,23 +3199,23 @@ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | |||
3144 | fi | 3199 | fi |
3145 | done | 3200 | done |
3146 | if (test -z "$blibflags"); then | 3201 | if (test -z "$blibflags"); then |
3147 | echo "$as_me:3147: result: not found" >&5 | 3202 | echo "$as_me:3202: result: not found" >&5 |
3148 | echo "${ECHO_T}not found" >&6 | 3203 | echo "${ECHO_T}not found" >&6 |
3149 | { { echo "$as_me:3149: error: *** must be able to specify blibpath on AIX - check config.log" >&5 | 3204 | { { echo "$as_me:3204: error: *** must be able to specify blibpath on AIX - check config.log" >&5 |
3150 | echo "$as_me: error: *** must be able to specify blibpath on AIX - check config.log" >&2;} | 3205 | echo "$as_me: error: *** must be able to specify blibpath on AIX - check config.log" >&2;} |
3151 | { (exit 1); exit 1; }; } | 3206 | { (exit 1); exit 1; }; } |
3152 | else | 3207 | else |
3153 | echo "$as_me:3153: result: $blibflags" >&5 | 3208 | echo "$as_me:3208: result: $blibflags" >&5 |
3154 | echo "${ECHO_T}$blibflags" >&6 | 3209 | echo "${ECHO_T}$blibflags" >&6 |
3155 | fi | 3210 | fi |
3156 | LDFLAGS="$saved_LDFLAGS" | 3211 | LDFLAGS="$saved_LDFLAGS" |
3157 | echo "$as_me:3157: checking for authenticate" >&5 | 3212 | echo "$as_me:3212: checking for authenticate" >&5 |
3158 | echo $ECHO_N "checking for authenticate... $ECHO_C" >&6 | 3213 | echo $ECHO_N "checking for authenticate... $ECHO_C" >&6 |
3159 | if test "${ac_cv_func_authenticate+set}" = set; then | 3214 | if test "${ac_cv_func_authenticate+set}" = set; then |
3160 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 3215 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
3161 | else | 3216 | else |
3162 | cat >conftest.$ac_ext <<_ACEOF | 3217 | cat >conftest.$ac_ext <<_ACEOF |
3163 | #line 3163 "configure" | 3218 | #line 3218 "configure" |
3164 | #include "confdefs.h" | 3219 | #include "confdefs.h" |
3165 | /* System header to define __stub macros and hopefully few prototypes, | 3220 | /* System header to define __stub macros and hopefully few prototypes, |
3166 | which can conflict with char authenticate (); below. */ | 3221 | which can conflict with char authenticate (); below. */ |
@@ -3191,16 +3246,16 @@ f = authenticate; | |||
3191 | } | 3246 | } |
3192 | _ACEOF | 3247 | _ACEOF |
3193 | rm -f conftest.$ac_objext conftest$ac_exeext | 3248 | rm -f conftest.$ac_objext conftest$ac_exeext |
3194 | if { (eval echo "$as_me:3194: \"$ac_link\"") >&5 | 3249 | if { (eval echo "$as_me:3249: \"$ac_link\"") >&5 |
3195 | (eval $ac_link) 2>&5 | 3250 | (eval $ac_link) 2>&5 |
3196 | ac_status=$? | 3251 | ac_status=$? |
3197 | echo "$as_me:3197: \$? = $ac_status" >&5 | 3252 | echo "$as_me:3252: \$? = $ac_status" >&5 |
3198 | (exit $ac_status); } && | 3253 | (exit $ac_status); } && |
3199 | { ac_try='test -s conftest$ac_exeext' | 3254 | { ac_try='test -s conftest$ac_exeext' |
3200 | { (eval echo "$as_me:3200: \"$ac_try\"") >&5 | 3255 | { (eval echo "$as_me:3255: \"$ac_try\"") >&5 |
3201 | (eval $ac_try) 2>&5 | 3256 | (eval $ac_try) 2>&5 |
3202 | ac_status=$? | 3257 | ac_status=$? |
3203 | echo "$as_me:3203: \$? = $ac_status" >&5 | 3258 | echo "$as_me:3258: \$? = $ac_status" >&5 |
3204 | (exit $ac_status); }; }; then | 3259 | (exit $ac_status); }; }; then |
3205 | ac_cv_func_authenticate=yes | 3260 | ac_cv_func_authenticate=yes |
3206 | else | 3261 | else |
@@ -3210,7 +3265,7 @@ ac_cv_func_authenticate=no | |||
3210 | fi | 3265 | fi |
3211 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 3266 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
3212 | fi | 3267 | fi |
3213 | echo "$as_me:3213: result: $ac_cv_func_authenticate" >&5 | 3268 | echo "$as_me:3268: result: $ac_cv_func_authenticate" >&5 |
3214 | echo "${ECHO_T}$ac_cv_func_authenticate" >&6 | 3269 | echo "${ECHO_T}$ac_cv_func_authenticate" >&6 |
3215 | if test $ac_cv_func_authenticate = yes; then | 3270 | if test $ac_cv_func_authenticate = yes; then |
3216 | cat >>confdefs.h <<\EOF | 3271 | cat >>confdefs.h <<\EOF |
@@ -3218,7 +3273,7 @@ if test $ac_cv_func_authenticate = yes; then | |||
3218 | EOF | 3273 | EOF |
3219 | 3274 | ||
3220 | else | 3275 | else |
3221 | echo "$as_me:3221: checking for authenticate in -ls" >&5 | 3276 | echo "$as_me:3276: checking for authenticate in -ls" >&5 |
3222 | echo $ECHO_N "checking for authenticate in -ls... $ECHO_C" >&6 | 3277 | echo $ECHO_N "checking for authenticate in -ls... $ECHO_C" >&6 |
3223 | if test "${ac_cv_lib_s_authenticate+set}" = set; then | 3278 | if test "${ac_cv_lib_s_authenticate+set}" = set; then |
3224 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 3279 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -3226,7 +3281,7 @@ else | |||
3226 | ac_check_lib_save_LIBS=$LIBS | 3281 | ac_check_lib_save_LIBS=$LIBS |
3227 | LIBS="-ls $LIBS" | 3282 | LIBS="-ls $LIBS" |
3228 | cat >conftest.$ac_ext <<_ACEOF | 3283 | cat >conftest.$ac_ext <<_ACEOF |
3229 | #line 3229 "configure" | 3284 | #line 3284 "configure" |
3230 | #include "confdefs.h" | 3285 | #include "confdefs.h" |
3231 | 3286 | ||
3232 | /* Override any gcc2 internal prototype to avoid an error. */ | 3287 | /* Override any gcc2 internal prototype to avoid an error. */ |
@@ -3245,16 +3300,16 @@ authenticate (); | |||
3245 | } | 3300 | } |
3246 | _ACEOF | 3301 | _ACEOF |
3247 | rm -f conftest.$ac_objext conftest$ac_exeext | 3302 | rm -f conftest.$ac_objext conftest$ac_exeext |
3248 | if { (eval echo "$as_me:3248: \"$ac_link\"") >&5 | 3303 | if { (eval echo "$as_me:3303: \"$ac_link\"") >&5 |
3249 | (eval $ac_link) 2>&5 | 3304 | (eval $ac_link) 2>&5 |
3250 | ac_status=$? | 3305 | ac_status=$? |
3251 | echo "$as_me:3251: \$? = $ac_status" >&5 | 3306 | echo "$as_me:3306: \$? = $ac_status" >&5 |
3252 | (exit $ac_status); } && | 3307 | (exit $ac_status); } && |
3253 | { ac_try='test -s conftest$ac_exeext' | 3308 | { ac_try='test -s conftest$ac_exeext' |
3254 | { (eval echo "$as_me:3254: \"$ac_try\"") >&5 | 3309 | { (eval echo "$as_me:3309: \"$ac_try\"") >&5 |
3255 | (eval $ac_try) 2>&5 | 3310 | (eval $ac_try) 2>&5 |
3256 | ac_status=$? | 3311 | ac_status=$? |
3257 | echo "$as_me:3257: \$? = $ac_status" >&5 | 3312 | echo "$as_me:3312: \$? = $ac_status" >&5 |
3258 | (exit $ac_status); }; }; then | 3313 | (exit $ac_status); }; }; then |
3259 | ac_cv_lib_s_authenticate=yes | 3314 | ac_cv_lib_s_authenticate=yes |
3260 | else | 3315 | else |
@@ -3265,7 +3320,7 @@ fi | |||
3265 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 3320 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
3266 | LIBS=$ac_check_lib_save_LIBS | 3321 | LIBS=$ac_check_lib_save_LIBS |
3267 | fi | 3322 | fi |
3268 | echo "$as_me:3268: result: $ac_cv_lib_s_authenticate" >&5 | 3323 | echo "$as_me:3323: result: $ac_cv_lib_s_authenticate" >&5 |
3269 | echo "${ECHO_T}$ac_cv_lib_s_authenticate" >&6 | 3324 | echo "${ECHO_T}$ac_cv_lib_s_authenticate" >&6 |
3270 | if test $ac_cv_lib_s_authenticate = yes; then | 3325 | if test $ac_cv_lib_s_authenticate = yes; then |
3271 | cat >>confdefs.h <<\EOF | 3326 | cat >>confdefs.h <<\EOF |
@@ -3278,13 +3333,13 @@ fi | |||
3278 | 3333 | ||
3279 | fi | 3334 | fi |
3280 | 3335 | ||
3281 | echo "$as_me:3281: checking whether loginfailed is declared" >&5 | 3336 | echo "$as_me:3336: checking whether loginfailed is declared" >&5 |
3282 | echo $ECHO_N "checking whether loginfailed is declared... $ECHO_C" >&6 | 3337 | echo $ECHO_N "checking whether loginfailed is declared... $ECHO_C" >&6 |
3283 | if test "${ac_cv_have_decl_loginfailed+set}" = set; then | 3338 | if test "${ac_cv_have_decl_loginfailed+set}" = set; then |
3284 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 3339 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
3285 | else | 3340 | else |
3286 | cat >conftest.$ac_ext <<_ACEOF | 3341 | cat >conftest.$ac_ext <<_ACEOF |
3287 | #line 3287 "configure" | 3342 | #line 3342 "configure" |
3288 | #include "confdefs.h" | 3343 | #include "confdefs.h" |
3289 | #include <usersec.h> | 3344 | #include <usersec.h> |
3290 | 3345 | ||
@@ -3300,16 +3355,16 @@ main () | |||
3300 | } | 3355 | } |
3301 | _ACEOF | 3356 | _ACEOF |
3302 | rm -f conftest.$ac_objext | 3357 | rm -f conftest.$ac_objext |
3303 | if { (eval echo "$as_me:3303: \"$ac_compile\"") >&5 | 3358 | if { (eval echo "$as_me:3358: \"$ac_compile\"") >&5 |
3304 | (eval $ac_compile) 2>&5 | 3359 | (eval $ac_compile) 2>&5 |
3305 | ac_status=$? | 3360 | ac_status=$? |
3306 | echo "$as_me:3306: \$? = $ac_status" >&5 | 3361 | echo "$as_me:3361: \$? = $ac_status" >&5 |
3307 | (exit $ac_status); } && | 3362 | (exit $ac_status); } && |
3308 | { ac_try='test -s conftest.$ac_objext' | 3363 | { ac_try='test -s conftest.$ac_objext' |
3309 | { (eval echo "$as_me:3309: \"$ac_try\"") >&5 | 3364 | { (eval echo "$as_me:3364: \"$ac_try\"") >&5 |
3310 | (eval $ac_try) 2>&5 | 3365 | (eval $ac_try) 2>&5 |
3311 | ac_status=$? | 3366 | ac_status=$? |
3312 | echo "$as_me:3312: \$? = $ac_status" >&5 | 3367 | echo "$as_me:3367: \$? = $ac_status" >&5 |
3313 | (exit $ac_status); }; }; then | 3368 | (exit $ac_status); }; }; then |
3314 | ac_cv_have_decl_loginfailed=yes | 3369 | ac_cv_have_decl_loginfailed=yes |
3315 | else | 3370 | else |
@@ -3319,13 +3374,13 @@ ac_cv_have_decl_loginfailed=no | |||
3319 | fi | 3374 | fi |
3320 | rm -f conftest.$ac_objext conftest.$ac_ext | 3375 | rm -f conftest.$ac_objext conftest.$ac_ext |
3321 | fi | 3376 | fi |
3322 | echo "$as_me:3322: result: $ac_cv_have_decl_loginfailed" >&5 | 3377 | echo "$as_me:3377: result: $ac_cv_have_decl_loginfailed" >&5 |
3323 | echo "${ECHO_T}$ac_cv_have_decl_loginfailed" >&6 | 3378 | echo "${ECHO_T}$ac_cv_have_decl_loginfailed" >&6 |
3324 | if test $ac_cv_have_decl_loginfailed = yes; then | 3379 | if test $ac_cv_have_decl_loginfailed = yes; then |
3325 | echo "$as_me:3325: checking if loginfailed takes 4 arguments" >&5 | 3380 | echo "$as_me:3380: checking if loginfailed takes 4 arguments" >&5 |
3326 | echo $ECHO_N "checking if loginfailed takes 4 arguments... $ECHO_C" >&6 | 3381 | echo $ECHO_N "checking if loginfailed takes 4 arguments... $ECHO_C" >&6 |
3327 | cat >conftest.$ac_ext <<_ACEOF | 3382 | cat >conftest.$ac_ext <<_ACEOF |
3328 | #line 3328 "configure" | 3383 | #line 3383 "configure" |
3329 | #include "confdefs.h" | 3384 | #include "confdefs.h" |
3330 | #include <usersec.h> | 3385 | #include <usersec.h> |
3331 | int | 3386 | int |
@@ -3337,18 +3392,18 @@ main () | |||
3337 | } | 3392 | } |
3338 | _ACEOF | 3393 | _ACEOF |
3339 | rm -f conftest.$ac_objext | 3394 | rm -f conftest.$ac_objext |
3340 | if { (eval echo "$as_me:3340: \"$ac_compile\"") >&5 | 3395 | if { (eval echo "$as_me:3395: \"$ac_compile\"") >&5 |
3341 | (eval $ac_compile) 2>&5 | 3396 | (eval $ac_compile) 2>&5 |
3342 | ac_status=$? | 3397 | ac_status=$? |
3343 | echo "$as_me:3343: \$? = $ac_status" >&5 | 3398 | echo "$as_me:3398: \$? = $ac_status" >&5 |
3344 | (exit $ac_status); } && | 3399 | (exit $ac_status); } && |
3345 | { ac_try='test -s conftest.$ac_objext' | 3400 | { ac_try='test -s conftest.$ac_objext' |
3346 | { (eval echo "$as_me:3346: \"$ac_try\"") >&5 | 3401 | { (eval echo "$as_me:3401: \"$ac_try\"") >&5 |
3347 | (eval $ac_try) 2>&5 | 3402 | (eval $ac_try) 2>&5 |
3348 | ac_status=$? | 3403 | ac_status=$? |
3349 | echo "$as_me:3349: \$? = $ac_status" >&5 | 3404 | echo "$as_me:3404: \$? = $ac_status" >&5 |
3350 | (exit $ac_status); }; }; then | 3405 | (exit $ac_status); }; }; then |
3351 | echo "$as_me:3351: result: yes" >&5 | 3406 | echo "$as_me:3406: result: yes" >&5 |
3352 | echo "${ECHO_T}yes" >&6 | 3407 | echo "${ECHO_T}yes" >&6 |
3353 | cat >>confdefs.h <<\EOF | 3408 | cat >>confdefs.h <<\EOF |
3354 | #define AIX_LOGINFAILED_4ARG 1 | 3409 | #define AIX_LOGINFAILED_4ARG 1 |
@@ -3357,7 +3412,7 @@ EOF | |||
3357 | else | 3412 | else |
3358 | echo "$as_me: failed program was:" >&5 | 3413 | echo "$as_me: failed program was:" >&5 |
3359 | cat conftest.$ac_ext >&5 | 3414 | cat conftest.$ac_ext >&5 |
3360 | echo "$as_me:3360: result: no" >&5 | 3415 | echo "$as_me:3415: result: no" >&5 |
3361 | echo "${ECHO_T}no" >&6 | 3416 | echo "${ECHO_T}no" >&6 |
3362 | 3417 | ||
3363 | fi | 3418 | fi |
@@ -3367,13 +3422,13 @@ fi | |||
3367 | for ac_func in setauthdb | 3422 | for ac_func in setauthdb |
3368 | do | 3423 | do |
3369 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` | 3424 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` |
3370 | echo "$as_me:3370: checking for $ac_func" >&5 | 3425 | echo "$as_me:3425: checking for $ac_func" >&5 |
3371 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 | 3426 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 |
3372 | if eval "test \"\${$as_ac_var+set}\" = set"; then | 3427 | if eval "test \"\${$as_ac_var+set}\" = set"; then |
3373 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 3428 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
3374 | else | 3429 | else |
3375 | cat >conftest.$ac_ext <<_ACEOF | 3430 | cat >conftest.$ac_ext <<_ACEOF |
3376 | #line 3376 "configure" | 3431 | #line 3431 "configure" |
3377 | #include "confdefs.h" | 3432 | #include "confdefs.h" |
3378 | /* System header to define __stub macros and hopefully few prototypes, | 3433 | /* System header to define __stub macros and hopefully few prototypes, |
3379 | which can conflict with char $ac_func (); below. */ | 3434 | which can conflict with char $ac_func (); below. */ |
@@ -3404,16 +3459,16 @@ f = $ac_func; | |||
3404 | } | 3459 | } |
3405 | _ACEOF | 3460 | _ACEOF |
3406 | rm -f conftest.$ac_objext conftest$ac_exeext | 3461 | rm -f conftest.$ac_objext conftest$ac_exeext |
3407 | if { (eval echo "$as_me:3407: \"$ac_link\"") >&5 | 3462 | if { (eval echo "$as_me:3462: \"$ac_link\"") >&5 |
3408 | (eval $ac_link) 2>&5 | 3463 | (eval $ac_link) 2>&5 |
3409 | ac_status=$? | 3464 | ac_status=$? |
3410 | echo "$as_me:3410: \$? = $ac_status" >&5 | 3465 | echo "$as_me:3465: \$? = $ac_status" >&5 |
3411 | (exit $ac_status); } && | 3466 | (exit $ac_status); } && |
3412 | { ac_try='test -s conftest$ac_exeext' | 3467 | { ac_try='test -s conftest$ac_exeext' |
3413 | { (eval echo "$as_me:3413: \"$ac_try\"") >&5 | 3468 | { (eval echo "$as_me:3468: \"$ac_try\"") >&5 |
3414 | (eval $ac_try) 2>&5 | 3469 | (eval $ac_try) 2>&5 |
3415 | ac_status=$? | 3470 | ac_status=$? |
3416 | echo "$as_me:3416: \$? = $ac_status" >&5 | 3471 | echo "$as_me:3471: \$? = $ac_status" >&5 |
3417 | (exit $ac_status); }; }; then | 3472 | (exit $ac_status); }; }; then |
3418 | eval "$as_ac_var=yes" | 3473 | eval "$as_ac_var=yes" |
3419 | else | 3474 | else |
@@ -3423,7 +3478,7 @@ eval "$as_ac_var=no" | |||
3423 | fi | 3478 | fi |
3424 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 3479 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
3425 | fi | 3480 | fi |
3426 | echo "$as_me:3426: result: `eval echo '${'$as_ac_var'}'`" >&5 | 3481 | echo "$as_me:3481: result: `eval echo '${'$as_ac_var'}'`" >&5 |
3427 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 | 3482 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 |
3428 | if test `eval echo '${'$as_ac_var'}'` = yes; then | 3483 | if test `eval echo '${'$as_ac_var'}'` = yes; then |
3429 | cat >>confdefs.h <<EOF | 3484 | cat >>confdefs.h <<EOF |
@@ -3507,16 +3562,28 @@ EOF | |||
3507 | #define IP_TOS_IS_BROKEN 1 | 3562 | #define IP_TOS_IS_BROKEN 1 |
3508 | EOF | 3563 | EOF |
3509 | 3564 | ||
3565 | cat >>confdefs.h <<\EOF | ||
3566 | #define SETEUID_BREAKS_SETUID 1 | ||
3567 | EOF | ||
3568 | |||
3569 | cat >>confdefs.h <<\EOF | ||
3570 | #define BROKEN_SETREUID 1 | ||
3571 | EOF | ||
3572 | |||
3573 | cat >>confdefs.h <<\EOF | ||
3574 | #define BROKEN_SETREGID 1 | ||
3575 | EOF | ||
3576 | |||
3510 | ;; | 3577 | ;; |
3511 | *-*-darwin*) | 3578 | *-*-darwin*) |
3512 | echo "$as_me:3512: checking if we have working getaddrinfo" >&5 | 3579 | echo "$as_me:3579: checking if we have working getaddrinfo" >&5 |
3513 | echo $ECHO_N "checking if we have working getaddrinfo... $ECHO_C" >&6 | 3580 | echo $ECHO_N "checking if we have working getaddrinfo... $ECHO_C" >&6 |
3514 | if test "$cross_compiling" = yes; then | 3581 | if test "$cross_compiling" = yes; then |
3515 | echo "$as_me:3515: result: assume it is working" >&5 | 3582 | echo "$as_me:3582: result: assume it is working" >&5 |
3516 | echo "${ECHO_T}assume it is working" >&6 | 3583 | echo "${ECHO_T}assume it is working" >&6 |
3517 | else | 3584 | else |
3518 | cat >conftest.$ac_ext <<_ACEOF | 3585 | cat >conftest.$ac_ext <<_ACEOF |
3519 | #line 3519 "configure" | 3586 | #line 3586 "configure" |
3520 | #include "confdefs.h" | 3587 | #include "confdefs.h" |
3521 | #include <mach-o/dyld.h> | 3588 | #include <mach-o/dyld.h> |
3522 | main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16)) | 3589 | main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16)) |
@@ -3526,23 +3593,23 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16)) | |||
3526 | } | 3593 | } |
3527 | _ACEOF | 3594 | _ACEOF |
3528 | rm -f conftest$ac_exeext | 3595 | rm -f conftest$ac_exeext |
3529 | if { (eval echo "$as_me:3529: \"$ac_link\"") >&5 | 3596 | if { (eval echo "$as_me:3596: \"$ac_link\"") >&5 |
3530 | (eval $ac_link) 2>&5 | 3597 | (eval $ac_link) 2>&5 |
3531 | ac_status=$? | 3598 | ac_status=$? |
3532 | echo "$as_me:3532: \$? = $ac_status" >&5 | 3599 | echo "$as_me:3599: \$? = $ac_status" >&5 |
3533 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' | 3600 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' |
3534 | { (eval echo "$as_me:3534: \"$ac_try\"") >&5 | 3601 | { (eval echo "$as_me:3601: \"$ac_try\"") >&5 |
3535 | (eval $ac_try) 2>&5 | 3602 | (eval $ac_try) 2>&5 |
3536 | ac_status=$? | 3603 | ac_status=$? |
3537 | echo "$as_me:3537: \$? = $ac_status" >&5 | 3604 | echo "$as_me:3604: \$? = $ac_status" >&5 |
3538 | (exit $ac_status); }; }; then | 3605 | (exit $ac_status); }; }; then |
3539 | echo "$as_me:3539: result: working" >&5 | 3606 | echo "$as_me:3606: result: working" >&5 |
3540 | echo "${ECHO_T}working" >&6 | 3607 | echo "${ECHO_T}working" >&6 |
3541 | else | 3608 | else |
3542 | echo "$as_me: program exited with status $ac_status" >&5 | 3609 | echo "$as_me: program exited with status $ac_status" >&5 |
3543 | echo "$as_me: failed program was:" >&5 | 3610 | echo "$as_me: failed program was:" >&5 |
3544 | cat conftest.$ac_ext >&5 | 3611 | cat conftest.$ac_ext >&5 |
3545 | echo "$as_me:3545: result: buggy" >&5 | 3612 | echo "$as_me:3612: result: buggy" >&5 |
3546 | echo "${ECHO_T}buggy" >&6 | 3613 | echo "${ECHO_T}buggy" >&6 |
3547 | cat >>confdefs.h <<\EOF | 3614 | cat >>confdefs.h <<\EOF |
3548 | #define BROKEN_GETADDRINFO 1 | 3615 | #define BROKEN_GETADDRINFO 1 |
@@ -3563,6 +3630,10 @@ EOF | |||
3563 | #define BROKEN_SETREGID 1 | 3630 | #define BROKEN_SETREGID 1 |
3564 | EOF | 3631 | EOF |
3565 | 3632 | ||
3633 | cat >>confdefs.h <<EOF | ||
3634 | #define BIND_8_COMPAT 1 | ||
3635 | EOF | ||
3636 | |||
3566 | ;; | 3637 | ;; |
3567 | *-*-hpux10.26) | 3638 | *-*-hpux10.26) |
3568 | if test -z "$GCC"; then | 3639 | if test -z "$GCC"; then |
@@ -3587,14 +3658,6 @@ EOF | |||
3587 | EOF | 3658 | EOF |
3588 | 3659 | ||
3589 | cat >>confdefs.h <<\EOF | 3660 | cat >>confdefs.h <<\EOF |
3590 | #define DISABLE_SHADOW 1 | ||
3591 | EOF | ||
3592 | |||
3593 | cat >>confdefs.h <<\EOF | ||
3594 | #define DISABLE_UTMP 1 | ||
3595 | EOF | ||
3596 | |||
3597 | cat >>confdefs.h <<\EOF | ||
3598 | #define LOCKED_PASSWD_STRING "*" | 3661 | #define LOCKED_PASSWD_STRING "*" |
3599 | EOF | 3662 | EOF |
3600 | 3663 | ||
@@ -3604,7 +3667,7 @@ EOF | |||
3604 | 3667 | ||
3605 | LIBS="$LIBS -lsec -lsecpw" | 3668 | LIBS="$LIBS -lsec -lsecpw" |
3606 | 3669 | ||
3607 | echo "$as_me:3607: checking for t_error in -lxnet" >&5 | 3670 | echo "$as_me:3670: checking for t_error in -lxnet" >&5 |
3608 | echo $ECHO_N "checking for t_error in -lxnet... $ECHO_C" >&6 | 3671 | echo $ECHO_N "checking for t_error in -lxnet... $ECHO_C" >&6 |
3609 | if test "${ac_cv_lib_xnet_t_error+set}" = set; then | 3672 | if test "${ac_cv_lib_xnet_t_error+set}" = set; then |
3610 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 3673 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -3612,7 +3675,7 @@ else | |||
3612 | ac_check_lib_save_LIBS=$LIBS | 3675 | ac_check_lib_save_LIBS=$LIBS |
3613 | LIBS="-lxnet $LIBS" | 3676 | LIBS="-lxnet $LIBS" |
3614 | cat >conftest.$ac_ext <<_ACEOF | 3677 | cat >conftest.$ac_ext <<_ACEOF |
3615 | #line 3615 "configure" | 3678 | #line 3678 "configure" |
3616 | #include "confdefs.h" | 3679 | #include "confdefs.h" |
3617 | 3680 | ||
3618 | /* Override any gcc2 internal prototype to avoid an error. */ | 3681 | /* Override any gcc2 internal prototype to avoid an error. */ |
@@ -3631,16 +3694,16 @@ t_error (); | |||
3631 | } | 3694 | } |
3632 | _ACEOF | 3695 | _ACEOF |
3633 | rm -f conftest.$ac_objext conftest$ac_exeext | 3696 | rm -f conftest.$ac_objext conftest$ac_exeext |
3634 | if { (eval echo "$as_me:3634: \"$ac_link\"") >&5 | 3697 | if { (eval echo "$as_me:3697: \"$ac_link\"") >&5 |
3635 | (eval $ac_link) 2>&5 | 3698 | (eval $ac_link) 2>&5 |
3636 | ac_status=$? | 3699 | ac_status=$? |
3637 | echo "$as_me:3637: \$? = $ac_status" >&5 | 3700 | echo "$as_me:3700: \$? = $ac_status" >&5 |
3638 | (exit $ac_status); } && | 3701 | (exit $ac_status); } && |
3639 | { ac_try='test -s conftest$ac_exeext' | 3702 | { ac_try='test -s conftest$ac_exeext' |
3640 | { (eval echo "$as_me:3640: \"$ac_try\"") >&5 | 3703 | { (eval echo "$as_me:3703: \"$ac_try\"") >&5 |
3641 | (eval $ac_try) 2>&5 | 3704 | (eval $ac_try) 2>&5 |
3642 | ac_status=$? | 3705 | ac_status=$? |
3643 | echo "$as_me:3643: \$? = $ac_status" >&5 | 3706 | echo "$as_me:3706: \$? = $ac_status" >&5 |
3644 | (exit $ac_status); }; }; then | 3707 | (exit $ac_status); }; }; then |
3645 | ac_cv_lib_xnet_t_error=yes | 3708 | ac_cv_lib_xnet_t_error=yes |
3646 | else | 3709 | else |
@@ -3651,7 +3714,7 @@ fi | |||
3651 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 3714 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
3652 | LIBS=$ac_check_lib_save_LIBS | 3715 | LIBS=$ac_check_lib_save_LIBS |
3653 | fi | 3716 | fi |
3654 | echo "$as_me:3654: result: $ac_cv_lib_xnet_t_error" >&5 | 3717 | echo "$as_me:3717: result: $ac_cv_lib_xnet_t_error" >&5 |
3655 | echo "${ECHO_T}$ac_cv_lib_xnet_t_error" >&6 | 3718 | echo "${ECHO_T}$ac_cv_lib_xnet_t_error" >&6 |
3656 | if test $ac_cv_lib_xnet_t_error = yes; then | 3719 | if test $ac_cv_lib_xnet_t_error = yes; then |
3657 | cat >>confdefs.h <<EOF | 3720 | cat >>confdefs.h <<EOF |
@@ -3661,7 +3724,7 @@ EOF | |||
3661 | LIBS="-lxnet $LIBS" | 3724 | LIBS="-lxnet $LIBS" |
3662 | 3725 | ||
3663 | else | 3726 | else |
3664 | { { echo "$as_me:3664: error: *** -lxnet needed on HP-UX - check config.log ***" >&5 | 3727 | { { echo "$as_me:3727: error: *** -lxnet needed on HP-UX - check config.log ***" >&5 |
3665 | echo "$as_me: error: *** -lxnet needed on HP-UX - check config.log ***" >&2;} | 3728 | echo "$as_me: error: *** -lxnet needed on HP-UX - check config.log ***" >&2;} |
3666 | { (exit 1); exit 1; }; } | 3729 | { (exit 1); exit 1; }; } |
3667 | fi | 3730 | fi |
@@ -3687,14 +3750,6 @@ EOF | |||
3687 | EOF | 3750 | EOF |
3688 | 3751 | ||
3689 | cat >>confdefs.h <<\EOF | 3752 | cat >>confdefs.h <<\EOF |
3690 | #define DISABLE_SHADOW 1 | ||
3691 | EOF | ||
3692 | |||
3693 | cat >>confdefs.h <<\EOF | ||
3694 | #define DISABLE_UTMP 1 | ||
3695 | EOF | ||
3696 | |||
3697 | cat >>confdefs.h <<\EOF | ||
3698 | #define LOCKED_PASSWD_STRING "*" | 3753 | #define LOCKED_PASSWD_STRING "*" |
3699 | EOF | 3754 | EOF |
3700 | 3755 | ||
@@ -3704,7 +3759,7 @@ EOF | |||
3704 | 3759 | ||
3705 | LIBS="$LIBS -lsec" | 3760 | LIBS="$LIBS -lsec" |
3706 | 3761 | ||
3707 | echo "$as_me:3707: checking for t_error in -lxnet" >&5 | 3762 | echo "$as_me:3762: checking for t_error in -lxnet" >&5 |
3708 | echo $ECHO_N "checking for t_error in -lxnet... $ECHO_C" >&6 | 3763 | echo $ECHO_N "checking for t_error in -lxnet... $ECHO_C" >&6 |
3709 | if test "${ac_cv_lib_xnet_t_error+set}" = set; then | 3764 | if test "${ac_cv_lib_xnet_t_error+set}" = set; then |
3710 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 3765 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -3712,7 +3767,7 @@ else | |||
3712 | ac_check_lib_save_LIBS=$LIBS | 3767 | ac_check_lib_save_LIBS=$LIBS |
3713 | LIBS="-lxnet $LIBS" | 3768 | LIBS="-lxnet $LIBS" |
3714 | cat >conftest.$ac_ext <<_ACEOF | 3769 | cat >conftest.$ac_ext <<_ACEOF |
3715 | #line 3715 "configure" | 3770 | #line 3770 "configure" |
3716 | #include "confdefs.h" | 3771 | #include "confdefs.h" |
3717 | 3772 | ||
3718 | /* Override any gcc2 internal prototype to avoid an error. */ | 3773 | /* Override any gcc2 internal prototype to avoid an error. */ |
@@ -3731,16 +3786,16 @@ t_error (); | |||
3731 | } | 3786 | } |
3732 | _ACEOF | 3787 | _ACEOF |
3733 | rm -f conftest.$ac_objext conftest$ac_exeext | 3788 | rm -f conftest.$ac_objext conftest$ac_exeext |
3734 | if { (eval echo "$as_me:3734: \"$ac_link\"") >&5 | 3789 | if { (eval echo "$as_me:3789: \"$ac_link\"") >&5 |
3735 | (eval $ac_link) 2>&5 | 3790 | (eval $ac_link) 2>&5 |
3736 | ac_status=$? | 3791 | ac_status=$? |
3737 | echo "$as_me:3737: \$? = $ac_status" >&5 | 3792 | echo "$as_me:3792: \$? = $ac_status" >&5 |
3738 | (exit $ac_status); } && | 3793 | (exit $ac_status); } && |
3739 | { ac_try='test -s conftest$ac_exeext' | 3794 | { ac_try='test -s conftest$ac_exeext' |
3740 | { (eval echo "$as_me:3740: \"$ac_try\"") >&5 | 3795 | { (eval echo "$as_me:3795: \"$ac_try\"") >&5 |
3741 | (eval $ac_try) 2>&5 | 3796 | (eval $ac_try) 2>&5 |
3742 | ac_status=$? | 3797 | ac_status=$? |
3743 | echo "$as_me:3743: \$? = $ac_status" >&5 | 3798 | echo "$as_me:3798: \$? = $ac_status" >&5 |
3744 | (exit $ac_status); }; }; then | 3799 | (exit $ac_status); }; }; then |
3745 | ac_cv_lib_xnet_t_error=yes | 3800 | ac_cv_lib_xnet_t_error=yes |
3746 | else | 3801 | else |
@@ -3751,7 +3806,7 @@ fi | |||
3751 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 3806 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
3752 | LIBS=$ac_check_lib_save_LIBS | 3807 | LIBS=$ac_check_lib_save_LIBS |
3753 | fi | 3808 | fi |
3754 | echo "$as_me:3754: result: $ac_cv_lib_xnet_t_error" >&5 | 3809 | echo "$as_me:3809: result: $ac_cv_lib_xnet_t_error" >&5 |
3755 | echo "${ECHO_T}$ac_cv_lib_xnet_t_error" >&6 | 3810 | echo "${ECHO_T}$ac_cv_lib_xnet_t_error" >&6 |
3756 | if test $ac_cv_lib_xnet_t_error = yes; then | 3811 | if test $ac_cv_lib_xnet_t_error = yes; then |
3757 | cat >>confdefs.h <<EOF | 3812 | cat >>confdefs.h <<EOF |
@@ -3761,7 +3816,7 @@ EOF | |||
3761 | LIBS="-lxnet $LIBS" | 3816 | LIBS="-lxnet $LIBS" |
3762 | 3817 | ||
3763 | else | 3818 | else |
3764 | { { echo "$as_me:3764: error: *** -lxnet needed on HP-UX - check config.log ***" >&5 | 3819 | { { echo "$as_me:3819: error: *** -lxnet needed on HP-UX - check config.log ***" >&5 |
3765 | echo "$as_me: error: *** -lxnet needed on HP-UX - check config.log ***" >&2;} | 3820 | echo "$as_me: error: *** -lxnet needed on HP-UX - check config.log ***" >&2;} |
3766 | { (exit 1); exit 1; }; } | 3821 | { (exit 1); exit 1; }; } |
3767 | fi | 3822 | fi |
@@ -3787,10 +3842,6 @@ EOF | |||
3787 | EOF | 3842 | EOF |
3788 | 3843 | ||
3789 | cat >>confdefs.h <<\EOF | 3844 | cat >>confdefs.h <<\EOF |
3790 | #define DISABLE_SHADOW 1 | ||
3791 | EOF | ||
3792 | |||
3793 | cat >>confdefs.h <<\EOF | ||
3794 | #define DISABLE_UTMP 1 | 3845 | #define DISABLE_UTMP 1 |
3795 | EOF | 3846 | EOF |
3796 | 3847 | ||
@@ -3802,9 +3853,16 @@ EOF | |||
3802 | #define SPT_TYPE SPT_PSTAT | 3853 | #define SPT_TYPE SPT_PSTAT |
3803 | EOF | 3854 | EOF |
3804 | 3855 | ||
3856 | case "$host" in | ||
3857 | *-*-hpux11.11*) | ||
3858 | cat >>confdefs.h <<\EOF | ||
3859 | #define BROKEN_GETADDRINFO 1 | ||
3860 | EOF | ||
3861 | ;; | ||
3862 | esac | ||
3805 | LIBS="$LIBS -lsec" | 3863 | LIBS="$LIBS -lsec" |
3806 | 3864 | ||
3807 | echo "$as_me:3807: checking for t_error in -lxnet" >&5 | 3865 | echo "$as_me:3865: checking for t_error in -lxnet" >&5 |
3808 | echo $ECHO_N "checking for t_error in -lxnet... $ECHO_C" >&6 | 3866 | echo $ECHO_N "checking for t_error in -lxnet... $ECHO_C" >&6 |
3809 | if test "${ac_cv_lib_xnet_t_error+set}" = set; then | 3867 | if test "${ac_cv_lib_xnet_t_error+set}" = set; then |
3810 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 3868 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -3812,7 +3870,7 @@ else | |||
3812 | ac_check_lib_save_LIBS=$LIBS | 3870 | ac_check_lib_save_LIBS=$LIBS |
3813 | LIBS="-lxnet $LIBS" | 3871 | LIBS="-lxnet $LIBS" |
3814 | cat >conftest.$ac_ext <<_ACEOF | 3872 | cat >conftest.$ac_ext <<_ACEOF |
3815 | #line 3815 "configure" | 3873 | #line 3873 "configure" |
3816 | #include "confdefs.h" | 3874 | #include "confdefs.h" |
3817 | 3875 | ||
3818 | /* Override any gcc2 internal prototype to avoid an error. */ | 3876 | /* Override any gcc2 internal prototype to avoid an error. */ |
@@ -3831,16 +3889,16 @@ t_error (); | |||
3831 | } | 3889 | } |
3832 | _ACEOF | 3890 | _ACEOF |
3833 | rm -f conftest.$ac_objext conftest$ac_exeext | 3891 | rm -f conftest.$ac_objext conftest$ac_exeext |
3834 | if { (eval echo "$as_me:3834: \"$ac_link\"") >&5 | 3892 | if { (eval echo "$as_me:3892: \"$ac_link\"") >&5 |
3835 | (eval $ac_link) 2>&5 | 3893 | (eval $ac_link) 2>&5 |
3836 | ac_status=$? | 3894 | ac_status=$? |
3837 | echo "$as_me:3837: \$? = $ac_status" >&5 | 3895 | echo "$as_me:3895: \$? = $ac_status" >&5 |
3838 | (exit $ac_status); } && | 3896 | (exit $ac_status); } && |
3839 | { ac_try='test -s conftest$ac_exeext' | 3897 | { ac_try='test -s conftest$ac_exeext' |
3840 | { (eval echo "$as_me:3840: \"$ac_try\"") >&5 | 3898 | { (eval echo "$as_me:3898: \"$ac_try\"") >&5 |
3841 | (eval $ac_try) 2>&5 | 3899 | (eval $ac_try) 2>&5 |
3842 | ac_status=$? | 3900 | ac_status=$? |
3843 | echo "$as_me:3843: \$? = $ac_status" >&5 | 3901 | echo "$as_me:3901: \$? = $ac_status" >&5 |
3844 | (exit $ac_status); }; }; then | 3902 | (exit $ac_status); }; }; then |
3845 | ac_cv_lib_xnet_t_error=yes | 3903 | ac_cv_lib_xnet_t_error=yes |
3846 | else | 3904 | else |
@@ -3851,7 +3909,7 @@ fi | |||
3851 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 3909 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
3852 | LIBS=$ac_check_lib_save_LIBS | 3910 | LIBS=$ac_check_lib_save_LIBS |
3853 | fi | 3911 | fi |
3854 | echo "$as_me:3854: result: $ac_cv_lib_xnet_t_error" >&5 | 3912 | echo "$as_me:3912: result: $ac_cv_lib_xnet_t_error" >&5 |
3855 | echo "${ECHO_T}$ac_cv_lib_xnet_t_error" >&6 | 3913 | echo "${ECHO_T}$ac_cv_lib_xnet_t_error" >&6 |
3856 | if test $ac_cv_lib_xnet_t_error = yes; then | 3914 | if test $ac_cv_lib_xnet_t_error = yes; then |
3857 | cat >>confdefs.h <<EOF | 3915 | cat >>confdefs.h <<EOF |
@@ -3861,21 +3919,31 @@ EOF | |||
3861 | LIBS="-lxnet $LIBS" | 3919 | LIBS="-lxnet $LIBS" |
3862 | 3920 | ||
3863 | else | 3921 | else |
3864 | { { echo "$as_me:3864: error: *** -lxnet needed on HP-UX - check config.log ***" >&5 | 3922 | { { echo "$as_me:3922: error: *** -lxnet needed on HP-UX - check config.log ***" >&5 |
3865 | echo "$as_me: error: *** -lxnet needed on HP-UX - check config.log ***" >&2;} | 3923 | echo "$as_me: error: *** -lxnet needed on HP-UX - check config.log ***" >&2;} |
3866 | { (exit 1); exit 1; }; } | 3924 | { (exit 1); exit 1; }; } |
3867 | fi | 3925 | fi |
3868 | 3926 | ||
3869 | ;; | 3927 | ;; |
3870 | *-*-irix5*) | 3928 | *-*-irix5*) |
3871 | CPPFLAGS="$CPPFLAGS -I/usr/local/include" | ||
3872 | LDFLAGS="$LDFLAGS" | ||
3873 | PATH="$PATH:/usr/etc" | 3929 | PATH="$PATH:/usr/etc" |
3874 | cat >>confdefs.h <<\EOF | 3930 | cat >>confdefs.h <<\EOF |
3875 | #define BROKEN_INET_NTOA 1 | 3931 | #define BROKEN_INET_NTOA 1 |
3876 | EOF | 3932 | EOF |
3877 | 3933 | ||
3878 | cat >>confdefs.h <<\EOF | 3934 | cat >>confdefs.h <<\EOF |
3935 | #define SETEUID_BREAKS_SETUID 1 | ||
3936 | EOF | ||
3937 | |||
3938 | cat >>confdefs.h <<\EOF | ||
3939 | #define BROKEN_SETREUID 1 | ||
3940 | EOF | ||
3941 | |||
3942 | cat >>confdefs.h <<\EOF | ||
3943 | #define BROKEN_SETREGID 1 | ||
3944 | EOF | ||
3945 | |||
3946 | cat >>confdefs.h <<\EOF | ||
3879 | #define WITH_ABBREV_NO_TTY 1 | 3947 | #define WITH_ABBREV_NO_TTY 1 |
3880 | EOF | 3948 | EOF |
3881 | 3949 | ||
@@ -3885,8 +3953,6 @@ EOF | |||
3885 | 3953 | ||
3886 | ;; | 3954 | ;; |
3887 | *-*-irix6*) | 3955 | *-*-irix6*) |
3888 | CPPFLAGS="$CPPFLAGS -I/usr/local/include" | ||
3889 | LDFLAGS="$LDFLAGS" | ||
3890 | PATH="$PATH:/usr/etc" | 3956 | PATH="$PATH:/usr/etc" |
3891 | cat >>confdefs.h <<\EOF | 3957 | cat >>confdefs.h <<\EOF |
3892 | #define WITH_IRIX_ARRAY 1 | 3958 | #define WITH_IRIX_ARRAY 1 |
@@ -3900,13 +3966,13 @@ EOF | |||
3900 | #define WITH_IRIX_AUDIT 1 | 3966 | #define WITH_IRIX_AUDIT 1 |
3901 | EOF | 3967 | EOF |
3902 | 3968 | ||
3903 | echo "$as_me:3903: checking for jlimit_startjob" >&5 | 3969 | echo "$as_me:3969: checking for jlimit_startjob" >&5 |
3904 | echo $ECHO_N "checking for jlimit_startjob... $ECHO_C" >&6 | 3970 | echo $ECHO_N "checking for jlimit_startjob... $ECHO_C" >&6 |
3905 | if test "${ac_cv_func_jlimit_startjob+set}" = set; then | 3971 | if test "${ac_cv_func_jlimit_startjob+set}" = set; then |
3906 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 3972 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
3907 | else | 3973 | else |
3908 | cat >conftest.$ac_ext <<_ACEOF | 3974 | cat >conftest.$ac_ext <<_ACEOF |
3909 | #line 3909 "configure" | 3975 | #line 3975 "configure" |
3910 | #include "confdefs.h" | 3976 | #include "confdefs.h" |
3911 | /* System header to define __stub macros and hopefully few prototypes, | 3977 | /* System header to define __stub macros and hopefully few prototypes, |
3912 | which can conflict with char jlimit_startjob (); below. */ | 3978 | which can conflict with char jlimit_startjob (); below. */ |
@@ -3937,16 +4003,16 @@ f = jlimit_startjob; | |||
3937 | } | 4003 | } |
3938 | _ACEOF | 4004 | _ACEOF |
3939 | rm -f conftest.$ac_objext conftest$ac_exeext | 4005 | rm -f conftest.$ac_objext conftest$ac_exeext |
3940 | if { (eval echo "$as_me:3940: \"$ac_link\"") >&5 | 4006 | if { (eval echo "$as_me:4006: \"$ac_link\"") >&5 |
3941 | (eval $ac_link) 2>&5 | 4007 | (eval $ac_link) 2>&5 |
3942 | ac_status=$? | 4008 | ac_status=$? |
3943 | echo "$as_me:3943: \$? = $ac_status" >&5 | 4009 | echo "$as_me:4009: \$? = $ac_status" >&5 |
3944 | (exit $ac_status); } && | 4010 | (exit $ac_status); } && |
3945 | { ac_try='test -s conftest$ac_exeext' | 4011 | { ac_try='test -s conftest$ac_exeext' |
3946 | { (eval echo "$as_me:3946: \"$ac_try\"") >&5 | 4012 | { (eval echo "$as_me:4012: \"$ac_try\"") >&5 |
3947 | (eval $ac_try) 2>&5 | 4013 | (eval $ac_try) 2>&5 |
3948 | ac_status=$? | 4014 | ac_status=$? |
3949 | echo "$as_me:3949: \$? = $ac_status" >&5 | 4015 | echo "$as_me:4015: \$? = $ac_status" >&5 |
3950 | (exit $ac_status); }; }; then | 4016 | (exit $ac_status); }; }; then |
3951 | ac_cv_func_jlimit_startjob=yes | 4017 | ac_cv_func_jlimit_startjob=yes |
3952 | else | 4018 | else |
@@ -3956,7 +4022,7 @@ ac_cv_func_jlimit_startjob=no | |||
3956 | fi | 4022 | fi |
3957 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 4023 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
3958 | fi | 4024 | fi |
3959 | echo "$as_me:3959: result: $ac_cv_func_jlimit_startjob" >&5 | 4025 | echo "$as_me:4025: result: $ac_cv_func_jlimit_startjob" >&5 |
3960 | echo "${ECHO_T}$ac_cv_func_jlimit_startjob" >&6 | 4026 | echo "${ECHO_T}$ac_cv_func_jlimit_startjob" >&6 |
3961 | if test $ac_cv_func_jlimit_startjob = yes; then | 4027 | if test $ac_cv_func_jlimit_startjob = yes; then |
3962 | cat >>confdefs.h <<\EOF | 4028 | cat >>confdefs.h <<\EOF |
@@ -4029,7 +4095,9 @@ EOF | |||
4029 | ;; | 4095 | ;; |
4030 | *-*-netbsd*) | 4096 | *-*-netbsd*) |
4031 | check_for_libcrypt_before=1 | 4097 | check_for_libcrypt_before=1 |
4032 | need_dash_r=1 | 4098 | if test "x$withval" != "xno" ; then |
4099 | need_dash_r=1 | ||
4100 | fi | ||
4033 | ;; | 4101 | ;; |
4034 | *-*-freebsd*) | 4102 | *-*-freebsd*) |
4035 | check_for_libcrypt_later=1 | 4103 | check_for_libcrypt_later=1 |
@@ -4069,13 +4137,8 @@ EOF | |||
4069 | #define BROKEN_SAVED_UIDS 1 | 4137 | #define BROKEN_SAVED_UIDS 1 |
4070 | EOF | 4138 | EOF |
4071 | 4139 | ||
4072 | CPPFLAGS="$CPPFLAGS -I/usr/local/include" | ||
4073 | CFLAGS="$CFLAGS" | ||
4074 | ;; | 4140 | ;; |
4075 | *-*-solaris*) | 4141 | *-*-solaris*) |
4076 | CPPFLAGS="$CPPFLAGS -I/usr/local/include" | ||
4077 | LDFLAGS="$LDFLAGS -L/usr/local/lib -R/usr/local/lib" | ||
4078 | need_dash_r=1 | ||
4079 | cat >>confdefs.h <<\EOF | 4142 | cat >>confdefs.h <<\EOF |
4080 | #define PAM_SUN_CODEBASE 1 | 4143 | #define PAM_SUN_CODEBASE 1 |
4081 | EOF | 4144 | EOF |
@@ -4104,11 +4167,11 @@ EOF | |||
4104 | external_path_file=/etc/default/login | 4167 | external_path_file=/etc/default/login |
4105 | # hardwire lastlog location (can't detect it on some versions) | 4168 | # hardwire lastlog location (can't detect it on some versions) |
4106 | conf_lastlog_location="/var/adm/lastlog" | 4169 | conf_lastlog_location="/var/adm/lastlog" |
4107 | echo "$as_me:4107: checking for obsolete utmp and wtmp in solaris2.x" >&5 | 4170 | echo "$as_me:4170: checking for obsolete utmp and wtmp in solaris2.x" >&5 |
4108 | echo $ECHO_N "checking for obsolete utmp and wtmp in solaris2.x... $ECHO_C" >&6 | 4171 | echo $ECHO_N "checking for obsolete utmp and wtmp in solaris2.x... $ECHO_C" >&6 |
4109 | sol2ver=`echo "$host"| sed -e 's/.*[0-9]\.//'` | 4172 | sol2ver=`echo "$host"| sed -e 's/.*[0-9]\.//'` |
4110 | if test "$sol2ver" -ge 8; then | 4173 | if test "$sol2ver" -ge 8; then |
4111 | echo "$as_me:4111: result: yes" >&5 | 4174 | echo "$as_me:4174: result: yes" >&5 |
4112 | echo "${ECHO_T}yes" >&6 | 4175 | echo "${ECHO_T}yes" >&6 |
4113 | cat >>confdefs.h <<\EOF | 4176 | cat >>confdefs.h <<\EOF |
4114 | #define DISABLE_UTMP 1 | 4177 | #define DISABLE_UTMP 1 |
@@ -4119,7 +4182,7 @@ EOF | |||
4119 | EOF | 4182 | EOF |
4120 | 4183 | ||
4121 | else | 4184 | else |
4122 | echo "$as_me:4122: result: no" >&5 | 4185 | echo "$as_me:4185: result: no" >&5 |
4123 | echo "${ECHO_T}no" >&6 | 4186 | echo "${ECHO_T}no" >&6 |
4124 | fi | 4187 | fi |
4125 | ;; | 4188 | ;; |
@@ -4129,13 +4192,13 @@ echo "${ECHO_T}no" >&6 | |||
4129 | for ac_func in getpwanam | 4192 | for ac_func in getpwanam |
4130 | do | 4193 | do |
4131 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` | 4194 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` |
4132 | echo "$as_me:4132: checking for $ac_func" >&5 | 4195 | echo "$as_me:4195: checking for $ac_func" >&5 |
4133 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 | 4196 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 |
4134 | if eval "test \"\${$as_ac_var+set}\" = set"; then | 4197 | if eval "test \"\${$as_ac_var+set}\" = set"; then |
4135 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 4198 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
4136 | else | 4199 | else |
4137 | cat >conftest.$ac_ext <<_ACEOF | 4200 | cat >conftest.$ac_ext <<_ACEOF |
4138 | #line 4138 "configure" | 4201 | #line 4201 "configure" |
4139 | #include "confdefs.h" | 4202 | #include "confdefs.h" |
4140 | /* System header to define __stub macros and hopefully few prototypes, | 4203 | /* System header to define __stub macros and hopefully few prototypes, |
4141 | which can conflict with char $ac_func (); below. */ | 4204 | which can conflict with char $ac_func (); below. */ |
@@ -4166,16 +4229,16 @@ f = $ac_func; | |||
4166 | } | 4229 | } |
4167 | _ACEOF | 4230 | _ACEOF |
4168 | rm -f conftest.$ac_objext conftest$ac_exeext | 4231 | rm -f conftest.$ac_objext conftest$ac_exeext |
4169 | if { (eval echo "$as_me:4169: \"$ac_link\"") >&5 | 4232 | if { (eval echo "$as_me:4232: \"$ac_link\"") >&5 |
4170 | (eval $ac_link) 2>&5 | 4233 | (eval $ac_link) 2>&5 |
4171 | ac_status=$? | 4234 | ac_status=$? |
4172 | echo "$as_me:4172: \$? = $ac_status" >&5 | 4235 | echo "$as_me:4235: \$? = $ac_status" >&5 |
4173 | (exit $ac_status); } && | 4236 | (exit $ac_status); } && |
4174 | { ac_try='test -s conftest$ac_exeext' | 4237 | { ac_try='test -s conftest$ac_exeext' |
4175 | { (eval echo "$as_me:4175: \"$ac_try\"") >&5 | 4238 | { (eval echo "$as_me:4238: \"$ac_try\"") >&5 |
4176 | (eval $ac_try) 2>&5 | 4239 | (eval $ac_try) 2>&5 |
4177 | ac_status=$? | 4240 | ac_status=$? |
4178 | echo "$as_me:4178: \$? = $ac_status" >&5 | 4241 | echo "$as_me:4241: \$? = $ac_status" >&5 |
4179 | (exit $ac_status); }; }; then | 4242 | (exit $ac_status); }; }; then |
4180 | eval "$as_ac_var=yes" | 4243 | eval "$as_ac_var=yes" |
4181 | else | 4244 | else |
@@ -4185,7 +4248,7 @@ eval "$as_ac_var=no" | |||
4185 | fi | 4248 | fi |
4186 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 4249 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
4187 | fi | 4250 | fi |
4188 | echo "$as_me:4188: result: `eval echo '${'$as_ac_var'}'`" >&5 | 4251 | echo "$as_me:4251: result: `eval echo '${'$as_ac_var'}'`" >&5 |
4189 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 | 4252 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 |
4190 | if test `eval echo '${'$as_ac_var'}'` = yes; then | 4253 | if test `eval echo '${'$as_ac_var'}'` = yes; then |
4191 | cat >>confdefs.h <<EOF | 4254 | cat >>confdefs.h <<EOF |
@@ -4208,8 +4271,6 @@ EOF | |||
4208 | 4271 | ||
4209 | ;; | 4272 | ;; |
4210 | *-ncr-sysv*) | 4273 | *-ncr-sysv*) |
4211 | CPPFLAGS="$CPPFLAGS -I/usr/local/include" | ||
4212 | LDFLAGS="$LDFLAGS -L/usr/local/lib" | ||
4213 | LIBS="$LIBS -lc89" | 4274 | LIBS="$LIBS -lc89" |
4214 | cat >>confdefs.h <<\EOF | 4275 | cat >>confdefs.h <<\EOF |
4215 | #define USE_PIPES 1 | 4276 | #define USE_PIPES 1 |
@@ -4233,9 +4294,66 @@ EOF | |||
4233 | 4294 | ||
4234 | ;; | 4295 | ;; |
4235 | *-sni-sysv*) | 4296 | *-sni-sysv*) |
4236 | CPPFLAGS="$CPPFLAGS -I/usr/local/include" | ||
4237 | # /usr/ucblib MUST NOT be searched on ReliantUNIX | 4297 | # /usr/ucblib MUST NOT be searched on ReliantUNIX |
4238 | LDFLAGS="$LDFLAGS -L/usr/local/lib" | 4298 | |
4299 | echo "$as_me:4299: checking for dlsym in -ldl" >&5 | ||
4300 | echo $ECHO_N "checking for dlsym in -ldl... $ECHO_C" >&6 | ||
4301 | if test "${ac_cv_lib_dl_dlsym+set}" = set; then | ||
4302 | echo $ECHO_N "(cached) $ECHO_C" >&6 | ||
4303 | else | ||
4304 | ac_check_lib_save_LIBS=$LIBS | ||
4305 | LIBS="-ldl $LIBS" | ||
4306 | cat >conftest.$ac_ext <<_ACEOF | ||
4307 | #line 4307 "configure" | ||
4308 | #include "confdefs.h" | ||
4309 | |||
4310 | /* Override any gcc2 internal prototype to avoid an error. */ | ||
4311 | #ifdef __cplusplus | ||
4312 | extern "C" | ||
4313 | #endif | ||
4314 | /* We use char because int might match the return type of a gcc2 | ||
4315 | builtin and then its argument prototype would still apply. */ | ||
4316 | char dlsym (); | ||
4317 | int | ||
4318 | main () | ||
4319 | { | ||
4320 | dlsym (); | ||
4321 | ; | ||
4322 | return 0; | ||
4323 | } | ||
4324 | _ACEOF | ||
4325 | rm -f conftest.$ac_objext conftest$ac_exeext | ||
4326 | if { (eval echo "$as_me:4326: \"$ac_link\"") >&5 | ||
4327 | (eval $ac_link) 2>&5 | ||
4328 | ac_status=$? | ||
4329 | echo "$as_me:4329: \$? = $ac_status" >&5 | ||
4330 | (exit $ac_status); } && | ||
4331 | { ac_try='test -s conftest$ac_exeext' | ||
4332 | { (eval echo "$as_me:4332: \"$ac_try\"") >&5 | ||
4333 | (eval $ac_try) 2>&5 | ||
4334 | ac_status=$? | ||
4335 | echo "$as_me:4335: \$? = $ac_status" >&5 | ||
4336 | (exit $ac_status); }; }; then | ||
4337 | ac_cv_lib_dl_dlsym=yes | ||
4338 | else | ||
4339 | echo "$as_me: failed program was:" >&5 | ||
4340 | cat conftest.$ac_ext >&5 | ||
4341 | ac_cv_lib_dl_dlsym=no | ||
4342 | fi | ||
4343 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | ||
4344 | LIBS=$ac_check_lib_save_LIBS | ||
4345 | fi | ||
4346 | echo "$as_me:4346: result: $ac_cv_lib_dl_dlsym" >&5 | ||
4347 | echo "${ECHO_T}$ac_cv_lib_dl_dlsym" >&6 | ||
4348 | if test $ac_cv_lib_dl_dlsym = yes; then | ||
4349 | cat >>confdefs.h <<EOF | ||
4350 | #define HAVE_LIBDL 1 | ||
4351 | EOF | ||
4352 | |||
4353 | LIBS="-ldl $LIBS" | ||
4354 | |||
4355 | fi | ||
4356 | |||
4239 | IPADDR_IN_DISPLAY=yes | 4357 | IPADDR_IN_DISPLAY=yes |
4240 | cat >>confdefs.h <<\EOF | 4358 | cat >>confdefs.h <<\EOF |
4241 | #define USE_PIPES 1 | 4359 | #define USE_PIPES 1 |
@@ -4246,6 +4364,18 @@ EOF | |||
4246 | EOF | 4364 | EOF |
4247 | 4365 | ||
4248 | cat >>confdefs.h <<\EOF | 4366 | cat >>confdefs.h <<\EOF |
4367 | #define SETEUID_BREAKS_SETUID 1 | ||
4368 | EOF | ||
4369 | |||
4370 | cat >>confdefs.h <<\EOF | ||
4371 | #define BROKEN_SETREUID 1 | ||
4372 | EOF | ||
4373 | |||
4374 | cat >>confdefs.h <<\EOF | ||
4375 | #define BROKEN_SETREGID 1 | ||
4376 | EOF | ||
4377 | |||
4378 | cat >>confdefs.h <<\EOF | ||
4249 | #define SSHD_ACQUIRES_CTTY 1 | 4379 | #define SSHD_ACQUIRES_CTTY 1 |
4250 | EOF | 4380 | EOF |
4251 | 4381 | ||
@@ -4255,8 +4385,6 @@ EOF | |||
4255 | # otherwise you will find lots of "SIOCGPGRP errno 22" on syslog | 4385 | # otherwise you will find lots of "SIOCGPGRP errno 22" on syslog |
4256 | ;; | 4386 | ;; |
4257 | *-*-sysv4.2*) | 4387 | *-*-sysv4.2*) |
4258 | CPPFLAGS="$CPPFLAGS -I/usr/local/include" | ||
4259 | LDFLAGS="$LDFLAGS -L/usr/local/lib" | ||
4260 | cat >>confdefs.h <<\EOF | 4388 | cat >>confdefs.h <<\EOF |
4261 | #define USE_PIPES 1 | 4389 | #define USE_PIPES 1 |
4262 | EOF | 4390 | EOF |
@@ -4275,8 +4403,6 @@ EOF | |||
4275 | 4403 | ||
4276 | ;; | 4404 | ;; |
4277 | *-*-sysv5*) | 4405 | *-*-sysv5*) |
4278 | CPPFLAGS="$CPPFLAGS -I/usr/local/include" | ||
4279 | LDFLAGS="$LDFLAGS -L/usr/local/lib" | ||
4280 | cat >>confdefs.h <<\EOF | 4406 | cat >>confdefs.h <<\EOF |
4281 | #define USE_PIPES 1 | 4407 | #define USE_PIPES 1 |
4282 | EOF | 4408 | EOF |
@@ -4295,13 +4421,10 @@ EOF | |||
4295 | 4421 | ||
4296 | ;; | 4422 | ;; |
4297 | *-*-sysv*) | 4423 | *-*-sysv*) |
4298 | CPPFLAGS="$CPPFLAGS -I/usr/local/include" | ||
4299 | LDFLAGS="$LDFLAGS -L/usr/local/lib" | ||
4300 | ;; | 4424 | ;; |
4301 | *-*-sco3.2v4*) | 4425 | *-*-sco3.2v4*) |
4302 | CPPFLAGS="$CPPFLAGS -Dftruncate=chsize -I/usr/local/include" | 4426 | CPPFLAGS="$CPPFLAGS -Dftruncate=chsize" |
4303 | LDFLAGS="$LDFLAGS -L/usr/local/lib" | 4427 | LIBS="$LIBS -los -lprot -lcrypt_i -lx -ltinfo -lm" |
4304 | LIBS="$LIBS -los -lprot -lx -ltinfo -lm" | ||
4305 | RANLIB=true | 4428 | RANLIB=true |
4306 | no_dev_ptmx=1 | 4429 | no_dev_ptmx=1 |
4307 | cat >>confdefs.h <<\EOF | 4430 | cat >>confdefs.h <<\EOF |
@@ -4331,13 +4454,13 @@ EOF | |||
4331 | for ac_func in getluid setluid | 4454 | for ac_func in getluid setluid |
4332 | do | 4455 | do |
4333 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` | 4456 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` |
4334 | echo "$as_me:4334: checking for $ac_func" >&5 | 4457 | echo "$as_me:4457: checking for $ac_func" >&5 |
4335 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 | 4458 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 |
4336 | if eval "test \"\${$as_ac_var+set}\" = set"; then | 4459 | if eval "test \"\${$as_ac_var+set}\" = set"; then |
4337 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 4460 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
4338 | else | 4461 | else |
4339 | cat >conftest.$ac_ext <<_ACEOF | 4462 | cat >conftest.$ac_ext <<_ACEOF |
4340 | #line 4340 "configure" | 4463 | #line 4463 "configure" |
4341 | #include "confdefs.h" | 4464 | #include "confdefs.h" |
4342 | /* System header to define __stub macros and hopefully few prototypes, | 4465 | /* System header to define __stub macros and hopefully few prototypes, |
4343 | which can conflict with char $ac_func (); below. */ | 4466 | which can conflict with char $ac_func (); below. */ |
@@ -4368,16 +4491,16 @@ f = $ac_func; | |||
4368 | } | 4491 | } |
4369 | _ACEOF | 4492 | _ACEOF |
4370 | rm -f conftest.$ac_objext conftest$ac_exeext | 4493 | rm -f conftest.$ac_objext conftest$ac_exeext |
4371 | if { (eval echo "$as_me:4371: \"$ac_link\"") >&5 | 4494 | if { (eval echo "$as_me:4494: \"$ac_link\"") >&5 |
4372 | (eval $ac_link) 2>&5 | 4495 | (eval $ac_link) 2>&5 |
4373 | ac_status=$? | 4496 | ac_status=$? |
4374 | echo "$as_me:4374: \$? = $ac_status" >&5 | 4497 | echo "$as_me:4497: \$? = $ac_status" >&5 |
4375 | (exit $ac_status); } && | 4498 | (exit $ac_status); } && |
4376 | { ac_try='test -s conftest$ac_exeext' | 4499 | { ac_try='test -s conftest$ac_exeext' |
4377 | { (eval echo "$as_me:4377: \"$ac_try\"") >&5 | 4500 | { (eval echo "$as_me:4500: \"$ac_try\"") >&5 |
4378 | (eval $ac_try) 2>&5 | 4501 | (eval $ac_try) 2>&5 |
4379 | ac_status=$? | 4502 | ac_status=$? |
4380 | echo "$as_me:4380: \$? = $ac_status" >&5 | 4503 | echo "$as_me:4503: \$? = $ac_status" >&5 |
4381 | (exit $ac_status); }; }; then | 4504 | (exit $ac_status); }; }; then |
4382 | eval "$as_ac_var=yes" | 4505 | eval "$as_ac_var=yes" |
4383 | else | 4506 | else |
@@ -4387,7 +4510,7 @@ eval "$as_ac_var=no" | |||
4387 | fi | 4510 | fi |
4388 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 4511 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
4389 | fi | 4512 | fi |
4390 | echo "$as_me:4390: result: `eval echo '${'$as_ac_var'}'`" >&5 | 4513 | echo "$as_me:4513: result: `eval echo '${'$as_ac_var'}'`" >&5 |
4391 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 | 4514 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 |
4392 | if test `eval echo '${'$as_ac_var'}'` = yes; then | 4515 | if test `eval echo '${'$as_ac_var'}'` = yes; then |
4393 | cat >>confdefs.h <<EOF | 4516 | cat >>confdefs.h <<EOF |
@@ -4404,8 +4527,6 @@ done | |||
4404 | if test -z "$GCC"; then | 4527 | if test -z "$GCC"; then |
4405 | CFLAGS="$CFLAGS -belf" | 4528 | CFLAGS="$CFLAGS -belf" |
4406 | fi | 4529 | fi |
4407 | CPPFLAGS="$CPPFLAGS -I/usr/local/include" | ||
4408 | LDFLAGS="$LDFLAGS -L/usr/local/lib" | ||
4409 | LIBS="$LIBS -lprot -lx -ltinfo -lm" | 4530 | LIBS="$LIBS -lprot -lx -ltinfo -lm" |
4410 | no_dev_ptmx=1 | 4531 | no_dev_ptmx=1 |
4411 | cat >>confdefs.h <<\EOF | 4532 | cat >>confdefs.h <<\EOF |
@@ -4443,13 +4564,13 @@ EOF | |||
4443 | for ac_func in getluid setluid | 4564 | for ac_func in getluid setluid |
4444 | do | 4565 | do |
4445 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` | 4566 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` |
4446 | echo "$as_me:4446: checking for $ac_func" >&5 | 4567 | echo "$as_me:4567: checking for $ac_func" >&5 |
4447 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 | 4568 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 |
4448 | if eval "test \"\${$as_ac_var+set}\" = set"; then | 4569 | if eval "test \"\${$as_ac_var+set}\" = set"; then |
4449 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 4570 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
4450 | else | 4571 | else |
4451 | cat >conftest.$ac_ext <<_ACEOF | 4572 | cat >conftest.$ac_ext <<_ACEOF |
4452 | #line 4452 "configure" | 4573 | #line 4573 "configure" |
4453 | #include "confdefs.h" | 4574 | #include "confdefs.h" |
4454 | /* System header to define __stub macros and hopefully few prototypes, | 4575 | /* System header to define __stub macros and hopefully few prototypes, |
4455 | which can conflict with char $ac_func (); below. */ | 4576 | which can conflict with char $ac_func (); below. */ |
@@ -4480,16 +4601,16 @@ f = $ac_func; | |||
4480 | } | 4601 | } |
4481 | _ACEOF | 4602 | _ACEOF |
4482 | rm -f conftest.$ac_objext conftest$ac_exeext | 4603 | rm -f conftest.$ac_objext conftest$ac_exeext |
4483 | if { (eval echo "$as_me:4483: \"$ac_link\"") >&5 | 4604 | if { (eval echo "$as_me:4604: \"$ac_link\"") >&5 |
4484 | (eval $ac_link) 2>&5 | 4605 | (eval $ac_link) 2>&5 |
4485 | ac_status=$? | 4606 | ac_status=$? |
4486 | echo "$as_me:4486: \$? = $ac_status" >&5 | 4607 | echo "$as_me:4607: \$? = $ac_status" >&5 |
4487 | (exit $ac_status); } && | 4608 | (exit $ac_status); } && |
4488 | { ac_try='test -s conftest$ac_exeext' | 4609 | { ac_try='test -s conftest$ac_exeext' |
4489 | { (eval echo "$as_me:4489: \"$ac_try\"") >&5 | 4610 | { (eval echo "$as_me:4610: \"$ac_try\"") >&5 |
4490 | (eval $ac_try) 2>&5 | 4611 | (eval $ac_try) 2>&5 |
4491 | ac_status=$? | 4612 | ac_status=$? |
4492 | echo "$as_me:4492: \$? = $ac_status" >&5 | 4613 | echo "$as_me:4613: \$? = $ac_status" >&5 |
4493 | (exit $ac_status); }; }; then | 4614 | (exit $ac_status); }; }; then |
4494 | eval "$as_ac_var=yes" | 4615 | eval "$as_ac_var=yes" |
4495 | else | 4616 | else |
@@ -4499,7 +4620,7 @@ eval "$as_ac_var=no" | |||
4499 | fi | 4620 | fi |
4500 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 4621 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
4501 | fi | 4622 | fi |
4502 | echo "$as_me:4502: result: `eval echo '${'$as_ac_var'}'`" >&5 | 4623 | echo "$as_me:4623: result: `eval echo '${'$as_ac_var'}'`" >&5 |
4503 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 | 4624 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 |
4504 | if test `eval echo '${'$as_ac_var'}'` = yes; then | 4625 | if test `eval echo '${'$as_ac_var'}'` = yes; then |
4505 | cat >>confdefs.h <<EOF | 4626 | cat >>confdefs.h <<EOF |
@@ -4513,6 +4634,22 @@ done | |||
4513 | ;; | 4634 | ;; |
4514 | *-*-unicosmk*) | 4635 | *-*-unicosmk*) |
4515 | cat >>confdefs.h <<\EOF | 4636 | cat >>confdefs.h <<\EOF |
4637 | #define NO_SSH_LASTLOG 1 | ||
4638 | EOF | ||
4639 | |||
4640 | cat >>confdefs.h <<\EOF | ||
4641 | #define SETEUID_BREAKS_SETUID 1 | ||
4642 | EOF | ||
4643 | |||
4644 | cat >>confdefs.h <<\EOF | ||
4645 | #define BROKEN_SETREUID 1 | ||
4646 | EOF | ||
4647 | |||
4648 | cat >>confdefs.h <<\EOF | ||
4649 | #define BROKEN_SETREGID 1 | ||
4650 | EOF | ||
4651 | |||
4652 | cat >>confdefs.h <<\EOF | ||
4516 | #define USE_PIPES 1 | 4653 | #define USE_PIPES 1 |
4517 | EOF | 4654 | EOF |
4518 | 4655 | ||
@@ -4526,6 +4663,18 @@ EOF | |||
4526 | ;; | 4663 | ;; |
4527 | *-*-unicosmp*) | 4664 | *-*-unicosmp*) |
4528 | cat >>confdefs.h <<\EOF | 4665 | cat >>confdefs.h <<\EOF |
4666 | #define SETEUID_BREAKS_SETUID 1 | ||
4667 | EOF | ||
4668 | |||
4669 | cat >>confdefs.h <<\EOF | ||
4670 | #define BROKEN_SETREUID 1 | ||
4671 | EOF | ||
4672 | |||
4673 | cat >>confdefs.h <<\EOF | ||
4674 | #define BROKEN_SETREGID 1 | ||
4675 | EOF | ||
4676 | |||
4677 | cat >>confdefs.h <<\EOF | ||
4529 | #define WITH_ABBREV_NO_TTY 1 | 4678 | #define WITH_ABBREV_NO_TTY 1 |
4530 | EOF | 4679 | EOF |
4531 | 4680 | ||
@@ -4538,11 +4687,23 @@ EOF | |||
4538 | EOF | 4687 | EOF |
4539 | 4688 | ||
4540 | LDFLAGS="$LDFLAGS" | 4689 | LDFLAGS="$LDFLAGS" |
4541 | LIBS="$LIBS -lgen -lacid" | 4690 | LIBS="$LIBS -lgen -lacid -ldb" |
4542 | MANTYPE=cat | 4691 | MANTYPE=cat |
4543 | ;; | 4692 | ;; |
4544 | *-*-unicos*) | 4693 | *-*-unicos*) |
4545 | cat >>confdefs.h <<\EOF | 4694 | cat >>confdefs.h <<\EOF |
4695 | #define SETEUID_BREAKS_SETUID 1 | ||
4696 | EOF | ||
4697 | |||
4698 | cat >>confdefs.h <<\EOF | ||
4699 | #define BROKEN_SETREUID 1 | ||
4700 | EOF | ||
4701 | |||
4702 | cat >>confdefs.h <<\EOF | ||
4703 | #define BROKEN_SETREGID 1 | ||
4704 | EOF | ||
4705 | |||
4706 | cat >>confdefs.h <<\EOF | ||
4546 | #define USE_PIPES 1 | 4707 | #define USE_PIPES 1 |
4547 | EOF | 4708 | EOF |
4548 | 4709 | ||
@@ -4559,7 +4720,7 @@ EOF | |||
4559 | MANTYPE=cat | 4720 | MANTYPE=cat |
4560 | ;; | 4721 | ;; |
4561 | *-dec-osf*) | 4722 | *-dec-osf*) |
4562 | echo "$as_me:4562: checking for Digital Unix SIA" >&5 | 4723 | echo "$as_me:4723: checking for Digital Unix SIA" >&5 |
4563 | echo $ECHO_N "checking for Digital Unix SIA... $ECHO_C" >&6 | 4724 | echo $ECHO_N "checking for Digital Unix SIA... $ECHO_C" >&6 |
4564 | no_osfsia="" | 4725 | no_osfsia="" |
4565 | 4726 | ||
@@ -4568,7 +4729,7 @@ if test "${with_osfsia+set}" = set; then | |||
4568 | withval="$with_osfsia" | 4729 | withval="$with_osfsia" |
4569 | 4730 | ||
4570 | if test "x$withval" = "xno" ; then | 4731 | if test "x$withval" = "xno" ; then |
4571 | echo "$as_me:4571: result: disabled" >&5 | 4732 | echo "$as_me:4732: result: disabled" >&5 |
4572 | echo "${ECHO_T}disabled" >&6 | 4733 | echo "${ECHO_T}disabled" >&6 |
4573 | no_osfsia=1 | 4734 | no_osfsia=1 |
4574 | fi | 4735 | fi |
@@ -4576,7 +4737,7 @@ echo "${ECHO_T}disabled" >&6 | |||
4576 | fi; | 4737 | fi; |
4577 | if test -z "$no_osfsia" ; then | 4738 | if test -z "$no_osfsia" ; then |
4578 | if test -f /etc/sia/matrix.conf; then | 4739 | if test -f /etc/sia/matrix.conf; then |
4579 | echo "$as_me:4579: result: yes" >&5 | 4740 | echo "$as_me:4740: result: yes" >&5 |
4580 | echo "${ECHO_T}yes" >&6 | 4741 | echo "${ECHO_T}yes" >&6 |
4581 | cat >>confdefs.h <<\EOF | 4742 | cat >>confdefs.h <<\EOF |
4582 | #define HAVE_OSF_SIA 1 | 4743 | #define HAVE_OSF_SIA 1 |
@@ -4592,14 +4753,14 @@ EOF | |||
4592 | 4753 | ||
4593 | LIBS="$LIBS -lsecurity -ldb -lm -laud" | 4754 | LIBS="$LIBS -lsecurity -ldb -lm -laud" |
4594 | else | 4755 | else |
4595 | echo "$as_me:4595: result: no" >&5 | 4756 | echo "$as_me:4756: result: no" >&5 |
4596 | echo "${ECHO_T}no" >&6 | 4757 | echo "${ECHO_T}no" >&6 |
4597 | fi | 4758 | cat >>confdefs.h <<\EOF |
4598 | fi | 4759 | #define LOCKED_PASSWD_SUBSTR "Nologin" |
4599 | cat >>confdefs.h <<\EOF | ||
4600 | #define DISABLE_FD_PASSING 1 | ||
4601 | EOF | 4760 | EOF |
4602 | 4761 | ||
4762 | fi | ||
4763 | fi | ||
4603 | cat >>confdefs.h <<\EOF | 4764 | cat >>confdefs.h <<\EOF |
4604 | #define BROKEN_GETADDRINFO 1 | 4765 | #define BROKEN_GETADDRINFO 1 |
4605 | EOF | 4766 | EOF |
@@ -4616,10 +4777,6 @@ EOF | |||
4616 | #define BROKEN_SETREGID 1 | 4777 | #define BROKEN_SETREGID 1 |
4617 | EOF | 4778 | EOF |
4618 | 4779 | ||
4619 | cat >>confdefs.h <<\EOF | ||
4620 | #define LOCKED_PASSWD_SUBSTR "Nologin" | ||
4621 | EOF | ||
4622 | |||
4623 | ;; | 4780 | ;; |
4624 | 4781 | ||
4625 | *-*-nto-qnx) | 4782 | *-*-nto-qnx) |
@@ -4688,15 +4845,15 @@ if test "${with_libs+set}" = set; then | |||
4688 | 4845 | ||
4689 | fi; | 4846 | fi; |
4690 | 4847 | ||
4691 | echo "$as_me:4691: checking compiler and flags for sanity" >&5 | 4848 | echo "$as_me:4848: checking compiler and flags for sanity" >&5 |
4692 | echo $ECHO_N "checking compiler and flags for sanity... $ECHO_C" >&6 | 4849 | echo $ECHO_N "checking compiler and flags for sanity... $ECHO_C" >&6 |
4693 | if test "$cross_compiling" = yes; then | 4850 | if test "$cross_compiling" = yes; then |
4694 | { { echo "$as_me:4694: error: cannot run test program while cross compiling" >&5 | 4851 | { { echo "$as_me:4851: error: cannot run test program while cross compiling" >&5 |
4695 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} | 4852 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} |
4696 | { (exit 1); exit 1; }; } | 4853 | { (exit 1); exit 1; }; } |
4697 | else | 4854 | else |
4698 | cat >conftest.$ac_ext <<_ACEOF | 4855 | cat >conftest.$ac_ext <<_ACEOF |
4699 | #line 4699 "configure" | 4856 | #line 4856 "configure" |
4700 | #include "confdefs.h" | 4857 | #include "confdefs.h" |
4701 | 4858 | ||
4702 | #include <stdio.h> | 4859 | #include <stdio.h> |
@@ -4704,26 +4861,26 @@ int main(){exit(0);} | |||
4704 | 4861 | ||
4705 | _ACEOF | 4862 | _ACEOF |
4706 | rm -f conftest$ac_exeext | 4863 | rm -f conftest$ac_exeext |
4707 | if { (eval echo "$as_me:4707: \"$ac_link\"") >&5 | 4864 | if { (eval echo "$as_me:4864: \"$ac_link\"") >&5 |
4708 | (eval $ac_link) 2>&5 | 4865 | (eval $ac_link) 2>&5 |
4709 | ac_status=$? | 4866 | ac_status=$? |
4710 | echo "$as_me:4710: \$? = $ac_status" >&5 | 4867 | echo "$as_me:4867: \$? = $ac_status" >&5 |
4711 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' | 4868 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' |
4712 | { (eval echo "$as_me:4712: \"$ac_try\"") >&5 | 4869 | { (eval echo "$as_me:4869: \"$ac_try\"") >&5 |
4713 | (eval $ac_try) 2>&5 | 4870 | (eval $ac_try) 2>&5 |
4714 | ac_status=$? | 4871 | ac_status=$? |
4715 | echo "$as_me:4715: \$? = $ac_status" >&5 | 4872 | echo "$as_me:4872: \$? = $ac_status" >&5 |
4716 | (exit $ac_status); }; }; then | 4873 | (exit $ac_status); }; }; then |
4717 | echo "$as_me:4717: result: yes" >&5 | 4874 | echo "$as_me:4874: result: yes" >&5 |
4718 | echo "${ECHO_T}yes" >&6 | 4875 | echo "${ECHO_T}yes" >&6 |
4719 | else | 4876 | else |
4720 | echo "$as_me: program exited with status $ac_status" >&5 | 4877 | echo "$as_me: program exited with status $ac_status" >&5 |
4721 | echo "$as_me: failed program was:" >&5 | 4878 | echo "$as_me: failed program was:" >&5 |
4722 | cat conftest.$ac_ext >&5 | 4879 | cat conftest.$ac_ext >&5 |
4723 | 4880 | ||
4724 | echo "$as_me:4724: result: no" >&5 | 4881 | echo "$as_me:4881: result: no" >&5 |
4725 | echo "${ECHO_T}no" >&6 | 4882 | echo "${ECHO_T}no" >&6 |
4726 | { { echo "$as_me:4726: error: *** compiler cannot create working executables, check config.log ***" >&5 | 4883 | { { echo "$as_me:4883: error: *** compiler cannot create working executables, check config.log ***" >&5 |
4727 | echo "$as_me: error: *** compiler cannot create working executables, check config.log ***" >&2;} | 4884 | echo "$as_me: error: *** compiler cannot create working executables, check config.log ***" >&2;} |
4728 | { (exit 1); exit 1; }; } | 4885 | { (exit 1); exit 1; }; } |
4729 | 4886 | ||
@@ -4736,32 +4893,32 @@ fi | |||
4736 | for ac_header in bstring.h crypt.h endian.h features.h floatingpoint.h \ | 4893 | for ac_header in bstring.h crypt.h endian.h features.h floatingpoint.h \ |
4737 | getopt.h glob.h ia.h lastlog.h limits.h login.h \ | 4894 | getopt.h glob.h ia.h lastlog.h limits.h login.h \ |
4738 | login_cap.h maillock.h netdb.h netgroup.h \ | 4895 | login_cap.h maillock.h netdb.h netgroup.h \ |
4739 | netinet/in_systm.h paths.h pty.h readpassphrase.h \ | 4896 | netinet/in_systm.h pam/pam_appl.h paths.h pty.h readpassphrase.h \ |
4740 | rpc/types.h security/pam_appl.h shadow.h stddef.h stdint.h \ | 4897 | rpc/types.h security/pam_appl.h shadow.h stddef.h stdint.h \ |
4741 | strings.h sys/strtio.h sys/audit.h sys/bitypes.h sys/bsdtty.h \ | 4898 | strings.h sys/strtio.h sys/audit.h sys/bitypes.h sys/bsdtty.h \ |
4742 | sys/cdefs.h sys/mman.h sys/pstat.h sys/select.h sys/stat.h \ | 4899 | sys/cdefs.h sys/mman.h sys/pstat.h sys/ptms.h sys/select.h sys/stat.h \ |
4743 | sys/stropts.h sys/sysmacros.h sys/time.h sys/timers.h \ | 4900 | sys/stream.h sys/stropts.h sys/sysmacros.h sys/time.h sys/timers.h \ |
4744 | sys/un.h time.h tmpdir.h ttyent.h usersec.h \ | 4901 | sys/un.h time.h tmpdir.h ttyent.h usersec.h \ |
4745 | util.h utime.h utmp.h utmpx.h vis.h | 4902 | util.h utime.h utmp.h utmpx.h vis.h |
4746 | do | 4903 | do |
4747 | as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` | 4904 | as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` |
4748 | echo "$as_me:4748: checking for $ac_header" >&5 | 4905 | echo "$as_me:4905: checking for $ac_header" >&5 |
4749 | echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 | 4906 | echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 |
4750 | if eval "test \"\${$as_ac_Header+set}\" = set"; then | 4907 | if eval "test \"\${$as_ac_Header+set}\" = set"; then |
4751 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 4908 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
4752 | else | 4909 | else |
4753 | cat >conftest.$ac_ext <<_ACEOF | 4910 | cat >conftest.$ac_ext <<_ACEOF |
4754 | #line 4754 "configure" | 4911 | #line 4911 "configure" |
4755 | #include "confdefs.h" | 4912 | #include "confdefs.h" |
4756 | #include <$ac_header> | 4913 | #include <$ac_header> |
4757 | _ACEOF | 4914 | _ACEOF |
4758 | if { (eval echo "$as_me:4758: \"$ac_cpp conftest.$ac_ext\"") >&5 | 4915 | if { (eval echo "$as_me:4915: \"$ac_cpp conftest.$ac_ext\"") >&5 |
4759 | (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 | 4916 | (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 |
4760 | ac_status=$? | 4917 | ac_status=$? |
4761 | egrep -v '^ *\+' conftest.er1 >conftest.err | 4918 | egrep -v '^ *\+' conftest.er1 >conftest.err |
4762 | rm -f conftest.er1 | 4919 | rm -f conftest.er1 |
4763 | cat conftest.err >&5 | 4920 | cat conftest.err >&5 |
4764 | echo "$as_me:4764: \$? = $ac_status" >&5 | 4921 | echo "$as_me:4921: \$? = $ac_status" >&5 |
4765 | (exit $ac_status); } >/dev/null; then | 4922 | (exit $ac_status); } >/dev/null; then |
4766 | if test -s conftest.err; then | 4923 | if test -s conftest.err; then |
4767 | ac_cpp_err=$ac_c_preproc_warn_flag | 4924 | ac_cpp_err=$ac_c_preproc_warn_flag |
@@ -4780,7 +4937,7 @@ else | |||
4780 | fi | 4937 | fi |
4781 | rm -f conftest.err conftest.$ac_ext | 4938 | rm -f conftest.err conftest.$ac_ext |
4782 | fi | 4939 | fi |
4783 | echo "$as_me:4783: result: `eval echo '${'$as_ac_Header'}'`" >&5 | 4940 | echo "$as_me:4940: result: `eval echo '${'$as_ac_Header'}'`" >&5 |
4784 | echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 | 4941 | echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 |
4785 | if test `eval echo '${'$as_ac_Header'}'` = yes; then | 4942 | if test `eval echo '${'$as_ac_Header'}'` = yes; then |
4786 | cat >>confdefs.h <<EOF | 4943 | cat >>confdefs.h <<EOF |
@@ -4791,13 +4948,13 @@ fi | |||
4791 | done | 4948 | done |
4792 | 4949 | ||
4793 | # Checks for libraries. | 4950 | # Checks for libraries. |
4794 | echo "$as_me:4794: checking for yp_match" >&5 | 4951 | echo "$as_me:4951: checking for yp_match" >&5 |
4795 | echo $ECHO_N "checking for yp_match... $ECHO_C" >&6 | 4952 | echo $ECHO_N "checking for yp_match... $ECHO_C" >&6 |
4796 | if test "${ac_cv_func_yp_match+set}" = set; then | 4953 | if test "${ac_cv_func_yp_match+set}" = set; then |
4797 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 4954 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
4798 | else | 4955 | else |
4799 | cat >conftest.$ac_ext <<_ACEOF | 4956 | cat >conftest.$ac_ext <<_ACEOF |
4800 | #line 4800 "configure" | 4957 | #line 4957 "configure" |
4801 | #include "confdefs.h" | 4958 | #include "confdefs.h" |
4802 | /* System header to define __stub macros and hopefully few prototypes, | 4959 | /* System header to define __stub macros and hopefully few prototypes, |
4803 | which can conflict with char yp_match (); below. */ | 4960 | which can conflict with char yp_match (); below. */ |
@@ -4828,16 +4985,16 @@ f = yp_match; | |||
4828 | } | 4985 | } |
4829 | _ACEOF | 4986 | _ACEOF |
4830 | rm -f conftest.$ac_objext conftest$ac_exeext | 4987 | rm -f conftest.$ac_objext conftest$ac_exeext |
4831 | if { (eval echo "$as_me:4831: \"$ac_link\"") >&5 | 4988 | if { (eval echo "$as_me:4988: \"$ac_link\"") >&5 |
4832 | (eval $ac_link) 2>&5 | 4989 | (eval $ac_link) 2>&5 |
4833 | ac_status=$? | 4990 | ac_status=$? |
4834 | echo "$as_me:4834: \$? = $ac_status" >&5 | 4991 | echo "$as_me:4991: \$? = $ac_status" >&5 |
4835 | (exit $ac_status); } && | 4992 | (exit $ac_status); } && |
4836 | { ac_try='test -s conftest$ac_exeext' | 4993 | { ac_try='test -s conftest$ac_exeext' |
4837 | { (eval echo "$as_me:4837: \"$ac_try\"") >&5 | 4994 | { (eval echo "$as_me:4994: \"$ac_try\"") >&5 |
4838 | (eval $ac_try) 2>&5 | 4995 | (eval $ac_try) 2>&5 |
4839 | ac_status=$? | 4996 | ac_status=$? |
4840 | echo "$as_me:4840: \$? = $ac_status" >&5 | 4997 | echo "$as_me:4997: \$? = $ac_status" >&5 |
4841 | (exit $ac_status); }; }; then | 4998 | (exit $ac_status); }; }; then |
4842 | ac_cv_func_yp_match=yes | 4999 | ac_cv_func_yp_match=yes |
4843 | else | 5000 | else |
@@ -4847,13 +5004,13 @@ ac_cv_func_yp_match=no | |||
4847 | fi | 5004 | fi |
4848 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 5005 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
4849 | fi | 5006 | fi |
4850 | echo "$as_me:4850: result: $ac_cv_func_yp_match" >&5 | 5007 | echo "$as_me:5007: result: $ac_cv_func_yp_match" >&5 |
4851 | echo "${ECHO_T}$ac_cv_func_yp_match" >&6 | 5008 | echo "${ECHO_T}$ac_cv_func_yp_match" >&6 |
4852 | if test $ac_cv_func_yp_match = yes; then | 5009 | if test $ac_cv_func_yp_match = yes; then |
4853 | : | 5010 | : |
4854 | else | 5011 | else |
4855 | 5012 | ||
4856 | echo "$as_me:4856: checking for yp_match in -lnsl" >&5 | 5013 | echo "$as_me:5013: checking for yp_match in -lnsl" >&5 |
4857 | echo $ECHO_N "checking for yp_match in -lnsl... $ECHO_C" >&6 | 5014 | echo $ECHO_N "checking for yp_match in -lnsl... $ECHO_C" >&6 |
4858 | if test "${ac_cv_lib_nsl_yp_match+set}" = set; then | 5015 | if test "${ac_cv_lib_nsl_yp_match+set}" = set; then |
4859 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 5016 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -4861,7 +5018,7 @@ else | |||
4861 | ac_check_lib_save_LIBS=$LIBS | 5018 | ac_check_lib_save_LIBS=$LIBS |
4862 | LIBS="-lnsl $LIBS" | 5019 | LIBS="-lnsl $LIBS" |
4863 | cat >conftest.$ac_ext <<_ACEOF | 5020 | cat >conftest.$ac_ext <<_ACEOF |
4864 | #line 4864 "configure" | 5021 | #line 5021 "configure" |
4865 | #include "confdefs.h" | 5022 | #include "confdefs.h" |
4866 | 5023 | ||
4867 | /* Override any gcc2 internal prototype to avoid an error. */ | 5024 | /* Override any gcc2 internal prototype to avoid an error. */ |
@@ -4880,16 +5037,16 @@ yp_match (); | |||
4880 | } | 5037 | } |
4881 | _ACEOF | 5038 | _ACEOF |
4882 | rm -f conftest.$ac_objext conftest$ac_exeext | 5039 | rm -f conftest.$ac_objext conftest$ac_exeext |
4883 | if { (eval echo "$as_me:4883: \"$ac_link\"") >&5 | 5040 | if { (eval echo "$as_me:5040: \"$ac_link\"") >&5 |
4884 | (eval $ac_link) 2>&5 | 5041 | (eval $ac_link) 2>&5 |
4885 | ac_status=$? | 5042 | ac_status=$? |
4886 | echo "$as_me:4886: \$? = $ac_status" >&5 | 5043 | echo "$as_me:5043: \$? = $ac_status" >&5 |
4887 | (exit $ac_status); } && | 5044 | (exit $ac_status); } && |
4888 | { ac_try='test -s conftest$ac_exeext' | 5045 | { ac_try='test -s conftest$ac_exeext' |
4889 | { (eval echo "$as_me:4889: \"$ac_try\"") >&5 | 5046 | { (eval echo "$as_me:5046: \"$ac_try\"") >&5 |
4890 | (eval $ac_try) 2>&5 | 5047 | (eval $ac_try) 2>&5 |
4891 | ac_status=$? | 5048 | ac_status=$? |
4892 | echo "$as_me:4892: \$? = $ac_status" >&5 | 5049 | echo "$as_me:5049: \$? = $ac_status" >&5 |
4893 | (exit $ac_status); }; }; then | 5050 | (exit $ac_status); }; }; then |
4894 | ac_cv_lib_nsl_yp_match=yes | 5051 | ac_cv_lib_nsl_yp_match=yes |
4895 | else | 5052 | else |
@@ -4900,7 +5057,7 @@ fi | |||
4900 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 5057 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
4901 | LIBS=$ac_check_lib_save_LIBS | 5058 | LIBS=$ac_check_lib_save_LIBS |
4902 | fi | 5059 | fi |
4903 | echo "$as_me:4903: result: $ac_cv_lib_nsl_yp_match" >&5 | 5060 | echo "$as_me:5060: result: $ac_cv_lib_nsl_yp_match" >&5 |
4904 | echo "${ECHO_T}$ac_cv_lib_nsl_yp_match" >&6 | 5061 | echo "${ECHO_T}$ac_cv_lib_nsl_yp_match" >&6 |
4905 | if test $ac_cv_lib_nsl_yp_match = yes; then | 5062 | if test $ac_cv_lib_nsl_yp_match = yes; then |
4906 | cat >>confdefs.h <<EOF | 5063 | cat >>confdefs.h <<EOF |
@@ -4913,13 +5070,13 @@ fi | |||
4913 | 5070 | ||
4914 | fi | 5071 | fi |
4915 | 5072 | ||
4916 | echo "$as_me:4916: checking for setsockopt" >&5 | 5073 | echo "$as_me:5073: checking for setsockopt" >&5 |
4917 | echo $ECHO_N "checking for setsockopt... $ECHO_C" >&6 | 5074 | echo $ECHO_N "checking for setsockopt... $ECHO_C" >&6 |
4918 | if test "${ac_cv_func_setsockopt+set}" = set; then | 5075 | if test "${ac_cv_func_setsockopt+set}" = set; then |
4919 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 5076 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
4920 | else | 5077 | else |
4921 | cat >conftest.$ac_ext <<_ACEOF | 5078 | cat >conftest.$ac_ext <<_ACEOF |
4922 | #line 4922 "configure" | 5079 | #line 5079 "configure" |
4923 | #include "confdefs.h" | 5080 | #include "confdefs.h" |
4924 | /* System header to define __stub macros and hopefully few prototypes, | 5081 | /* System header to define __stub macros and hopefully few prototypes, |
4925 | which can conflict with char setsockopt (); below. */ | 5082 | which can conflict with char setsockopt (); below. */ |
@@ -4950,16 +5107,16 @@ f = setsockopt; | |||
4950 | } | 5107 | } |
4951 | _ACEOF | 5108 | _ACEOF |
4952 | rm -f conftest.$ac_objext conftest$ac_exeext | 5109 | rm -f conftest.$ac_objext conftest$ac_exeext |
4953 | if { (eval echo "$as_me:4953: \"$ac_link\"") >&5 | 5110 | if { (eval echo "$as_me:5110: \"$ac_link\"") >&5 |
4954 | (eval $ac_link) 2>&5 | 5111 | (eval $ac_link) 2>&5 |
4955 | ac_status=$? | 5112 | ac_status=$? |
4956 | echo "$as_me:4956: \$? = $ac_status" >&5 | 5113 | echo "$as_me:5113: \$? = $ac_status" >&5 |
4957 | (exit $ac_status); } && | 5114 | (exit $ac_status); } && |
4958 | { ac_try='test -s conftest$ac_exeext' | 5115 | { ac_try='test -s conftest$ac_exeext' |
4959 | { (eval echo "$as_me:4959: \"$ac_try\"") >&5 | 5116 | { (eval echo "$as_me:5116: \"$ac_try\"") >&5 |
4960 | (eval $ac_try) 2>&5 | 5117 | (eval $ac_try) 2>&5 |
4961 | ac_status=$? | 5118 | ac_status=$? |
4962 | echo "$as_me:4962: \$? = $ac_status" >&5 | 5119 | echo "$as_me:5119: \$? = $ac_status" >&5 |
4963 | (exit $ac_status); }; }; then | 5120 | (exit $ac_status); }; }; then |
4964 | ac_cv_func_setsockopt=yes | 5121 | ac_cv_func_setsockopt=yes |
4965 | else | 5122 | else |
@@ -4969,13 +5126,13 @@ ac_cv_func_setsockopt=no | |||
4969 | fi | 5126 | fi |
4970 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 5127 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
4971 | fi | 5128 | fi |
4972 | echo "$as_me:4972: result: $ac_cv_func_setsockopt" >&5 | 5129 | echo "$as_me:5129: result: $ac_cv_func_setsockopt" >&5 |
4973 | echo "${ECHO_T}$ac_cv_func_setsockopt" >&6 | 5130 | echo "${ECHO_T}$ac_cv_func_setsockopt" >&6 |
4974 | if test $ac_cv_func_setsockopt = yes; then | 5131 | if test $ac_cv_func_setsockopt = yes; then |
4975 | : | 5132 | : |
4976 | else | 5133 | else |
4977 | 5134 | ||
4978 | echo "$as_me:4978: checking for setsockopt in -lsocket" >&5 | 5135 | echo "$as_me:5135: checking for setsockopt in -lsocket" >&5 |
4979 | echo $ECHO_N "checking for setsockopt in -lsocket... $ECHO_C" >&6 | 5136 | echo $ECHO_N "checking for setsockopt in -lsocket... $ECHO_C" >&6 |
4980 | if test "${ac_cv_lib_socket_setsockopt+set}" = set; then | 5137 | if test "${ac_cv_lib_socket_setsockopt+set}" = set; then |
4981 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 5138 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -4983,7 +5140,7 @@ else | |||
4983 | ac_check_lib_save_LIBS=$LIBS | 5140 | ac_check_lib_save_LIBS=$LIBS |
4984 | LIBS="-lsocket $LIBS" | 5141 | LIBS="-lsocket $LIBS" |
4985 | cat >conftest.$ac_ext <<_ACEOF | 5142 | cat >conftest.$ac_ext <<_ACEOF |
4986 | #line 4986 "configure" | 5143 | #line 5143 "configure" |
4987 | #include "confdefs.h" | 5144 | #include "confdefs.h" |
4988 | 5145 | ||
4989 | /* Override any gcc2 internal prototype to avoid an error. */ | 5146 | /* Override any gcc2 internal prototype to avoid an error. */ |
@@ -5002,16 +5159,16 @@ setsockopt (); | |||
5002 | } | 5159 | } |
5003 | _ACEOF | 5160 | _ACEOF |
5004 | rm -f conftest.$ac_objext conftest$ac_exeext | 5161 | rm -f conftest.$ac_objext conftest$ac_exeext |
5005 | if { (eval echo "$as_me:5005: \"$ac_link\"") >&5 | 5162 | if { (eval echo "$as_me:5162: \"$ac_link\"") >&5 |
5006 | (eval $ac_link) 2>&5 | 5163 | (eval $ac_link) 2>&5 |
5007 | ac_status=$? | 5164 | ac_status=$? |
5008 | echo "$as_me:5008: \$? = $ac_status" >&5 | 5165 | echo "$as_me:5165: \$? = $ac_status" >&5 |
5009 | (exit $ac_status); } && | 5166 | (exit $ac_status); } && |
5010 | { ac_try='test -s conftest$ac_exeext' | 5167 | { ac_try='test -s conftest$ac_exeext' |
5011 | { (eval echo "$as_me:5011: \"$ac_try\"") >&5 | 5168 | { (eval echo "$as_me:5168: \"$ac_try\"") >&5 |
5012 | (eval $ac_try) 2>&5 | 5169 | (eval $ac_try) 2>&5 |
5013 | ac_status=$? | 5170 | ac_status=$? |
5014 | echo "$as_me:5014: \$? = $ac_status" >&5 | 5171 | echo "$as_me:5171: \$? = $ac_status" >&5 |
5015 | (exit $ac_status); }; }; then | 5172 | (exit $ac_status); }; }; then |
5016 | ac_cv_lib_socket_setsockopt=yes | 5173 | ac_cv_lib_socket_setsockopt=yes |
5017 | else | 5174 | else |
@@ -5022,7 +5179,7 @@ fi | |||
5022 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 5179 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
5023 | LIBS=$ac_check_lib_save_LIBS | 5180 | LIBS=$ac_check_lib_save_LIBS |
5024 | fi | 5181 | fi |
5025 | echo "$as_me:5025: result: $ac_cv_lib_socket_setsockopt" >&5 | 5182 | echo "$as_me:5182: result: $ac_cv_lib_socket_setsockopt" >&5 |
5026 | echo "${ECHO_T}$ac_cv_lib_socket_setsockopt" >&6 | 5183 | echo "${ECHO_T}$ac_cv_lib_socket_setsockopt" >&6 |
5027 | if test $ac_cv_lib_socket_setsockopt = yes; then | 5184 | if test $ac_cv_lib_socket_setsockopt = yes; then |
5028 | cat >>confdefs.h <<EOF | 5185 | cat >>confdefs.h <<EOF |
@@ -5037,7 +5194,7 @@ fi | |||
5037 | 5194 | ||
5038 | if test "x$with_tcp_wrappers" != "xno" ; then | 5195 | if test "x$with_tcp_wrappers" != "xno" ; then |
5039 | if test "x$do_sco3_extra_lib_check" = "xyes" ; then | 5196 | if test "x$do_sco3_extra_lib_check" = "xyes" ; then |
5040 | echo "$as_me:5040: checking for innetgr in -lrpc" >&5 | 5197 | echo "$as_me:5197: checking for innetgr in -lrpc" >&5 |
5041 | echo $ECHO_N "checking for innetgr in -lrpc... $ECHO_C" >&6 | 5198 | echo $ECHO_N "checking for innetgr in -lrpc... $ECHO_C" >&6 |
5042 | if test "${ac_cv_lib_rpc_innetgr+set}" = set; then | 5199 | if test "${ac_cv_lib_rpc_innetgr+set}" = set; then |
5043 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 5200 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -5045,7 +5202,7 @@ else | |||
5045 | ac_check_lib_save_LIBS=$LIBS | 5202 | ac_check_lib_save_LIBS=$LIBS |
5046 | LIBS="-lrpc -lyp -lrpc $LIBS" | 5203 | LIBS="-lrpc -lyp -lrpc $LIBS" |
5047 | cat >conftest.$ac_ext <<_ACEOF | 5204 | cat >conftest.$ac_ext <<_ACEOF |
5048 | #line 5048 "configure" | 5205 | #line 5205 "configure" |
5049 | #include "confdefs.h" | 5206 | #include "confdefs.h" |
5050 | 5207 | ||
5051 | /* Override any gcc2 internal prototype to avoid an error. */ | 5208 | /* Override any gcc2 internal prototype to avoid an error. */ |
@@ -5064,16 +5221,16 @@ innetgr (); | |||
5064 | } | 5221 | } |
5065 | _ACEOF | 5222 | _ACEOF |
5066 | rm -f conftest.$ac_objext conftest$ac_exeext | 5223 | rm -f conftest.$ac_objext conftest$ac_exeext |
5067 | if { (eval echo "$as_me:5067: \"$ac_link\"") >&5 | 5224 | if { (eval echo "$as_me:5224: \"$ac_link\"") >&5 |
5068 | (eval $ac_link) 2>&5 | 5225 | (eval $ac_link) 2>&5 |
5069 | ac_status=$? | 5226 | ac_status=$? |
5070 | echo "$as_me:5070: \$? = $ac_status" >&5 | 5227 | echo "$as_me:5227: \$? = $ac_status" >&5 |
5071 | (exit $ac_status); } && | 5228 | (exit $ac_status); } && |
5072 | { ac_try='test -s conftest$ac_exeext' | 5229 | { ac_try='test -s conftest$ac_exeext' |
5073 | { (eval echo "$as_me:5073: \"$ac_try\"") >&5 | 5230 | { (eval echo "$as_me:5230: \"$ac_try\"") >&5 |
5074 | (eval $ac_try) 2>&5 | 5231 | (eval $ac_try) 2>&5 |
5075 | ac_status=$? | 5232 | ac_status=$? |
5076 | echo "$as_me:5076: \$? = $ac_status" >&5 | 5233 | echo "$as_me:5233: \$? = $ac_status" >&5 |
5077 | (exit $ac_status); }; }; then | 5234 | (exit $ac_status); }; }; then |
5078 | ac_cv_lib_rpc_innetgr=yes | 5235 | ac_cv_lib_rpc_innetgr=yes |
5079 | else | 5236 | else |
@@ -5084,7 +5241,7 @@ fi | |||
5084 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 5241 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
5085 | LIBS=$ac_check_lib_save_LIBS | 5242 | LIBS=$ac_check_lib_save_LIBS |
5086 | fi | 5243 | fi |
5087 | echo "$as_me:5087: result: $ac_cv_lib_rpc_innetgr" >&5 | 5244 | echo "$as_me:5244: result: $ac_cv_lib_rpc_innetgr" >&5 |
5088 | echo "${ECHO_T}$ac_cv_lib_rpc_innetgr" >&6 | 5245 | echo "${ECHO_T}$ac_cv_lib_rpc_innetgr" >&6 |
5089 | if test $ac_cv_lib_rpc_innetgr = yes; then | 5246 | if test $ac_cv_lib_rpc_innetgr = yes; then |
5090 | LIBS="-lrpc -lyp -lrpc $LIBS" | 5247 | LIBS="-lrpc -lyp -lrpc $LIBS" |
@@ -5096,13 +5253,13 @@ fi | |||
5096 | for ac_func in dirname | 5253 | for ac_func in dirname |
5097 | do | 5254 | do |
5098 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` | 5255 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` |
5099 | echo "$as_me:5099: checking for $ac_func" >&5 | 5256 | echo "$as_me:5256: checking for $ac_func" >&5 |
5100 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 | 5257 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 |
5101 | if eval "test \"\${$as_ac_var+set}\" = set"; then | 5258 | if eval "test \"\${$as_ac_var+set}\" = set"; then |
5102 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 5259 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
5103 | else | 5260 | else |
5104 | cat >conftest.$ac_ext <<_ACEOF | 5261 | cat >conftest.$ac_ext <<_ACEOF |
5105 | #line 5105 "configure" | 5262 | #line 5262 "configure" |
5106 | #include "confdefs.h" | 5263 | #include "confdefs.h" |
5107 | /* System header to define __stub macros and hopefully few prototypes, | 5264 | /* System header to define __stub macros and hopefully few prototypes, |
5108 | which can conflict with char $ac_func (); below. */ | 5265 | which can conflict with char $ac_func (); below. */ |
@@ -5133,16 +5290,16 @@ f = $ac_func; | |||
5133 | } | 5290 | } |
5134 | _ACEOF | 5291 | _ACEOF |
5135 | rm -f conftest.$ac_objext conftest$ac_exeext | 5292 | rm -f conftest.$ac_objext conftest$ac_exeext |
5136 | if { (eval echo "$as_me:5136: \"$ac_link\"") >&5 | 5293 | if { (eval echo "$as_me:5293: \"$ac_link\"") >&5 |
5137 | (eval $ac_link) 2>&5 | 5294 | (eval $ac_link) 2>&5 |
5138 | ac_status=$? | 5295 | ac_status=$? |
5139 | echo "$as_me:5139: \$? = $ac_status" >&5 | 5296 | echo "$as_me:5296: \$? = $ac_status" >&5 |
5140 | (exit $ac_status); } && | 5297 | (exit $ac_status); } && |
5141 | { ac_try='test -s conftest$ac_exeext' | 5298 | { ac_try='test -s conftest$ac_exeext' |
5142 | { (eval echo "$as_me:5142: \"$ac_try\"") >&5 | 5299 | { (eval echo "$as_me:5299: \"$ac_try\"") >&5 |
5143 | (eval $ac_try) 2>&5 | 5300 | (eval $ac_try) 2>&5 |
5144 | ac_status=$? | 5301 | ac_status=$? |
5145 | echo "$as_me:5145: \$? = $ac_status" >&5 | 5302 | echo "$as_me:5302: \$? = $ac_status" >&5 |
5146 | (exit $ac_status); }; }; then | 5303 | (exit $ac_status); }; }; then |
5147 | eval "$as_ac_var=yes" | 5304 | eval "$as_ac_var=yes" |
5148 | else | 5305 | else |
@@ -5152,7 +5309,7 @@ eval "$as_ac_var=no" | |||
5152 | fi | 5309 | fi |
5153 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 5310 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
5154 | fi | 5311 | fi |
5155 | echo "$as_me:5155: result: `eval echo '${'$as_ac_var'}'`" >&5 | 5312 | echo "$as_me:5312: result: `eval echo '${'$as_ac_var'}'`" >&5 |
5156 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 | 5313 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 |
5157 | if test `eval echo '${'$as_ac_var'}'` = yes; then | 5314 | if test `eval echo '${'$as_ac_var'}'` = yes; then |
5158 | cat >>confdefs.h <<EOF | 5315 | cat >>confdefs.h <<EOF |
@@ -5162,23 +5319,23 @@ EOF | |||
5162 | for ac_header in libgen.h | 5319 | for ac_header in libgen.h |
5163 | do | 5320 | do |
5164 | as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` | 5321 | as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` |
5165 | echo "$as_me:5165: checking for $ac_header" >&5 | 5322 | echo "$as_me:5322: checking for $ac_header" >&5 |
5166 | echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 | 5323 | echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 |
5167 | if eval "test \"\${$as_ac_Header+set}\" = set"; then | 5324 | if eval "test \"\${$as_ac_Header+set}\" = set"; then |
5168 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 5325 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
5169 | else | 5326 | else |
5170 | cat >conftest.$ac_ext <<_ACEOF | 5327 | cat >conftest.$ac_ext <<_ACEOF |
5171 | #line 5171 "configure" | 5328 | #line 5328 "configure" |
5172 | #include "confdefs.h" | 5329 | #include "confdefs.h" |
5173 | #include <$ac_header> | 5330 | #include <$ac_header> |
5174 | _ACEOF | 5331 | _ACEOF |
5175 | if { (eval echo "$as_me:5175: \"$ac_cpp conftest.$ac_ext\"") >&5 | 5332 | if { (eval echo "$as_me:5332: \"$ac_cpp conftest.$ac_ext\"") >&5 |
5176 | (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 | 5333 | (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 |
5177 | ac_status=$? | 5334 | ac_status=$? |
5178 | egrep -v '^ *\+' conftest.er1 >conftest.err | 5335 | egrep -v '^ *\+' conftest.er1 >conftest.err |
5179 | rm -f conftest.er1 | 5336 | rm -f conftest.er1 |
5180 | cat conftest.err >&5 | 5337 | cat conftest.err >&5 |
5181 | echo "$as_me:5181: \$? = $ac_status" >&5 | 5338 | echo "$as_me:5338: \$? = $ac_status" >&5 |
5182 | (exit $ac_status); } >/dev/null; then | 5339 | (exit $ac_status); } >/dev/null; then |
5183 | if test -s conftest.err; then | 5340 | if test -s conftest.err; then |
5184 | ac_cpp_err=$ac_c_preproc_warn_flag | 5341 | ac_cpp_err=$ac_c_preproc_warn_flag |
@@ -5197,7 +5354,7 @@ else | |||
5197 | fi | 5354 | fi |
5198 | rm -f conftest.err conftest.$ac_ext | 5355 | rm -f conftest.err conftest.$ac_ext |
5199 | fi | 5356 | fi |
5200 | echo "$as_me:5200: result: `eval echo '${'$as_ac_Header'}'`" >&5 | 5357 | echo "$as_me:5357: result: `eval echo '${'$as_ac_Header'}'`" >&5 |
5201 | echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 | 5358 | echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 |
5202 | if test `eval echo '${'$as_ac_Header'}'` = yes; then | 5359 | if test `eval echo '${'$as_ac_Header'}'` = yes; then |
5203 | cat >>confdefs.h <<EOF | 5360 | cat >>confdefs.h <<EOF |
@@ -5209,7 +5366,7 @@ done | |||
5209 | 5366 | ||
5210 | else | 5367 | else |
5211 | 5368 | ||
5212 | echo "$as_me:5212: checking for dirname in -lgen" >&5 | 5369 | echo "$as_me:5369: checking for dirname in -lgen" >&5 |
5213 | echo $ECHO_N "checking for dirname in -lgen... $ECHO_C" >&6 | 5370 | echo $ECHO_N "checking for dirname in -lgen... $ECHO_C" >&6 |
5214 | if test "${ac_cv_lib_gen_dirname+set}" = set; then | 5371 | if test "${ac_cv_lib_gen_dirname+set}" = set; then |
5215 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 5372 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -5217,7 +5374,7 @@ else | |||
5217 | ac_check_lib_save_LIBS=$LIBS | 5374 | ac_check_lib_save_LIBS=$LIBS |
5218 | LIBS="-lgen $LIBS" | 5375 | LIBS="-lgen $LIBS" |
5219 | cat >conftest.$ac_ext <<_ACEOF | 5376 | cat >conftest.$ac_ext <<_ACEOF |
5220 | #line 5220 "configure" | 5377 | #line 5377 "configure" |
5221 | #include "confdefs.h" | 5378 | #include "confdefs.h" |
5222 | 5379 | ||
5223 | /* Override any gcc2 internal prototype to avoid an error. */ | 5380 | /* Override any gcc2 internal prototype to avoid an error. */ |
@@ -5236,16 +5393,16 @@ dirname (); | |||
5236 | } | 5393 | } |
5237 | _ACEOF | 5394 | _ACEOF |
5238 | rm -f conftest.$ac_objext conftest$ac_exeext | 5395 | rm -f conftest.$ac_objext conftest$ac_exeext |
5239 | if { (eval echo "$as_me:5239: \"$ac_link\"") >&5 | 5396 | if { (eval echo "$as_me:5396: \"$ac_link\"") >&5 |
5240 | (eval $ac_link) 2>&5 | 5397 | (eval $ac_link) 2>&5 |
5241 | ac_status=$? | 5398 | ac_status=$? |
5242 | echo "$as_me:5242: \$? = $ac_status" >&5 | 5399 | echo "$as_me:5399: \$? = $ac_status" >&5 |
5243 | (exit $ac_status); } && | 5400 | (exit $ac_status); } && |
5244 | { ac_try='test -s conftest$ac_exeext' | 5401 | { ac_try='test -s conftest$ac_exeext' |
5245 | { (eval echo "$as_me:5245: \"$ac_try\"") >&5 | 5402 | { (eval echo "$as_me:5402: \"$ac_try\"") >&5 |
5246 | (eval $ac_try) 2>&5 | 5403 | (eval $ac_try) 2>&5 |
5247 | ac_status=$? | 5404 | ac_status=$? |
5248 | echo "$as_me:5248: \$? = $ac_status" >&5 | 5405 | echo "$as_me:5405: \$? = $ac_status" >&5 |
5249 | (exit $ac_status); }; }; then | 5406 | (exit $ac_status); }; }; then |
5250 | ac_cv_lib_gen_dirname=yes | 5407 | ac_cv_lib_gen_dirname=yes |
5251 | else | 5408 | else |
@@ -5256,11 +5413,11 @@ fi | |||
5256 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 5413 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
5257 | LIBS=$ac_check_lib_save_LIBS | 5414 | LIBS=$ac_check_lib_save_LIBS |
5258 | fi | 5415 | fi |
5259 | echo "$as_me:5259: result: $ac_cv_lib_gen_dirname" >&5 | 5416 | echo "$as_me:5416: result: $ac_cv_lib_gen_dirname" >&5 |
5260 | echo "${ECHO_T}$ac_cv_lib_gen_dirname" >&6 | 5417 | echo "${ECHO_T}$ac_cv_lib_gen_dirname" >&6 |
5261 | if test $ac_cv_lib_gen_dirname = yes; then | 5418 | if test $ac_cv_lib_gen_dirname = yes; then |
5262 | 5419 | ||
5263 | echo "$as_me:5263: checking for broken dirname" >&5 | 5420 | echo "$as_me:5420: checking for broken dirname" >&5 |
5264 | echo $ECHO_N "checking for broken dirname... $ECHO_C" >&6 | 5421 | echo $ECHO_N "checking for broken dirname... $ECHO_C" >&6 |
5265 | if test "${ac_cv_have_broken_dirname+set}" = set; then | 5422 | if test "${ac_cv_have_broken_dirname+set}" = set; then |
5266 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 5423 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -5269,12 +5426,12 @@ else | |||
5269 | save_LIBS="$LIBS" | 5426 | save_LIBS="$LIBS" |
5270 | LIBS="$LIBS -lgen" | 5427 | LIBS="$LIBS -lgen" |
5271 | if test "$cross_compiling" = yes; then | 5428 | if test "$cross_compiling" = yes; then |
5272 | { { echo "$as_me:5272: error: cannot run test program while cross compiling" >&5 | 5429 | { { echo "$as_me:5429: error: cannot run test program while cross compiling" >&5 |
5273 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} | 5430 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} |
5274 | { (exit 1); exit 1; }; } | 5431 | { (exit 1); exit 1; }; } |
5275 | else | 5432 | else |
5276 | cat >conftest.$ac_ext <<_ACEOF | 5433 | cat >conftest.$ac_ext <<_ACEOF |
5277 | #line 5277 "configure" | 5434 | #line 5434 "configure" |
5278 | #include "confdefs.h" | 5435 | #include "confdefs.h" |
5279 | 5436 | ||
5280 | #include <libgen.h> | 5437 | #include <libgen.h> |
@@ -5294,15 +5451,15 @@ int main(int argc, char **argv) { | |||
5294 | 5451 | ||
5295 | _ACEOF | 5452 | _ACEOF |
5296 | rm -f conftest$ac_exeext | 5453 | rm -f conftest$ac_exeext |
5297 | if { (eval echo "$as_me:5297: \"$ac_link\"") >&5 | 5454 | if { (eval echo "$as_me:5454: \"$ac_link\"") >&5 |
5298 | (eval $ac_link) 2>&5 | 5455 | (eval $ac_link) 2>&5 |
5299 | ac_status=$? | 5456 | ac_status=$? |
5300 | echo "$as_me:5300: \$? = $ac_status" >&5 | 5457 | echo "$as_me:5457: \$? = $ac_status" >&5 |
5301 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' | 5458 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' |
5302 | { (eval echo "$as_me:5302: \"$ac_try\"") >&5 | 5459 | { (eval echo "$as_me:5459: \"$ac_try\"") >&5 |
5303 | (eval $ac_try) 2>&5 | 5460 | (eval $ac_try) 2>&5 |
5304 | ac_status=$? | 5461 | ac_status=$? |
5305 | echo "$as_me:5305: \$? = $ac_status" >&5 | 5462 | echo "$as_me:5462: \$? = $ac_status" >&5 |
5306 | (exit $ac_status); }; }; then | 5463 | (exit $ac_status); }; }; then |
5307 | ac_cv_have_broken_dirname="no" | 5464 | ac_cv_have_broken_dirname="no" |
5308 | else | 5465 | else |
@@ -5317,7 +5474,7 @@ fi | |||
5317 | LIBS="$save_LIBS" | 5474 | LIBS="$save_LIBS" |
5318 | 5475 | ||
5319 | fi | 5476 | fi |
5320 | echo "$as_me:5320: result: $ac_cv_have_broken_dirname" >&5 | 5477 | echo "$as_me:5477: result: $ac_cv_have_broken_dirname" >&5 |
5321 | echo "${ECHO_T}$ac_cv_have_broken_dirname" >&6 | 5478 | echo "${ECHO_T}$ac_cv_have_broken_dirname" >&6 |
5322 | if test "x$ac_cv_have_broken_dirname" = "xno" ; then | 5479 | if test "x$ac_cv_have_broken_dirname" = "xno" ; then |
5323 | LIBS="$LIBS -lgen" | 5480 | LIBS="$LIBS -lgen" |
@@ -5328,23 +5485,23 @@ EOF | |||
5328 | for ac_header in libgen.h | 5485 | for ac_header in libgen.h |
5329 | do | 5486 | do |
5330 | as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` | 5487 | as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` |
5331 | echo "$as_me:5331: checking for $ac_header" >&5 | 5488 | echo "$as_me:5488: checking for $ac_header" >&5 |
5332 | echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 | 5489 | echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 |
5333 | if eval "test \"\${$as_ac_Header+set}\" = set"; then | 5490 | if eval "test \"\${$as_ac_Header+set}\" = set"; then |
5334 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 5491 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
5335 | else | 5492 | else |
5336 | cat >conftest.$ac_ext <<_ACEOF | 5493 | cat >conftest.$ac_ext <<_ACEOF |
5337 | #line 5337 "configure" | 5494 | #line 5494 "configure" |
5338 | #include "confdefs.h" | 5495 | #include "confdefs.h" |
5339 | #include <$ac_header> | 5496 | #include <$ac_header> |
5340 | _ACEOF | 5497 | _ACEOF |
5341 | if { (eval echo "$as_me:5341: \"$ac_cpp conftest.$ac_ext\"") >&5 | 5498 | if { (eval echo "$as_me:5498: \"$ac_cpp conftest.$ac_ext\"") >&5 |
5342 | (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 | 5499 | (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 |
5343 | ac_status=$? | 5500 | ac_status=$? |
5344 | egrep -v '^ *\+' conftest.er1 >conftest.err | 5501 | egrep -v '^ *\+' conftest.er1 >conftest.err |
5345 | rm -f conftest.er1 | 5502 | rm -f conftest.er1 |
5346 | cat conftest.err >&5 | 5503 | cat conftest.err >&5 |
5347 | echo "$as_me:5347: \$? = $ac_status" >&5 | 5504 | echo "$as_me:5504: \$? = $ac_status" >&5 |
5348 | (exit $ac_status); } >/dev/null; then | 5505 | (exit $ac_status); } >/dev/null; then |
5349 | if test -s conftest.err; then | 5506 | if test -s conftest.err; then |
5350 | ac_cpp_err=$ac_c_preproc_warn_flag | 5507 | ac_cpp_err=$ac_c_preproc_warn_flag |
@@ -5363,7 +5520,7 @@ else | |||
5363 | fi | 5520 | fi |
5364 | rm -f conftest.err conftest.$ac_ext | 5521 | rm -f conftest.err conftest.$ac_ext |
5365 | fi | 5522 | fi |
5366 | echo "$as_me:5366: result: `eval echo '${'$as_ac_Header'}'`" >&5 | 5523 | echo "$as_me:5523: result: `eval echo '${'$as_ac_Header'}'`" >&5 |
5367 | echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 | 5524 | echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 |
5368 | if test `eval echo '${'$as_ac_Header'}'` = yes; then | 5525 | if test `eval echo '${'$as_ac_Header'}'` = yes; then |
5369 | cat >>confdefs.h <<EOF | 5526 | cat >>confdefs.h <<EOF |
@@ -5380,13 +5537,13 @@ fi | |||
5380 | fi | 5537 | fi |
5381 | done | 5538 | done |
5382 | 5539 | ||
5383 | echo "$as_me:5383: checking for getspnam" >&5 | 5540 | echo "$as_me:5540: checking for getspnam" >&5 |
5384 | echo $ECHO_N "checking for getspnam... $ECHO_C" >&6 | 5541 | echo $ECHO_N "checking for getspnam... $ECHO_C" >&6 |
5385 | if test "${ac_cv_func_getspnam+set}" = set; then | 5542 | if test "${ac_cv_func_getspnam+set}" = set; then |
5386 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 5543 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
5387 | else | 5544 | else |
5388 | cat >conftest.$ac_ext <<_ACEOF | 5545 | cat >conftest.$ac_ext <<_ACEOF |
5389 | #line 5389 "configure" | 5546 | #line 5546 "configure" |
5390 | #include "confdefs.h" | 5547 | #include "confdefs.h" |
5391 | /* System header to define __stub macros and hopefully few prototypes, | 5548 | /* System header to define __stub macros and hopefully few prototypes, |
5392 | which can conflict with char getspnam (); below. */ | 5549 | which can conflict with char getspnam (); below. */ |
@@ -5417,16 +5574,16 @@ f = getspnam; | |||
5417 | } | 5574 | } |
5418 | _ACEOF | 5575 | _ACEOF |
5419 | rm -f conftest.$ac_objext conftest$ac_exeext | 5576 | rm -f conftest.$ac_objext conftest$ac_exeext |
5420 | if { (eval echo "$as_me:5420: \"$ac_link\"") >&5 | 5577 | if { (eval echo "$as_me:5577: \"$ac_link\"") >&5 |
5421 | (eval $ac_link) 2>&5 | 5578 | (eval $ac_link) 2>&5 |
5422 | ac_status=$? | 5579 | ac_status=$? |
5423 | echo "$as_me:5423: \$? = $ac_status" >&5 | 5580 | echo "$as_me:5580: \$? = $ac_status" >&5 |
5424 | (exit $ac_status); } && | 5581 | (exit $ac_status); } && |
5425 | { ac_try='test -s conftest$ac_exeext' | 5582 | { ac_try='test -s conftest$ac_exeext' |
5426 | { (eval echo "$as_me:5426: \"$ac_try\"") >&5 | 5583 | { (eval echo "$as_me:5583: \"$ac_try\"") >&5 |
5427 | (eval $ac_try) 2>&5 | 5584 | (eval $ac_try) 2>&5 |
5428 | ac_status=$? | 5585 | ac_status=$? |
5429 | echo "$as_me:5429: \$? = $ac_status" >&5 | 5586 | echo "$as_me:5586: \$? = $ac_status" >&5 |
5430 | (exit $ac_status); }; }; then | 5587 | (exit $ac_status); }; }; then |
5431 | ac_cv_func_getspnam=yes | 5588 | ac_cv_func_getspnam=yes |
5432 | else | 5589 | else |
@@ -5436,12 +5593,12 @@ ac_cv_func_getspnam=no | |||
5436 | fi | 5593 | fi |
5437 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 5594 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
5438 | fi | 5595 | fi |
5439 | echo "$as_me:5439: result: $ac_cv_func_getspnam" >&5 | 5596 | echo "$as_me:5596: result: $ac_cv_func_getspnam" >&5 |
5440 | echo "${ECHO_T}$ac_cv_func_getspnam" >&6 | 5597 | echo "${ECHO_T}$ac_cv_func_getspnam" >&6 |
5441 | if test $ac_cv_func_getspnam = yes; then | 5598 | if test $ac_cv_func_getspnam = yes; then |
5442 | : | 5599 | : |
5443 | else | 5600 | else |
5444 | echo "$as_me:5444: checking for getspnam in -lgen" >&5 | 5601 | echo "$as_me:5601: checking for getspnam in -lgen" >&5 |
5445 | echo $ECHO_N "checking for getspnam in -lgen... $ECHO_C" >&6 | 5602 | echo $ECHO_N "checking for getspnam in -lgen... $ECHO_C" >&6 |
5446 | if test "${ac_cv_lib_gen_getspnam+set}" = set; then | 5603 | if test "${ac_cv_lib_gen_getspnam+set}" = set; then |
5447 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 5604 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -5449,7 +5606,7 @@ else | |||
5449 | ac_check_lib_save_LIBS=$LIBS | 5606 | ac_check_lib_save_LIBS=$LIBS |
5450 | LIBS="-lgen $LIBS" | 5607 | LIBS="-lgen $LIBS" |
5451 | cat >conftest.$ac_ext <<_ACEOF | 5608 | cat >conftest.$ac_ext <<_ACEOF |
5452 | #line 5452 "configure" | 5609 | #line 5609 "configure" |
5453 | #include "confdefs.h" | 5610 | #include "confdefs.h" |
5454 | 5611 | ||
5455 | /* Override any gcc2 internal prototype to avoid an error. */ | 5612 | /* Override any gcc2 internal prototype to avoid an error. */ |
@@ -5468,16 +5625,16 @@ getspnam (); | |||
5468 | } | 5625 | } |
5469 | _ACEOF | 5626 | _ACEOF |
5470 | rm -f conftest.$ac_objext conftest$ac_exeext | 5627 | rm -f conftest.$ac_objext conftest$ac_exeext |
5471 | if { (eval echo "$as_me:5471: \"$ac_link\"") >&5 | 5628 | if { (eval echo "$as_me:5628: \"$ac_link\"") >&5 |
5472 | (eval $ac_link) 2>&5 | 5629 | (eval $ac_link) 2>&5 |
5473 | ac_status=$? | 5630 | ac_status=$? |
5474 | echo "$as_me:5474: \$? = $ac_status" >&5 | 5631 | echo "$as_me:5631: \$? = $ac_status" >&5 |
5475 | (exit $ac_status); } && | 5632 | (exit $ac_status); } && |
5476 | { ac_try='test -s conftest$ac_exeext' | 5633 | { ac_try='test -s conftest$ac_exeext' |
5477 | { (eval echo "$as_me:5477: \"$ac_try\"") >&5 | 5634 | { (eval echo "$as_me:5634: \"$ac_try\"") >&5 |
5478 | (eval $ac_try) 2>&5 | 5635 | (eval $ac_try) 2>&5 |
5479 | ac_status=$? | 5636 | ac_status=$? |
5480 | echo "$as_me:5480: \$? = $ac_status" >&5 | 5637 | echo "$as_me:5637: \$? = $ac_status" >&5 |
5481 | (exit $ac_status); }; }; then | 5638 | (exit $ac_status); }; }; then |
5482 | ac_cv_lib_gen_getspnam=yes | 5639 | ac_cv_lib_gen_getspnam=yes |
5483 | else | 5640 | else |
@@ -5488,7 +5645,7 @@ fi | |||
5488 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 5645 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
5489 | LIBS=$ac_check_lib_save_LIBS | 5646 | LIBS=$ac_check_lib_save_LIBS |
5490 | fi | 5647 | fi |
5491 | echo "$as_me:5491: result: $ac_cv_lib_gen_getspnam" >&5 | 5648 | echo "$as_me:5648: result: $ac_cv_lib_gen_getspnam" >&5 |
5492 | echo "${ECHO_T}$ac_cv_lib_gen_getspnam" >&6 | 5649 | echo "${ECHO_T}$ac_cv_lib_gen_getspnam" >&6 |
5493 | if test $ac_cv_lib_gen_getspnam = yes; then | 5650 | if test $ac_cv_lib_gen_getspnam = yes; then |
5494 | LIBS="$LIBS -lgen" | 5651 | LIBS="$LIBS -lgen" |
@@ -5496,7 +5653,7 @@ fi | |||
5496 | 5653 | ||
5497 | fi | 5654 | fi |
5498 | 5655 | ||
5499 | echo "$as_me:5499: checking for library containing basename" >&5 | 5656 | echo "$as_me:5656: checking for library containing basename" >&5 |
5500 | echo $ECHO_N "checking for library containing basename... $ECHO_C" >&6 | 5657 | echo $ECHO_N "checking for library containing basename... $ECHO_C" >&6 |
5501 | if test "${ac_cv_search_basename+set}" = set; then | 5658 | if test "${ac_cv_search_basename+set}" = set; then |
5502 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 5659 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -5504,7 +5661,7 @@ else | |||
5504 | ac_func_search_save_LIBS=$LIBS | 5661 | ac_func_search_save_LIBS=$LIBS |
5505 | ac_cv_search_basename=no | 5662 | ac_cv_search_basename=no |
5506 | cat >conftest.$ac_ext <<_ACEOF | 5663 | cat >conftest.$ac_ext <<_ACEOF |
5507 | #line 5507 "configure" | 5664 | #line 5664 "configure" |
5508 | #include "confdefs.h" | 5665 | #include "confdefs.h" |
5509 | 5666 | ||
5510 | /* Override any gcc2 internal prototype to avoid an error. */ | 5667 | /* Override any gcc2 internal prototype to avoid an error. */ |
@@ -5523,16 +5680,16 @@ basename (); | |||
5523 | } | 5680 | } |
5524 | _ACEOF | 5681 | _ACEOF |
5525 | rm -f conftest.$ac_objext conftest$ac_exeext | 5682 | rm -f conftest.$ac_objext conftest$ac_exeext |
5526 | if { (eval echo "$as_me:5526: \"$ac_link\"") >&5 | 5683 | if { (eval echo "$as_me:5683: \"$ac_link\"") >&5 |
5527 | (eval $ac_link) 2>&5 | 5684 | (eval $ac_link) 2>&5 |
5528 | ac_status=$? | 5685 | ac_status=$? |
5529 | echo "$as_me:5529: \$? = $ac_status" >&5 | 5686 | echo "$as_me:5686: \$? = $ac_status" >&5 |
5530 | (exit $ac_status); } && | 5687 | (exit $ac_status); } && |
5531 | { ac_try='test -s conftest$ac_exeext' | 5688 | { ac_try='test -s conftest$ac_exeext' |
5532 | { (eval echo "$as_me:5532: \"$ac_try\"") >&5 | 5689 | { (eval echo "$as_me:5689: \"$ac_try\"") >&5 |
5533 | (eval $ac_try) 2>&5 | 5690 | (eval $ac_try) 2>&5 |
5534 | ac_status=$? | 5691 | ac_status=$? |
5535 | echo "$as_me:5535: \$? = $ac_status" >&5 | 5692 | echo "$as_me:5692: \$? = $ac_status" >&5 |
5536 | (exit $ac_status); }; }; then | 5693 | (exit $ac_status); }; }; then |
5537 | ac_cv_search_basename="none required" | 5694 | ac_cv_search_basename="none required" |
5538 | else | 5695 | else |
@@ -5544,7 +5701,7 @@ if test "$ac_cv_search_basename" = no; then | |||
5544 | for ac_lib in gen; do | 5701 | for ac_lib in gen; do |
5545 | LIBS="-l$ac_lib $ac_func_search_save_LIBS" | 5702 | LIBS="-l$ac_lib $ac_func_search_save_LIBS" |
5546 | cat >conftest.$ac_ext <<_ACEOF | 5703 | cat >conftest.$ac_ext <<_ACEOF |
5547 | #line 5547 "configure" | 5704 | #line 5704 "configure" |
5548 | #include "confdefs.h" | 5705 | #include "confdefs.h" |
5549 | 5706 | ||
5550 | /* Override any gcc2 internal prototype to avoid an error. */ | 5707 | /* Override any gcc2 internal prototype to avoid an error. */ |
@@ -5563,16 +5720,16 @@ basename (); | |||
5563 | } | 5720 | } |
5564 | _ACEOF | 5721 | _ACEOF |
5565 | rm -f conftest.$ac_objext conftest$ac_exeext | 5722 | rm -f conftest.$ac_objext conftest$ac_exeext |
5566 | if { (eval echo "$as_me:5566: \"$ac_link\"") >&5 | 5723 | if { (eval echo "$as_me:5723: \"$ac_link\"") >&5 |
5567 | (eval $ac_link) 2>&5 | 5724 | (eval $ac_link) 2>&5 |
5568 | ac_status=$? | 5725 | ac_status=$? |
5569 | echo "$as_me:5569: \$? = $ac_status" >&5 | 5726 | echo "$as_me:5726: \$? = $ac_status" >&5 |
5570 | (exit $ac_status); } && | 5727 | (exit $ac_status); } && |
5571 | { ac_try='test -s conftest$ac_exeext' | 5728 | { ac_try='test -s conftest$ac_exeext' |
5572 | { (eval echo "$as_me:5572: \"$ac_try\"") >&5 | 5729 | { (eval echo "$as_me:5729: \"$ac_try\"") >&5 |
5573 | (eval $ac_try) 2>&5 | 5730 | (eval $ac_try) 2>&5 |
5574 | ac_status=$? | 5731 | ac_status=$? |
5575 | echo "$as_me:5575: \$? = $ac_status" >&5 | 5732 | echo "$as_me:5732: \$? = $ac_status" >&5 |
5576 | (exit $ac_status); }; }; then | 5733 | (exit $ac_status); }; }; then |
5577 | ac_cv_search_basename="-l$ac_lib" | 5734 | ac_cv_search_basename="-l$ac_lib" |
5578 | break | 5735 | break |
@@ -5585,7 +5742,7 @@ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | |||
5585 | fi | 5742 | fi |
5586 | LIBS=$ac_func_search_save_LIBS | 5743 | LIBS=$ac_func_search_save_LIBS |
5587 | fi | 5744 | fi |
5588 | echo "$as_me:5588: result: $ac_cv_search_basename" >&5 | 5745 | echo "$as_me:5745: result: $ac_cv_search_basename" >&5 |
5589 | echo "${ECHO_T}$ac_cv_search_basename" >&6 | 5746 | echo "${ECHO_T}$ac_cv_search_basename" >&6 |
5590 | if test "$ac_cv_search_basename" != no; then | 5747 | if test "$ac_cv_search_basename" != no; then |
5591 | test "$ac_cv_search_basename" = "none required" || LIBS="$ac_cv_search_basename $LIBS" | 5748 | test "$ac_cv_search_basename" = "none required" || LIBS="$ac_cv_search_basename $LIBS" |
@@ -5595,25 +5752,12 @@ EOF | |||
5595 | 5752 | ||
5596 | fi | 5753 | fi |
5597 | 5754 | ||
5598 | # Check whether --with-rpath or --without-rpath was given. | ||
5599 | if test "${with_rpath+set}" = set; then | ||
5600 | withval="$with_rpath" | ||
5601 | |||
5602 | if test "x$withval" = "xno" ; then | ||
5603 | need_dash_r="" | ||
5604 | fi | ||
5605 | if test "x$withval" = "xyes" ; then | ||
5606 | need_dash_r=1 | ||
5607 | fi | ||
5608 | |||
5609 | fi; | ||
5610 | |||
5611 | # Check whether --with-zlib or --without-zlib was given. | 5755 | # Check whether --with-zlib or --without-zlib was given. |
5612 | if test "${with_zlib+set}" = set; then | 5756 | if test "${with_zlib+set}" = set; then |
5613 | withval="$with_zlib" | 5757 | withval="$with_zlib" |
5614 | 5758 | ||
5615 | if test "x$withval" = "xno" ; then | 5759 | if test "x$withval" = "xno" ; then |
5616 | { { echo "$as_me:5616: error: *** zlib is required ***" >&5 | 5760 | { { echo "$as_me:5760: error: *** zlib is required ***" >&5 |
5617 | echo "$as_me: error: *** zlib is required ***" >&2;} | 5761 | echo "$as_me: error: *** zlib is required ***" >&2;} |
5618 | { (exit 1); exit 1; }; } | 5762 | { (exit 1); exit 1; }; } |
5619 | fi | 5763 | fi |
@@ -5638,7 +5782,7 @@ echo "$as_me: error: *** zlib is required ***" >&2;} | |||
5638 | 5782 | ||
5639 | fi; | 5783 | fi; |
5640 | 5784 | ||
5641 | echo "$as_me:5641: checking for deflate in -lz" >&5 | 5785 | echo "$as_me:5785: checking for deflate in -lz" >&5 |
5642 | echo $ECHO_N "checking for deflate in -lz... $ECHO_C" >&6 | 5786 | echo $ECHO_N "checking for deflate in -lz... $ECHO_C" >&6 |
5643 | if test "${ac_cv_lib_z_deflate+set}" = set; then | 5787 | if test "${ac_cv_lib_z_deflate+set}" = set; then |
5644 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 5788 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -5646,7 +5790,7 @@ else | |||
5646 | ac_check_lib_save_LIBS=$LIBS | 5790 | ac_check_lib_save_LIBS=$LIBS |
5647 | LIBS="-lz $LIBS" | 5791 | LIBS="-lz $LIBS" |
5648 | cat >conftest.$ac_ext <<_ACEOF | 5792 | cat >conftest.$ac_ext <<_ACEOF |
5649 | #line 5649 "configure" | 5793 | #line 5793 "configure" |
5650 | #include "confdefs.h" | 5794 | #include "confdefs.h" |
5651 | 5795 | ||
5652 | /* Override any gcc2 internal prototype to avoid an error. */ | 5796 | /* Override any gcc2 internal prototype to avoid an error. */ |
@@ -5665,16 +5809,16 @@ deflate (); | |||
5665 | } | 5809 | } |
5666 | _ACEOF | 5810 | _ACEOF |
5667 | rm -f conftest.$ac_objext conftest$ac_exeext | 5811 | rm -f conftest.$ac_objext conftest$ac_exeext |
5668 | if { (eval echo "$as_me:5668: \"$ac_link\"") >&5 | 5812 | if { (eval echo "$as_me:5812: \"$ac_link\"") >&5 |
5669 | (eval $ac_link) 2>&5 | 5813 | (eval $ac_link) 2>&5 |
5670 | ac_status=$? | 5814 | ac_status=$? |
5671 | echo "$as_me:5671: \$? = $ac_status" >&5 | 5815 | echo "$as_me:5815: \$? = $ac_status" >&5 |
5672 | (exit $ac_status); } && | 5816 | (exit $ac_status); } && |
5673 | { ac_try='test -s conftest$ac_exeext' | 5817 | { ac_try='test -s conftest$ac_exeext' |
5674 | { (eval echo "$as_me:5674: \"$ac_try\"") >&5 | 5818 | { (eval echo "$as_me:5818: \"$ac_try\"") >&5 |
5675 | (eval $ac_try) 2>&5 | 5819 | (eval $ac_try) 2>&5 |
5676 | ac_status=$? | 5820 | ac_status=$? |
5677 | echo "$as_me:5677: \$? = $ac_status" >&5 | 5821 | echo "$as_me:5821: \$? = $ac_status" >&5 |
5678 | (exit $ac_status); }; }; then | 5822 | (exit $ac_status); }; }; then |
5679 | ac_cv_lib_z_deflate=yes | 5823 | ac_cv_lib_z_deflate=yes |
5680 | else | 5824 | else |
@@ -5685,7 +5829,7 @@ fi | |||
5685 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 5829 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
5686 | LIBS=$ac_check_lib_save_LIBS | 5830 | LIBS=$ac_check_lib_save_LIBS |
5687 | fi | 5831 | fi |
5688 | echo "$as_me:5688: result: $ac_cv_lib_z_deflate" >&5 | 5832 | echo "$as_me:5832: result: $ac_cv_lib_z_deflate" >&5 |
5689 | echo "${ECHO_T}$ac_cv_lib_z_deflate" >&6 | 5833 | echo "${ECHO_T}$ac_cv_lib_z_deflate" >&6 |
5690 | if test $ac_cv_lib_z_deflate = yes; then | 5834 | if test $ac_cv_lib_z_deflate = yes; then |
5691 | cat >>confdefs.h <<EOF | 5835 | cat >>confdefs.h <<EOF |
@@ -5695,18 +5839,192 @@ EOF | |||
5695 | LIBS="-lz $LIBS" | 5839 | LIBS="-lz $LIBS" |
5696 | 5840 | ||
5697 | else | 5841 | else |
5698 | { { echo "$as_me:5698: error: *** zlib missing - please install first or check config.log ***" >&5 | 5842 | |
5843 | saved_CPPFLAGS="$CPPFLAGS" | ||
5844 | saved_LDFLAGS="$LDFLAGS" | ||
5845 | save_LIBS="$LIBS" | ||
5846 | if test -n "${need_dash_r}"; then | ||
5847 | LDFLAGS="-L/usr/local/lib -R/usr/local/lib ${saved_LDFLAGS}" | ||
5848 | else | ||
5849 | LDFLAGS="-L/usr/local/lib ${saved_LDFLAGS}" | ||
5850 | fi | ||
5851 | CPPFLAGS="-I/usr/local/include ${saved_CPPFLAGS}" | ||
5852 | LIBS="$LIBS -lz" | ||
5853 | cat >conftest.$ac_ext <<_ACEOF | ||
5854 | #line 5854 "configure" | ||
5855 | #include "confdefs.h" | ||
5856 | |||
5857 | /* Override any gcc2 internal prototype to avoid an error. */ | ||
5858 | #ifdef __cplusplus | ||
5859 | extern "C" | ||
5860 | #endif | ||
5861 | /* We use char because int might match the return type of a gcc2 | ||
5862 | builtin and then its argument prototype would still apply. */ | ||
5863 | char deflate (); | ||
5864 | int | ||
5865 | main () | ||
5866 | { | ||
5867 | deflate (); | ||
5868 | ; | ||
5869 | return 0; | ||
5870 | } | ||
5871 | _ACEOF | ||
5872 | rm -f conftest.$ac_objext conftest$ac_exeext | ||
5873 | if { (eval echo "$as_me:5873: \"$ac_link\"") >&5 | ||
5874 | (eval $ac_link) 2>&5 | ||
5875 | ac_status=$? | ||
5876 | echo "$as_me:5876: \$? = $ac_status" >&5 | ||
5877 | (exit $ac_status); } && | ||
5878 | { ac_try='test -s conftest$ac_exeext' | ||
5879 | { (eval echo "$as_me:5879: \"$ac_try\"") >&5 | ||
5880 | (eval $ac_try) 2>&5 | ||
5881 | ac_status=$? | ||
5882 | echo "$as_me:5882: \$? = $ac_status" >&5 | ||
5883 | (exit $ac_status); }; }; then | ||
5884 | cat >>confdefs.h <<\EOF | ||
5885 | #define HAVE_LIBZ 1 | ||
5886 | EOF | ||
5887 | |||
5888 | else | ||
5889 | echo "$as_me: failed program was:" >&5 | ||
5890 | cat conftest.$ac_ext >&5 | ||
5891 | |||
5892 | { { echo "$as_me:5892: error: *** zlib missing - please install first or check config.log ***" >&5 | ||
5699 | echo "$as_me: error: *** zlib missing - please install first or check config.log ***" >&2;} | 5893 | echo "$as_me: error: *** zlib missing - please install first or check config.log ***" >&2;} |
5700 | { (exit 1); exit 1; }; } | 5894 | { (exit 1); exit 1; }; } |
5895 | |||
5896 | fi | ||
5897 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | ||
5898 | |||
5899 | fi | ||
5900 | |||
5901 | echo "$as_me:5901: checking for zlib.h" >&5 | ||
5902 | echo $ECHO_N "checking for zlib.h... $ECHO_C" >&6 | ||
5903 | if test "${ac_cv_header_zlib_h+set}" = set; then | ||
5904 | echo $ECHO_N "(cached) $ECHO_C" >&6 | ||
5905 | else | ||
5906 | cat >conftest.$ac_ext <<_ACEOF | ||
5907 | #line 5907 "configure" | ||
5908 | #include "confdefs.h" | ||
5909 | #include <zlib.h> | ||
5910 | _ACEOF | ||
5911 | if { (eval echo "$as_me:5911: \"$ac_cpp conftest.$ac_ext\"") >&5 | ||
5912 | (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 | ||
5913 | ac_status=$? | ||
5914 | egrep -v '^ *\+' conftest.er1 >conftest.err | ||
5915 | rm -f conftest.er1 | ||
5916 | cat conftest.err >&5 | ||
5917 | echo "$as_me:5917: \$? = $ac_status" >&5 | ||
5918 | (exit $ac_status); } >/dev/null; then | ||
5919 | if test -s conftest.err; then | ||
5920 | ac_cpp_err=$ac_c_preproc_warn_flag | ||
5921 | else | ||
5922 | ac_cpp_err= | ||
5923 | fi | ||
5924 | else | ||
5925 | ac_cpp_err=yes | ||
5926 | fi | ||
5927 | if test -z "$ac_cpp_err"; then | ||
5928 | ac_cv_header_zlib_h=yes | ||
5929 | else | ||
5930 | echo "$as_me: failed program was:" >&5 | ||
5931 | cat conftest.$ac_ext >&5 | ||
5932 | ac_cv_header_zlib_h=no | ||
5933 | fi | ||
5934 | rm -f conftest.err conftest.$ac_ext | ||
5935 | fi | ||
5936 | echo "$as_me:5936: result: $ac_cv_header_zlib_h" >&5 | ||
5937 | echo "${ECHO_T}$ac_cv_header_zlib_h" >&6 | ||
5938 | if test $ac_cv_header_zlib_h = yes; then | ||
5939 | : | ||
5940 | else | ||
5941 | { { echo "$as_me:5941: error: *** zlib.h missing - please install first or check config.log ***" >&5 | ||
5942 | echo "$as_me: error: *** zlib.h missing - please install first or check config.log ***" >&2;} | ||
5943 | { (exit 1); exit 1; }; } | ||
5701 | fi | 5944 | fi |
5702 | 5945 | ||
5703 | echo "$as_me:5703: checking for strcasecmp" >&5 | 5946 | # Check whether --with-zlib-version-check or --without-zlib-version-check was given. |
5947 | if test "${with_zlib_version_check+set}" = set; then | ||
5948 | withval="$with_zlib_version_check" | ||
5949 | if test "x$withval" = "xno" ; then | ||
5950 | zlib_check_nonfatal=1 | ||
5951 | fi | ||
5952 | |||
5953 | fi; | ||
5954 | |||
5955 | echo "$as_me:5955: checking for zlib 1.1.4 or greater" >&5 | ||
5956 | echo $ECHO_N "checking for zlib 1.1.4 or greater... $ECHO_C" >&6 | ||
5957 | if test "$cross_compiling" = yes; then | ||
5958 | { { echo "$as_me:5958: error: cannot run test program while cross compiling" >&5 | ||
5959 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} | ||
5960 | { (exit 1); exit 1; }; } | ||
5961 | else | ||
5962 | cat >conftest.$ac_ext <<_ACEOF | ||
5963 | #line 5963 "configure" | ||
5964 | #include "confdefs.h" | ||
5965 | |||
5966 | #include <zlib.h> | ||
5967 | int main() | ||
5968 | { | ||
5969 | int a, b, c, v; | ||
5970 | if (sscanf(ZLIB_VERSION, "%d.%d.%d", &a, &b, &c) != 3) | ||
5971 | exit(1); | ||
5972 | v = a*1000000 + b*1000 + c; | ||
5973 | if (v >= 1001004) | ||
5974 | exit(0); | ||
5975 | exit(2); | ||
5976 | } | ||
5977 | |||
5978 | _ACEOF | ||
5979 | rm -f conftest$ac_exeext | ||
5980 | if { (eval echo "$as_me:5980: \"$ac_link\"") >&5 | ||
5981 | (eval $ac_link) 2>&5 | ||
5982 | ac_status=$? | ||
5983 | echo "$as_me:5983: \$? = $ac_status" >&5 | ||
5984 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' | ||
5985 | { (eval echo "$as_me:5985: \"$ac_try\"") >&5 | ||
5986 | (eval $ac_try) 2>&5 | ||
5987 | ac_status=$? | ||
5988 | echo "$as_me:5988: \$? = $ac_status" >&5 | ||
5989 | (exit $ac_status); }; }; then | ||
5990 | echo "$as_me:5990: result: yes" >&5 | ||
5991 | echo "${ECHO_T}yes" >&6 | ||
5992 | else | ||
5993 | echo "$as_me: program exited with status $ac_status" >&5 | ||
5994 | echo "$as_me: failed program was:" >&5 | ||
5995 | cat conftest.$ac_ext >&5 | ||
5996 | echo "$as_me:5996: result: no" >&5 | ||
5997 | echo "${ECHO_T}no" >&6 | ||
5998 | if test -z "$zlib_check_nonfatal" ; then | ||
5999 | { { echo "$as_me:5999: error: *** zlib too old - check config.log *** | ||
6000 | Your reported zlib version has known security problems. It's possible your | ||
6001 | vendor has fixed these problems without changing the version number. If you | ||
6002 | are sure this is the case, you can disable the check by running | ||
6003 | \"./configure --without-zlib-version-check\". | ||
6004 | If you are in doubt, upgrade zlib to version 1.1.4 or greater." >&5 | ||
6005 | echo "$as_me: error: *** zlib too old - check config.log *** | ||
6006 | Your reported zlib version has known security problems. It's possible your | ||
6007 | vendor has fixed these problems without changing the version number. If you | ||
6008 | are sure this is the case, you can disable the check by running | ||
6009 | \"./configure --without-zlib-version-check\". | ||
6010 | If you are in doubt, upgrade zlib to version 1.1.4 or greater." >&2;} | ||
6011 | { (exit 1); exit 1; }; } | ||
6012 | else | ||
6013 | { echo "$as_me:6013: WARNING: zlib version may have security problems" >&5 | ||
6014 | echo "$as_me: WARNING: zlib version may have security problems" >&2;} | ||
6015 | fi | ||
6016 | |||
6017 | fi | ||
6018 | rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext | ||
6019 | fi | ||
6020 | |||
6021 | echo "$as_me:6021: checking for strcasecmp" >&5 | ||
5704 | echo $ECHO_N "checking for strcasecmp... $ECHO_C" >&6 | 6022 | echo $ECHO_N "checking for strcasecmp... $ECHO_C" >&6 |
5705 | if test "${ac_cv_func_strcasecmp+set}" = set; then | 6023 | if test "${ac_cv_func_strcasecmp+set}" = set; then |
5706 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 6024 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
5707 | else | 6025 | else |
5708 | cat >conftest.$ac_ext <<_ACEOF | 6026 | cat >conftest.$ac_ext <<_ACEOF |
5709 | #line 5709 "configure" | 6027 | #line 6027 "configure" |
5710 | #include "confdefs.h" | 6028 | #include "confdefs.h" |
5711 | /* System header to define __stub macros and hopefully few prototypes, | 6029 | /* System header to define __stub macros and hopefully few prototypes, |
5712 | which can conflict with char strcasecmp (); below. */ | 6030 | which can conflict with char strcasecmp (); below. */ |
@@ -5737,16 +6055,16 @@ f = strcasecmp; | |||
5737 | } | 6055 | } |
5738 | _ACEOF | 6056 | _ACEOF |
5739 | rm -f conftest.$ac_objext conftest$ac_exeext | 6057 | rm -f conftest.$ac_objext conftest$ac_exeext |
5740 | if { (eval echo "$as_me:5740: \"$ac_link\"") >&5 | 6058 | if { (eval echo "$as_me:6058: \"$ac_link\"") >&5 |
5741 | (eval $ac_link) 2>&5 | 6059 | (eval $ac_link) 2>&5 |
5742 | ac_status=$? | 6060 | ac_status=$? |
5743 | echo "$as_me:5743: \$? = $ac_status" >&5 | 6061 | echo "$as_me:6061: \$? = $ac_status" >&5 |
5744 | (exit $ac_status); } && | 6062 | (exit $ac_status); } && |
5745 | { ac_try='test -s conftest$ac_exeext' | 6063 | { ac_try='test -s conftest$ac_exeext' |
5746 | { (eval echo "$as_me:5746: \"$ac_try\"") >&5 | 6064 | { (eval echo "$as_me:6064: \"$ac_try\"") >&5 |
5747 | (eval $ac_try) 2>&5 | 6065 | (eval $ac_try) 2>&5 |
5748 | ac_status=$? | 6066 | ac_status=$? |
5749 | echo "$as_me:5749: \$? = $ac_status" >&5 | 6067 | echo "$as_me:6067: \$? = $ac_status" >&5 |
5750 | (exit $ac_status); }; }; then | 6068 | (exit $ac_status); }; }; then |
5751 | ac_cv_func_strcasecmp=yes | 6069 | ac_cv_func_strcasecmp=yes |
5752 | else | 6070 | else |
@@ -5756,12 +6074,12 @@ ac_cv_func_strcasecmp=no | |||
5756 | fi | 6074 | fi |
5757 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 6075 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
5758 | fi | 6076 | fi |
5759 | echo "$as_me:5759: result: $ac_cv_func_strcasecmp" >&5 | 6077 | echo "$as_me:6077: result: $ac_cv_func_strcasecmp" >&5 |
5760 | echo "${ECHO_T}$ac_cv_func_strcasecmp" >&6 | 6078 | echo "${ECHO_T}$ac_cv_func_strcasecmp" >&6 |
5761 | if test $ac_cv_func_strcasecmp = yes; then | 6079 | if test $ac_cv_func_strcasecmp = yes; then |
5762 | : | 6080 | : |
5763 | else | 6081 | else |
5764 | echo "$as_me:5764: checking for strcasecmp in -lresolv" >&5 | 6082 | echo "$as_me:6082: checking for strcasecmp in -lresolv" >&5 |
5765 | echo $ECHO_N "checking for strcasecmp in -lresolv... $ECHO_C" >&6 | 6083 | echo $ECHO_N "checking for strcasecmp in -lresolv... $ECHO_C" >&6 |
5766 | if test "${ac_cv_lib_resolv_strcasecmp+set}" = set; then | 6084 | if test "${ac_cv_lib_resolv_strcasecmp+set}" = set; then |
5767 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 6085 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -5769,7 +6087,7 @@ else | |||
5769 | ac_check_lib_save_LIBS=$LIBS | 6087 | ac_check_lib_save_LIBS=$LIBS |
5770 | LIBS="-lresolv $LIBS" | 6088 | LIBS="-lresolv $LIBS" |
5771 | cat >conftest.$ac_ext <<_ACEOF | 6089 | cat >conftest.$ac_ext <<_ACEOF |
5772 | #line 5772 "configure" | 6090 | #line 6090 "configure" |
5773 | #include "confdefs.h" | 6091 | #include "confdefs.h" |
5774 | 6092 | ||
5775 | /* Override any gcc2 internal prototype to avoid an error. */ | 6093 | /* Override any gcc2 internal prototype to avoid an error. */ |
@@ -5788,16 +6106,16 @@ strcasecmp (); | |||
5788 | } | 6106 | } |
5789 | _ACEOF | 6107 | _ACEOF |
5790 | rm -f conftest.$ac_objext conftest$ac_exeext | 6108 | rm -f conftest.$ac_objext conftest$ac_exeext |
5791 | if { (eval echo "$as_me:5791: \"$ac_link\"") >&5 | 6109 | if { (eval echo "$as_me:6109: \"$ac_link\"") >&5 |
5792 | (eval $ac_link) 2>&5 | 6110 | (eval $ac_link) 2>&5 |
5793 | ac_status=$? | 6111 | ac_status=$? |
5794 | echo "$as_me:5794: \$? = $ac_status" >&5 | 6112 | echo "$as_me:6112: \$? = $ac_status" >&5 |
5795 | (exit $ac_status); } && | 6113 | (exit $ac_status); } && |
5796 | { ac_try='test -s conftest$ac_exeext' | 6114 | { ac_try='test -s conftest$ac_exeext' |
5797 | { (eval echo "$as_me:5797: \"$ac_try\"") >&5 | 6115 | { (eval echo "$as_me:6115: \"$ac_try\"") >&5 |
5798 | (eval $ac_try) 2>&5 | 6116 | (eval $ac_try) 2>&5 |
5799 | ac_status=$? | 6117 | ac_status=$? |
5800 | echo "$as_me:5800: \$? = $ac_status" >&5 | 6118 | echo "$as_me:6118: \$? = $ac_status" >&5 |
5801 | (exit $ac_status); }; }; then | 6119 | (exit $ac_status); }; }; then |
5802 | ac_cv_lib_resolv_strcasecmp=yes | 6120 | ac_cv_lib_resolv_strcasecmp=yes |
5803 | else | 6121 | else |
@@ -5808,7 +6126,7 @@ fi | |||
5808 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 6126 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
5809 | LIBS=$ac_check_lib_save_LIBS | 6127 | LIBS=$ac_check_lib_save_LIBS |
5810 | fi | 6128 | fi |
5811 | echo "$as_me:5811: result: $ac_cv_lib_resolv_strcasecmp" >&5 | 6129 | echo "$as_me:6129: result: $ac_cv_lib_resolv_strcasecmp" >&5 |
5812 | echo "${ECHO_T}$ac_cv_lib_resolv_strcasecmp" >&6 | 6130 | echo "${ECHO_T}$ac_cv_lib_resolv_strcasecmp" >&6 |
5813 | if test $ac_cv_lib_resolv_strcasecmp = yes; then | 6131 | if test $ac_cv_lib_resolv_strcasecmp = yes; then |
5814 | LIBS="$LIBS -lresolv" | 6132 | LIBS="$LIBS -lresolv" |
@@ -5816,13 +6134,13 @@ fi | |||
5816 | 6134 | ||
5817 | fi | 6135 | fi |
5818 | 6136 | ||
5819 | echo "$as_me:5819: checking for utimes" >&5 | 6137 | echo "$as_me:6137: checking for utimes" >&5 |
5820 | echo $ECHO_N "checking for utimes... $ECHO_C" >&6 | 6138 | echo $ECHO_N "checking for utimes... $ECHO_C" >&6 |
5821 | if test "${ac_cv_func_utimes+set}" = set; then | 6139 | if test "${ac_cv_func_utimes+set}" = set; then |
5822 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 6140 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
5823 | else | 6141 | else |
5824 | cat >conftest.$ac_ext <<_ACEOF | 6142 | cat >conftest.$ac_ext <<_ACEOF |
5825 | #line 5825 "configure" | 6143 | #line 6143 "configure" |
5826 | #include "confdefs.h" | 6144 | #include "confdefs.h" |
5827 | /* System header to define __stub macros and hopefully few prototypes, | 6145 | /* System header to define __stub macros and hopefully few prototypes, |
5828 | which can conflict with char utimes (); below. */ | 6146 | which can conflict with char utimes (); below. */ |
@@ -5853,16 +6171,16 @@ f = utimes; | |||
5853 | } | 6171 | } |
5854 | _ACEOF | 6172 | _ACEOF |
5855 | rm -f conftest.$ac_objext conftest$ac_exeext | 6173 | rm -f conftest.$ac_objext conftest$ac_exeext |
5856 | if { (eval echo "$as_me:5856: \"$ac_link\"") >&5 | 6174 | if { (eval echo "$as_me:6174: \"$ac_link\"") >&5 |
5857 | (eval $ac_link) 2>&5 | 6175 | (eval $ac_link) 2>&5 |
5858 | ac_status=$? | 6176 | ac_status=$? |
5859 | echo "$as_me:5859: \$? = $ac_status" >&5 | 6177 | echo "$as_me:6177: \$? = $ac_status" >&5 |
5860 | (exit $ac_status); } && | 6178 | (exit $ac_status); } && |
5861 | { ac_try='test -s conftest$ac_exeext' | 6179 | { ac_try='test -s conftest$ac_exeext' |
5862 | { (eval echo "$as_me:5862: \"$ac_try\"") >&5 | 6180 | { (eval echo "$as_me:6180: \"$ac_try\"") >&5 |
5863 | (eval $ac_try) 2>&5 | 6181 | (eval $ac_try) 2>&5 |
5864 | ac_status=$? | 6182 | ac_status=$? |
5865 | echo "$as_me:5865: \$? = $ac_status" >&5 | 6183 | echo "$as_me:6183: \$? = $ac_status" >&5 |
5866 | (exit $ac_status); }; }; then | 6184 | (exit $ac_status); }; }; then |
5867 | ac_cv_func_utimes=yes | 6185 | ac_cv_func_utimes=yes |
5868 | else | 6186 | else |
@@ -5872,12 +6190,12 @@ ac_cv_func_utimes=no | |||
5872 | fi | 6190 | fi |
5873 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 6191 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
5874 | fi | 6192 | fi |
5875 | echo "$as_me:5875: result: $ac_cv_func_utimes" >&5 | 6193 | echo "$as_me:6193: result: $ac_cv_func_utimes" >&5 |
5876 | echo "${ECHO_T}$ac_cv_func_utimes" >&6 | 6194 | echo "${ECHO_T}$ac_cv_func_utimes" >&6 |
5877 | if test $ac_cv_func_utimes = yes; then | 6195 | if test $ac_cv_func_utimes = yes; then |
5878 | : | 6196 | : |
5879 | else | 6197 | else |
5880 | echo "$as_me:5880: checking for utimes in -lc89" >&5 | 6198 | echo "$as_me:6198: checking for utimes in -lc89" >&5 |
5881 | echo $ECHO_N "checking for utimes in -lc89... $ECHO_C" >&6 | 6199 | echo $ECHO_N "checking for utimes in -lc89... $ECHO_C" >&6 |
5882 | if test "${ac_cv_lib_c89_utimes+set}" = set; then | 6200 | if test "${ac_cv_lib_c89_utimes+set}" = set; then |
5883 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 6201 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -5885,7 +6203,7 @@ else | |||
5885 | ac_check_lib_save_LIBS=$LIBS | 6203 | ac_check_lib_save_LIBS=$LIBS |
5886 | LIBS="-lc89 $LIBS" | 6204 | LIBS="-lc89 $LIBS" |
5887 | cat >conftest.$ac_ext <<_ACEOF | 6205 | cat >conftest.$ac_ext <<_ACEOF |
5888 | #line 5888 "configure" | 6206 | #line 6206 "configure" |
5889 | #include "confdefs.h" | 6207 | #include "confdefs.h" |
5890 | 6208 | ||
5891 | /* Override any gcc2 internal prototype to avoid an error. */ | 6209 | /* Override any gcc2 internal prototype to avoid an error. */ |
@@ -5904,16 +6222,16 @@ utimes (); | |||
5904 | } | 6222 | } |
5905 | _ACEOF | 6223 | _ACEOF |
5906 | rm -f conftest.$ac_objext conftest$ac_exeext | 6224 | rm -f conftest.$ac_objext conftest$ac_exeext |
5907 | if { (eval echo "$as_me:5907: \"$ac_link\"") >&5 | 6225 | if { (eval echo "$as_me:6225: \"$ac_link\"") >&5 |
5908 | (eval $ac_link) 2>&5 | 6226 | (eval $ac_link) 2>&5 |
5909 | ac_status=$? | 6227 | ac_status=$? |
5910 | echo "$as_me:5910: \$? = $ac_status" >&5 | 6228 | echo "$as_me:6228: \$? = $ac_status" >&5 |
5911 | (exit $ac_status); } && | 6229 | (exit $ac_status); } && |
5912 | { ac_try='test -s conftest$ac_exeext' | 6230 | { ac_try='test -s conftest$ac_exeext' |
5913 | { (eval echo "$as_me:5913: \"$ac_try\"") >&5 | 6231 | { (eval echo "$as_me:6231: \"$ac_try\"") >&5 |
5914 | (eval $ac_try) 2>&5 | 6232 | (eval $ac_try) 2>&5 |
5915 | ac_status=$? | 6233 | ac_status=$? |
5916 | echo "$as_me:5916: \$? = $ac_status" >&5 | 6234 | echo "$as_me:6234: \$? = $ac_status" >&5 |
5917 | (exit $ac_status); }; }; then | 6235 | (exit $ac_status); }; }; then |
5918 | ac_cv_lib_c89_utimes=yes | 6236 | ac_cv_lib_c89_utimes=yes |
5919 | else | 6237 | else |
@@ -5924,7 +6242,7 @@ fi | |||
5924 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 6242 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
5925 | LIBS=$ac_check_lib_save_LIBS | 6243 | LIBS=$ac_check_lib_save_LIBS |
5926 | fi | 6244 | fi |
5927 | echo "$as_me:5927: result: $ac_cv_lib_c89_utimes" >&5 | 6245 | echo "$as_me:6245: result: $ac_cv_lib_c89_utimes" >&5 |
5928 | echo "${ECHO_T}$ac_cv_lib_c89_utimes" >&6 | 6246 | echo "${ECHO_T}$ac_cv_lib_c89_utimes" >&6 |
5929 | if test $ac_cv_lib_c89_utimes = yes; then | 6247 | if test $ac_cv_lib_c89_utimes = yes; then |
5930 | cat >>confdefs.h <<\EOF | 6248 | cat >>confdefs.h <<\EOF |
@@ -5939,23 +6257,23 @@ fi | |||
5939 | for ac_header in libutil.h | 6257 | for ac_header in libutil.h |
5940 | do | 6258 | do |
5941 | as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` | 6259 | as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` |
5942 | echo "$as_me:5942: checking for $ac_header" >&5 | 6260 | echo "$as_me:6260: checking for $ac_header" >&5 |
5943 | echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 | 6261 | echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 |
5944 | if eval "test \"\${$as_ac_Header+set}\" = set"; then | 6262 | if eval "test \"\${$as_ac_Header+set}\" = set"; then |
5945 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 6263 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
5946 | else | 6264 | else |
5947 | cat >conftest.$ac_ext <<_ACEOF | 6265 | cat >conftest.$ac_ext <<_ACEOF |
5948 | #line 5948 "configure" | 6266 | #line 6266 "configure" |
5949 | #include "confdefs.h" | 6267 | #include "confdefs.h" |
5950 | #include <$ac_header> | 6268 | #include <$ac_header> |
5951 | _ACEOF | 6269 | _ACEOF |
5952 | if { (eval echo "$as_me:5952: \"$ac_cpp conftest.$ac_ext\"") >&5 | 6270 | if { (eval echo "$as_me:6270: \"$ac_cpp conftest.$ac_ext\"") >&5 |
5953 | (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 | 6271 | (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 |
5954 | ac_status=$? | 6272 | ac_status=$? |
5955 | egrep -v '^ *\+' conftest.er1 >conftest.err | 6273 | egrep -v '^ *\+' conftest.er1 >conftest.err |
5956 | rm -f conftest.er1 | 6274 | rm -f conftest.er1 |
5957 | cat conftest.err >&5 | 6275 | cat conftest.err >&5 |
5958 | echo "$as_me:5958: \$? = $ac_status" >&5 | 6276 | echo "$as_me:6276: \$? = $ac_status" >&5 |
5959 | (exit $ac_status); } >/dev/null; then | 6277 | (exit $ac_status); } >/dev/null; then |
5960 | if test -s conftest.err; then | 6278 | if test -s conftest.err; then |
5961 | ac_cpp_err=$ac_c_preproc_warn_flag | 6279 | ac_cpp_err=$ac_c_preproc_warn_flag |
@@ -5974,7 +6292,7 @@ else | |||
5974 | fi | 6292 | fi |
5975 | rm -f conftest.err conftest.$ac_ext | 6293 | rm -f conftest.err conftest.$ac_ext |
5976 | fi | 6294 | fi |
5977 | echo "$as_me:5977: result: `eval echo '${'$as_ac_Header'}'`" >&5 | 6295 | echo "$as_me:6295: result: `eval echo '${'$as_ac_Header'}'`" >&5 |
5978 | echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 | 6296 | echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 |
5979 | if test `eval echo '${'$as_ac_Header'}'` = yes; then | 6297 | if test `eval echo '${'$as_ac_Header'}'` = yes; then |
5980 | cat >>confdefs.h <<EOF | 6298 | cat >>confdefs.h <<EOF |
@@ -5984,7 +6302,7 @@ EOF | |||
5984 | fi | 6302 | fi |
5985 | done | 6303 | done |
5986 | 6304 | ||
5987 | echo "$as_me:5987: checking for library containing login" >&5 | 6305 | echo "$as_me:6305: checking for library containing login" >&5 |
5988 | echo $ECHO_N "checking for library containing login... $ECHO_C" >&6 | 6306 | echo $ECHO_N "checking for library containing login... $ECHO_C" >&6 |
5989 | if test "${ac_cv_search_login+set}" = set; then | 6307 | if test "${ac_cv_search_login+set}" = set; then |
5990 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 6308 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -5992,7 +6310,7 @@ else | |||
5992 | ac_func_search_save_LIBS=$LIBS | 6310 | ac_func_search_save_LIBS=$LIBS |
5993 | ac_cv_search_login=no | 6311 | ac_cv_search_login=no |
5994 | cat >conftest.$ac_ext <<_ACEOF | 6312 | cat >conftest.$ac_ext <<_ACEOF |
5995 | #line 5995 "configure" | 6313 | #line 6313 "configure" |
5996 | #include "confdefs.h" | 6314 | #include "confdefs.h" |
5997 | 6315 | ||
5998 | /* Override any gcc2 internal prototype to avoid an error. */ | 6316 | /* Override any gcc2 internal prototype to avoid an error. */ |
@@ -6011,16 +6329,16 @@ login (); | |||
6011 | } | 6329 | } |
6012 | _ACEOF | 6330 | _ACEOF |
6013 | rm -f conftest.$ac_objext conftest$ac_exeext | 6331 | rm -f conftest.$ac_objext conftest$ac_exeext |
6014 | if { (eval echo "$as_me:6014: \"$ac_link\"") >&5 | 6332 | if { (eval echo "$as_me:6332: \"$ac_link\"") >&5 |
6015 | (eval $ac_link) 2>&5 | 6333 | (eval $ac_link) 2>&5 |
6016 | ac_status=$? | 6334 | ac_status=$? |
6017 | echo "$as_me:6017: \$? = $ac_status" >&5 | 6335 | echo "$as_me:6335: \$? = $ac_status" >&5 |
6018 | (exit $ac_status); } && | 6336 | (exit $ac_status); } && |
6019 | { ac_try='test -s conftest$ac_exeext' | 6337 | { ac_try='test -s conftest$ac_exeext' |
6020 | { (eval echo "$as_me:6020: \"$ac_try\"") >&5 | 6338 | { (eval echo "$as_me:6338: \"$ac_try\"") >&5 |
6021 | (eval $ac_try) 2>&5 | 6339 | (eval $ac_try) 2>&5 |
6022 | ac_status=$? | 6340 | ac_status=$? |
6023 | echo "$as_me:6023: \$? = $ac_status" >&5 | 6341 | echo "$as_me:6341: \$? = $ac_status" >&5 |
6024 | (exit $ac_status); }; }; then | 6342 | (exit $ac_status); }; }; then |
6025 | ac_cv_search_login="none required" | 6343 | ac_cv_search_login="none required" |
6026 | else | 6344 | else |
@@ -6032,7 +6350,7 @@ if test "$ac_cv_search_login" = no; then | |||
6032 | for ac_lib in util bsd; do | 6350 | for ac_lib in util bsd; do |
6033 | LIBS="-l$ac_lib $ac_func_search_save_LIBS" | 6351 | LIBS="-l$ac_lib $ac_func_search_save_LIBS" |
6034 | cat >conftest.$ac_ext <<_ACEOF | 6352 | cat >conftest.$ac_ext <<_ACEOF |
6035 | #line 6035 "configure" | 6353 | #line 6353 "configure" |
6036 | #include "confdefs.h" | 6354 | #include "confdefs.h" |
6037 | 6355 | ||
6038 | /* Override any gcc2 internal prototype to avoid an error. */ | 6356 | /* Override any gcc2 internal prototype to avoid an error. */ |
@@ -6051,16 +6369,16 @@ login (); | |||
6051 | } | 6369 | } |
6052 | _ACEOF | 6370 | _ACEOF |
6053 | rm -f conftest.$ac_objext conftest$ac_exeext | 6371 | rm -f conftest.$ac_objext conftest$ac_exeext |
6054 | if { (eval echo "$as_me:6054: \"$ac_link\"") >&5 | 6372 | if { (eval echo "$as_me:6372: \"$ac_link\"") >&5 |
6055 | (eval $ac_link) 2>&5 | 6373 | (eval $ac_link) 2>&5 |
6056 | ac_status=$? | 6374 | ac_status=$? |
6057 | echo "$as_me:6057: \$? = $ac_status" >&5 | 6375 | echo "$as_me:6375: \$? = $ac_status" >&5 |
6058 | (exit $ac_status); } && | 6376 | (exit $ac_status); } && |
6059 | { ac_try='test -s conftest$ac_exeext' | 6377 | { ac_try='test -s conftest$ac_exeext' |
6060 | { (eval echo "$as_me:6060: \"$ac_try\"") >&5 | 6378 | { (eval echo "$as_me:6378: \"$ac_try\"") >&5 |
6061 | (eval $ac_try) 2>&5 | 6379 | (eval $ac_try) 2>&5 |
6062 | ac_status=$? | 6380 | ac_status=$? |
6063 | echo "$as_me:6063: \$? = $ac_status" >&5 | 6381 | echo "$as_me:6381: \$? = $ac_status" >&5 |
6064 | (exit $ac_status); }; }; then | 6382 | (exit $ac_status); }; }; then |
6065 | ac_cv_search_login="-l$ac_lib" | 6383 | ac_cv_search_login="-l$ac_lib" |
6066 | break | 6384 | break |
@@ -6073,7 +6391,7 @@ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | |||
6073 | fi | 6391 | fi |
6074 | LIBS=$ac_func_search_save_LIBS | 6392 | LIBS=$ac_func_search_save_LIBS |
6075 | fi | 6393 | fi |
6076 | echo "$as_me:6076: result: $ac_cv_search_login" >&5 | 6394 | echo "$as_me:6394: result: $ac_cv_search_login" >&5 |
6077 | echo "${ECHO_T}$ac_cv_search_login" >&6 | 6395 | echo "${ECHO_T}$ac_cv_search_login" >&6 |
6078 | if test "$ac_cv_search_login" != no; then | 6396 | if test "$ac_cv_search_login" != no; then |
6079 | test "$ac_cv_search_login" = "none required" || LIBS="$ac_cv_search_login $LIBS" | 6397 | test "$ac_cv_search_login" = "none required" || LIBS="$ac_cv_search_login $LIBS" |
@@ -6086,13 +6404,13 @@ fi | |||
6086 | for ac_func in logout updwtmp logwtmp | 6404 | for ac_func in logout updwtmp logwtmp |
6087 | do | 6405 | do |
6088 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` | 6406 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` |
6089 | echo "$as_me:6089: checking for $ac_func" >&5 | 6407 | echo "$as_me:6407: checking for $ac_func" >&5 |
6090 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 | 6408 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 |
6091 | if eval "test \"\${$as_ac_var+set}\" = set"; then | 6409 | if eval "test \"\${$as_ac_var+set}\" = set"; then |
6092 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 6410 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
6093 | else | 6411 | else |
6094 | cat >conftest.$ac_ext <<_ACEOF | 6412 | cat >conftest.$ac_ext <<_ACEOF |
6095 | #line 6095 "configure" | 6413 | #line 6413 "configure" |
6096 | #include "confdefs.h" | 6414 | #include "confdefs.h" |
6097 | /* System header to define __stub macros and hopefully few prototypes, | 6415 | /* System header to define __stub macros and hopefully few prototypes, |
6098 | which can conflict with char $ac_func (); below. */ | 6416 | which can conflict with char $ac_func (); below. */ |
@@ -6123,16 +6441,16 @@ f = $ac_func; | |||
6123 | } | 6441 | } |
6124 | _ACEOF | 6442 | _ACEOF |
6125 | rm -f conftest.$ac_objext conftest$ac_exeext | 6443 | rm -f conftest.$ac_objext conftest$ac_exeext |
6126 | if { (eval echo "$as_me:6126: \"$ac_link\"") >&5 | 6444 | if { (eval echo "$as_me:6444: \"$ac_link\"") >&5 |
6127 | (eval $ac_link) 2>&5 | 6445 | (eval $ac_link) 2>&5 |
6128 | ac_status=$? | 6446 | ac_status=$? |
6129 | echo "$as_me:6129: \$? = $ac_status" >&5 | 6447 | echo "$as_me:6447: \$? = $ac_status" >&5 |
6130 | (exit $ac_status); } && | 6448 | (exit $ac_status); } && |
6131 | { ac_try='test -s conftest$ac_exeext' | 6449 | { ac_try='test -s conftest$ac_exeext' |
6132 | { (eval echo "$as_me:6132: \"$ac_try\"") >&5 | 6450 | { (eval echo "$as_me:6450: \"$ac_try\"") >&5 |
6133 | (eval $ac_try) 2>&5 | 6451 | (eval $ac_try) 2>&5 |
6134 | ac_status=$? | 6452 | ac_status=$? |
6135 | echo "$as_me:6135: \$? = $ac_status" >&5 | 6453 | echo "$as_me:6453: \$? = $ac_status" >&5 |
6136 | (exit $ac_status); }; }; then | 6454 | (exit $ac_status); }; }; then |
6137 | eval "$as_ac_var=yes" | 6455 | eval "$as_ac_var=yes" |
6138 | else | 6456 | else |
@@ -6142,7 +6460,7 @@ eval "$as_ac_var=no" | |||
6142 | fi | 6460 | fi |
6143 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 6461 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
6144 | fi | 6462 | fi |
6145 | echo "$as_me:6145: result: `eval echo '${'$as_ac_var'}'`" >&5 | 6463 | echo "$as_me:6463: result: `eval echo '${'$as_ac_var'}'`" >&5 |
6146 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 | 6464 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 |
6147 | if test `eval echo '${'$as_ac_var'}'` = yes; then | 6465 | if test `eval echo '${'$as_ac_var'}'` = yes; then |
6148 | cat >>confdefs.h <<EOF | 6466 | cat >>confdefs.h <<EOF |
@@ -6155,13 +6473,13 @@ done | |||
6155 | for ac_func in strftime | 6473 | for ac_func in strftime |
6156 | do | 6474 | do |
6157 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` | 6475 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` |
6158 | echo "$as_me:6158: checking for $ac_func" >&5 | 6476 | echo "$as_me:6476: checking for $ac_func" >&5 |
6159 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 | 6477 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 |
6160 | if eval "test \"\${$as_ac_var+set}\" = set"; then | 6478 | if eval "test \"\${$as_ac_var+set}\" = set"; then |
6161 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 6479 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
6162 | else | 6480 | else |
6163 | cat >conftest.$ac_ext <<_ACEOF | 6481 | cat >conftest.$ac_ext <<_ACEOF |
6164 | #line 6164 "configure" | 6482 | #line 6482 "configure" |
6165 | #include "confdefs.h" | 6483 | #include "confdefs.h" |
6166 | /* System header to define __stub macros and hopefully few prototypes, | 6484 | /* System header to define __stub macros and hopefully few prototypes, |
6167 | which can conflict with char $ac_func (); below. */ | 6485 | which can conflict with char $ac_func (); below. */ |
@@ -6192,16 +6510,16 @@ f = $ac_func; | |||
6192 | } | 6510 | } |
6193 | _ACEOF | 6511 | _ACEOF |
6194 | rm -f conftest.$ac_objext conftest$ac_exeext | 6512 | rm -f conftest.$ac_objext conftest$ac_exeext |
6195 | if { (eval echo "$as_me:6195: \"$ac_link\"") >&5 | 6513 | if { (eval echo "$as_me:6513: \"$ac_link\"") >&5 |
6196 | (eval $ac_link) 2>&5 | 6514 | (eval $ac_link) 2>&5 |
6197 | ac_status=$? | 6515 | ac_status=$? |
6198 | echo "$as_me:6198: \$? = $ac_status" >&5 | 6516 | echo "$as_me:6516: \$? = $ac_status" >&5 |
6199 | (exit $ac_status); } && | 6517 | (exit $ac_status); } && |
6200 | { ac_try='test -s conftest$ac_exeext' | 6518 | { ac_try='test -s conftest$ac_exeext' |
6201 | { (eval echo "$as_me:6201: \"$ac_try\"") >&5 | 6519 | { (eval echo "$as_me:6519: \"$ac_try\"") >&5 |
6202 | (eval $ac_try) 2>&5 | 6520 | (eval $ac_try) 2>&5 |
6203 | ac_status=$? | 6521 | ac_status=$? |
6204 | echo "$as_me:6204: \$? = $ac_status" >&5 | 6522 | echo "$as_me:6522: \$? = $ac_status" >&5 |
6205 | (exit $ac_status); }; }; then | 6523 | (exit $ac_status); }; }; then |
6206 | eval "$as_ac_var=yes" | 6524 | eval "$as_ac_var=yes" |
6207 | else | 6525 | else |
@@ -6211,7 +6529,7 @@ eval "$as_ac_var=no" | |||
6211 | fi | 6529 | fi |
6212 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 6530 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
6213 | fi | 6531 | fi |
6214 | echo "$as_me:6214: result: `eval echo '${'$as_ac_var'}'`" >&5 | 6532 | echo "$as_me:6532: result: `eval echo '${'$as_ac_var'}'`" >&5 |
6215 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 | 6533 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 |
6216 | if test `eval echo '${'$as_ac_var'}'` = yes; then | 6534 | if test `eval echo '${'$as_ac_var'}'` = yes; then |
6217 | cat >>confdefs.h <<EOF | 6535 | cat >>confdefs.h <<EOF |
@@ -6220,7 +6538,7 @@ EOF | |||
6220 | 6538 | ||
6221 | else | 6539 | else |
6222 | # strftime is in -lintl on SCO UNIX. | 6540 | # strftime is in -lintl on SCO UNIX. |
6223 | echo "$as_me:6223: checking for strftime in -lintl" >&5 | 6541 | echo "$as_me:6541: checking for strftime in -lintl" >&5 |
6224 | echo $ECHO_N "checking for strftime in -lintl... $ECHO_C" >&6 | 6542 | echo $ECHO_N "checking for strftime in -lintl... $ECHO_C" >&6 |
6225 | if test "${ac_cv_lib_intl_strftime+set}" = set; then | 6543 | if test "${ac_cv_lib_intl_strftime+set}" = set; then |
6226 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 6544 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -6228,7 +6546,7 @@ else | |||
6228 | ac_check_lib_save_LIBS=$LIBS | 6546 | ac_check_lib_save_LIBS=$LIBS |
6229 | LIBS="-lintl $LIBS" | 6547 | LIBS="-lintl $LIBS" |
6230 | cat >conftest.$ac_ext <<_ACEOF | 6548 | cat >conftest.$ac_ext <<_ACEOF |
6231 | #line 6231 "configure" | 6549 | #line 6549 "configure" |
6232 | #include "confdefs.h" | 6550 | #include "confdefs.h" |
6233 | 6551 | ||
6234 | /* Override any gcc2 internal prototype to avoid an error. */ | 6552 | /* Override any gcc2 internal prototype to avoid an error. */ |
@@ -6247,16 +6565,16 @@ strftime (); | |||
6247 | } | 6565 | } |
6248 | _ACEOF | 6566 | _ACEOF |
6249 | rm -f conftest.$ac_objext conftest$ac_exeext | 6567 | rm -f conftest.$ac_objext conftest$ac_exeext |
6250 | if { (eval echo "$as_me:6250: \"$ac_link\"") >&5 | 6568 | if { (eval echo "$as_me:6568: \"$ac_link\"") >&5 |
6251 | (eval $ac_link) 2>&5 | 6569 | (eval $ac_link) 2>&5 |
6252 | ac_status=$? | 6570 | ac_status=$? |
6253 | echo "$as_me:6253: \$? = $ac_status" >&5 | 6571 | echo "$as_me:6571: \$? = $ac_status" >&5 |
6254 | (exit $ac_status); } && | 6572 | (exit $ac_status); } && |
6255 | { ac_try='test -s conftest$ac_exeext' | 6573 | { ac_try='test -s conftest$ac_exeext' |
6256 | { (eval echo "$as_me:6256: \"$ac_try\"") >&5 | 6574 | { (eval echo "$as_me:6574: \"$ac_try\"") >&5 |
6257 | (eval $ac_try) 2>&5 | 6575 | (eval $ac_try) 2>&5 |
6258 | ac_status=$? | 6576 | ac_status=$? |
6259 | echo "$as_me:6259: \$? = $ac_status" >&5 | 6577 | echo "$as_me:6577: \$? = $ac_status" >&5 |
6260 | (exit $ac_status); }; }; then | 6578 | (exit $ac_status); }; }; then |
6261 | ac_cv_lib_intl_strftime=yes | 6579 | ac_cv_lib_intl_strftime=yes |
6262 | else | 6580 | else |
@@ -6267,7 +6585,7 @@ fi | |||
6267 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 6585 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
6268 | LIBS=$ac_check_lib_save_LIBS | 6586 | LIBS=$ac_check_lib_save_LIBS |
6269 | fi | 6587 | fi |
6270 | echo "$as_me:6270: result: $ac_cv_lib_intl_strftime" >&5 | 6588 | echo "$as_me:6588: result: $ac_cv_lib_intl_strftime" >&5 |
6271 | echo "${ECHO_T}$ac_cv_lib_intl_strftime" >&6 | 6589 | echo "${ECHO_T}$ac_cv_lib_intl_strftime" >&6 |
6272 | if test $ac_cv_lib_intl_strftime = yes; then | 6590 | if test $ac_cv_lib_intl_strftime = yes; then |
6273 | cat >>confdefs.h <<\EOF | 6591 | cat >>confdefs.h <<\EOF |
@@ -6281,10 +6599,10 @@ fi | |||
6281 | done | 6599 | done |
6282 | 6600 | ||
6283 | # Check for ALTDIRFUNC glob() extension | 6601 | # Check for ALTDIRFUNC glob() extension |
6284 | echo "$as_me:6284: checking for GLOB_ALTDIRFUNC support" >&5 | 6602 | echo "$as_me:6602: checking for GLOB_ALTDIRFUNC support" >&5 |
6285 | echo $ECHO_N "checking for GLOB_ALTDIRFUNC support... $ECHO_C" >&6 | 6603 | echo $ECHO_N "checking for GLOB_ALTDIRFUNC support... $ECHO_C" >&6 |
6286 | cat >conftest.$ac_ext <<_ACEOF | 6604 | cat >conftest.$ac_ext <<_ACEOF |
6287 | #line 6287 "configure" | 6605 | #line 6605 "configure" |
6288 | #include "confdefs.h" | 6606 | #include "confdefs.h" |
6289 | 6607 | ||
6290 | #include <glob.h> | 6608 | #include <glob.h> |
@@ -6300,55 +6618,55 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | | |||
6300 | #define GLOB_HAS_ALTDIRFUNC 1 | 6618 | #define GLOB_HAS_ALTDIRFUNC 1 |
6301 | EOF | 6619 | EOF |
6302 | 6620 | ||
6303 | echo "$as_me:6303: result: yes" >&5 | 6621 | echo "$as_me:6621: result: yes" >&5 |
6304 | echo "${ECHO_T}yes" >&6 | 6622 | echo "${ECHO_T}yes" >&6 |
6305 | 6623 | ||
6306 | else | 6624 | else |
6307 | 6625 | ||
6308 | echo "$as_me:6308: result: no" >&5 | 6626 | echo "$as_me:6626: result: no" >&5 |
6309 | echo "${ECHO_T}no" >&6 | 6627 | echo "${ECHO_T}no" >&6 |
6310 | 6628 | ||
6311 | fi | 6629 | fi |
6312 | rm -f conftest* | 6630 | rm -f conftest* |
6313 | 6631 | ||
6314 | # Check for g.gl_matchc glob() extension | 6632 | # Check for g.gl_matchc glob() extension |
6315 | echo "$as_me:6315: checking for gl_matchc field in glob_t" >&5 | 6633 | echo "$as_me:6633: checking for gl_matchc field in glob_t" >&5 |
6316 | echo $ECHO_N "checking for gl_matchc field in glob_t... $ECHO_C" >&6 | 6634 | echo $ECHO_N "checking for gl_matchc field in glob_t... $ECHO_C" >&6 |
6317 | cat >conftest.$ac_ext <<_ACEOF | 6635 | cat >conftest.$ac_ext <<_ACEOF |
6318 | #line 6318 "configure" | 6636 | #line 6636 "configure" |
6319 | #include "confdefs.h" | 6637 | #include "confdefs.h" |
6320 | 6638 | ||
6321 | #include <glob.h> | 6639 | #include <glob.h> |
6322 | int main(void){glob_t g; g.gl_matchc = 1;} | 6640 | int main(void){glob_t g; g.gl_matchc = 1;} |
6323 | 6641 | ||
6324 | _ACEOF | 6642 | _ACEOF |
6325 | if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | | 6643 | if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | |
6326 | egrep "FOUNDIT" >/dev/null 2>&1; then | 6644 | egrep "FOUNDIT" >/dev/null 2>&1; then |
6327 | 6645 | ||
6328 | cat >>confdefs.h <<\EOF | 6646 | cat >>confdefs.h <<\EOF |
6329 | #define GLOB_HAS_GL_MATCHC 1 | 6647 | #define GLOB_HAS_GL_MATCHC 1 |
6330 | EOF | 6648 | EOF |
6331 | 6649 | ||
6332 | echo "$as_me:6332: result: yes" >&5 | 6650 | echo "$as_me:6650: result: yes" >&5 |
6333 | echo "${ECHO_T}yes" >&6 | 6651 | echo "${ECHO_T}yes" >&6 |
6334 | 6652 | ||
6335 | else | 6653 | else |
6336 | 6654 | ||
6337 | echo "$as_me:6337: result: no" >&5 | 6655 | echo "$as_me:6655: result: no" >&5 |
6338 | echo "${ECHO_T}no" >&6 | 6656 | echo "${ECHO_T}no" >&6 |
6339 | 6657 | ||
6340 | fi | 6658 | fi |
6341 | rm -f conftest* | 6659 | rm -f conftest* |
6342 | 6660 | ||
6343 | echo "$as_me:6343: checking whether struct dirent allocates space for d_name" >&5 | 6661 | echo "$as_me:6661: checking whether struct dirent allocates space for d_name" >&5 |
6344 | echo $ECHO_N "checking whether struct dirent allocates space for d_name... $ECHO_C" >&6 | 6662 | echo $ECHO_N "checking whether struct dirent allocates space for d_name... $ECHO_C" >&6 |
6345 | if test "$cross_compiling" = yes; then | 6663 | if test "$cross_compiling" = yes; then |
6346 | { { echo "$as_me:6346: error: cannot run test program while cross compiling" >&5 | 6664 | { { echo "$as_me:6664: error: cannot run test program while cross compiling" >&5 |
6347 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} | 6665 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} |
6348 | { (exit 1); exit 1; }; } | 6666 | { (exit 1); exit 1; }; } |
6349 | else | 6667 | else |
6350 | cat >conftest.$ac_ext <<_ACEOF | 6668 | cat >conftest.$ac_ext <<_ACEOF |
6351 | #line 6351 "configure" | 6669 | #line 6669 "configure" |
6352 | #include "confdefs.h" | 6670 | #include "confdefs.h" |
6353 | 6671 | ||
6354 | #include <sys/types.h> | 6672 | #include <sys/types.h> |
@@ -6357,24 +6675,24 @@ int main(void){struct dirent d;exit(sizeof(d.d_name)<=sizeof(char));} | |||
6357 | 6675 | ||
6358 | _ACEOF | 6676 | _ACEOF |
6359 | rm -f conftest$ac_exeext | 6677 | rm -f conftest$ac_exeext |
6360 | if { (eval echo "$as_me:6360: \"$ac_link\"") >&5 | 6678 | if { (eval echo "$as_me:6678: \"$ac_link\"") >&5 |
6361 | (eval $ac_link) 2>&5 | 6679 | (eval $ac_link) 2>&5 |
6362 | ac_status=$? | 6680 | ac_status=$? |
6363 | echo "$as_me:6363: \$? = $ac_status" >&5 | 6681 | echo "$as_me:6681: \$? = $ac_status" >&5 |
6364 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' | 6682 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' |
6365 | { (eval echo "$as_me:6365: \"$ac_try\"") >&5 | 6683 | { (eval echo "$as_me:6683: \"$ac_try\"") >&5 |
6366 | (eval $ac_try) 2>&5 | 6684 | (eval $ac_try) 2>&5 |
6367 | ac_status=$? | 6685 | ac_status=$? |
6368 | echo "$as_me:6368: \$? = $ac_status" >&5 | 6686 | echo "$as_me:6686: \$? = $ac_status" >&5 |
6369 | (exit $ac_status); }; }; then | 6687 | (exit $ac_status); }; }; then |
6370 | echo "$as_me:6370: result: yes" >&5 | 6688 | echo "$as_me:6688: result: yes" >&5 |
6371 | echo "${ECHO_T}yes" >&6 | 6689 | echo "${ECHO_T}yes" >&6 |
6372 | else | 6690 | else |
6373 | echo "$as_me: program exited with status $ac_status" >&5 | 6691 | echo "$as_me: program exited with status $ac_status" >&5 |
6374 | echo "$as_me: failed program was:" >&5 | 6692 | echo "$as_me: failed program was:" >&5 |
6375 | cat conftest.$ac_ext >&5 | 6693 | cat conftest.$ac_ext >&5 |
6376 | 6694 | ||
6377 | echo "$as_me:6377: result: no" >&5 | 6695 | echo "$as_me:6695: result: no" >&5 |
6378 | echo "${ECHO_T}no" >&6 | 6696 | echo "${ECHO_T}no" >&6 |
6379 | cat >>confdefs.h <<\EOF | 6697 | cat >>confdefs.h <<\EOF |
6380 | #define BROKEN_ONE_BYTE_DIRENT_D_NAME 1 | 6698 | #define BROKEN_ONE_BYTE_DIRENT_D_NAME 1 |
@@ -6405,15 +6723,15 @@ EOF | |||
6405 | LIBS="-lskey $LIBS" | 6723 | LIBS="-lskey $LIBS" |
6406 | SKEY_MSG="yes" | 6724 | SKEY_MSG="yes" |
6407 | 6725 | ||
6408 | echo "$as_me:6408: checking for s/key support" >&5 | 6726 | echo "$as_me:6726: checking for s/key support" >&5 |
6409 | echo $ECHO_N "checking for s/key support... $ECHO_C" >&6 | 6727 | echo $ECHO_N "checking for s/key support... $ECHO_C" >&6 |
6410 | if test "$cross_compiling" = yes; then | 6728 | if test "$cross_compiling" = yes; then |
6411 | { { echo "$as_me:6411: error: cannot run test program while cross compiling" >&5 | 6729 | { { echo "$as_me:6729: error: cannot run test program while cross compiling" >&5 |
6412 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} | 6730 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} |
6413 | { (exit 1); exit 1; }; } | 6731 | { (exit 1); exit 1; }; } |
6414 | else | 6732 | else |
6415 | cat >conftest.$ac_ext <<_ACEOF | 6733 | cat >conftest.$ac_ext <<_ACEOF |
6416 | #line 6416 "configure" | 6734 | #line 6734 "configure" |
6417 | #include "confdefs.h" | 6735 | #include "confdefs.h" |
6418 | 6736 | ||
6419 | #include <stdio.h> | 6737 | #include <stdio.h> |
@@ -6422,26 +6740,26 @@ int main() { char *ff = skey_keyinfo(""); ff=""; exit(0); } | |||
6422 | 6740 | ||
6423 | _ACEOF | 6741 | _ACEOF |
6424 | rm -f conftest$ac_exeext | 6742 | rm -f conftest$ac_exeext |
6425 | if { (eval echo "$as_me:6425: \"$ac_link\"") >&5 | 6743 | if { (eval echo "$as_me:6743: \"$ac_link\"") >&5 |
6426 | (eval $ac_link) 2>&5 | 6744 | (eval $ac_link) 2>&5 |
6427 | ac_status=$? | 6745 | ac_status=$? |
6428 | echo "$as_me:6428: \$? = $ac_status" >&5 | 6746 | echo "$as_me:6746: \$? = $ac_status" >&5 |
6429 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' | 6747 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' |
6430 | { (eval echo "$as_me:6430: \"$ac_try\"") >&5 | 6748 | { (eval echo "$as_me:6748: \"$ac_try\"") >&5 |
6431 | (eval $ac_try) 2>&5 | 6749 | (eval $ac_try) 2>&5 |
6432 | ac_status=$? | 6750 | ac_status=$? |
6433 | echo "$as_me:6433: \$? = $ac_status" >&5 | 6751 | echo "$as_me:6751: \$? = $ac_status" >&5 |
6434 | (exit $ac_status); }; }; then | 6752 | (exit $ac_status); }; }; then |
6435 | echo "$as_me:6435: result: yes" >&5 | 6753 | echo "$as_me:6753: result: yes" >&5 |
6436 | echo "${ECHO_T}yes" >&6 | 6754 | echo "${ECHO_T}yes" >&6 |
6437 | else | 6755 | else |
6438 | echo "$as_me: program exited with status $ac_status" >&5 | 6756 | echo "$as_me: program exited with status $ac_status" >&5 |
6439 | echo "$as_me: failed program was:" >&5 | 6757 | echo "$as_me: failed program was:" >&5 |
6440 | cat conftest.$ac_ext >&5 | 6758 | cat conftest.$ac_ext >&5 |
6441 | 6759 | ||
6442 | echo "$as_me:6442: result: no" >&5 | 6760 | echo "$as_me:6760: result: no" >&5 |
6443 | echo "${ECHO_T}no" >&6 | 6761 | echo "${ECHO_T}no" >&6 |
6444 | { { echo "$as_me:6444: error: ** Incomplete or missing s/key libraries." >&5 | 6762 | { { echo "$as_me:6762: error: ** Incomplete or missing s/key libraries." >&5 |
6445 | echo "$as_me: error: ** Incomplete or missing s/key libraries." >&2;} | 6763 | echo "$as_me: error: ** Incomplete or missing s/key libraries." >&2;} |
6446 | { (exit 1); exit 1; }; } | 6764 | { (exit 1); exit 1; }; } |
6447 | 6765 | ||
@@ -6485,10 +6803,10 @@ if test "${with_tcp_wrappers+set}" = set; then | |||
6485 | fi | 6803 | fi |
6486 | LIBWRAP="-lwrap" | 6804 | LIBWRAP="-lwrap" |
6487 | LIBS="$LIBWRAP $LIBS" | 6805 | LIBS="$LIBWRAP $LIBS" |
6488 | echo "$as_me:6488: checking for libwrap" >&5 | 6806 | echo "$as_me:6806: checking for libwrap" >&5 |
6489 | echo $ECHO_N "checking for libwrap... $ECHO_C" >&6 | 6807 | echo $ECHO_N "checking for libwrap... $ECHO_C" >&6 |
6490 | cat >conftest.$ac_ext <<_ACEOF | 6808 | cat >conftest.$ac_ext <<_ACEOF |
6491 | #line 6491 "configure" | 6809 | #line 6809 "configure" |
6492 | #include "confdefs.h" | 6810 | #include "confdefs.h" |
6493 | 6811 | ||
6494 | #include <tcpd.h> | 6812 | #include <tcpd.h> |
@@ -6503,19 +6821,19 @@ hosts_access(0); | |||
6503 | } | 6821 | } |
6504 | _ACEOF | 6822 | _ACEOF |
6505 | rm -f conftest.$ac_objext conftest$ac_exeext | 6823 | rm -f conftest.$ac_objext conftest$ac_exeext |
6506 | if { (eval echo "$as_me:6506: \"$ac_link\"") >&5 | 6824 | if { (eval echo "$as_me:6824: \"$ac_link\"") >&5 |
6507 | (eval $ac_link) 2>&5 | 6825 | (eval $ac_link) 2>&5 |
6508 | ac_status=$? | 6826 | ac_status=$? |
6509 | echo "$as_me:6509: \$? = $ac_status" >&5 | 6827 | echo "$as_me:6827: \$? = $ac_status" >&5 |
6510 | (exit $ac_status); } && | 6828 | (exit $ac_status); } && |
6511 | { ac_try='test -s conftest$ac_exeext' | 6829 | { ac_try='test -s conftest$ac_exeext' |
6512 | { (eval echo "$as_me:6512: \"$ac_try\"") >&5 | 6830 | { (eval echo "$as_me:6830: \"$ac_try\"") >&5 |
6513 | (eval $ac_try) 2>&5 | 6831 | (eval $ac_try) 2>&5 |
6514 | ac_status=$? | 6832 | ac_status=$? |
6515 | echo "$as_me:6515: \$? = $ac_status" >&5 | 6833 | echo "$as_me:6833: \$? = $ac_status" >&5 |
6516 | (exit $ac_status); }; }; then | 6834 | (exit $ac_status); }; }; then |
6517 | 6835 | ||
6518 | echo "$as_me:6518: result: yes" >&5 | 6836 | echo "$as_me:6836: result: yes" >&5 |
6519 | echo "${ECHO_T}yes" >&6 | 6837 | echo "${ECHO_T}yes" >&6 |
6520 | cat >>confdefs.h <<\EOF | 6838 | cat >>confdefs.h <<\EOF |
6521 | #define LIBWRAP 1 | 6839 | #define LIBWRAP 1 |
@@ -6527,7 +6845,7 @@ else | |||
6527 | echo "$as_me: failed program was:" >&5 | 6845 | echo "$as_me: failed program was:" >&5 |
6528 | cat conftest.$ac_ext >&5 | 6846 | cat conftest.$ac_ext >&5 |
6529 | 6847 | ||
6530 | { { echo "$as_me:6530: error: *** libwrap missing" >&5 | 6848 | { { echo "$as_me:6848: error: *** libwrap missing" >&5 |
6531 | echo "$as_me: error: *** libwrap missing" >&2;} | 6849 | echo "$as_me: error: *** libwrap missing" >&2;} |
6532 | { (exit 1); exit 1; }; } | 6850 | { (exit 1); exit 1; }; } |
6533 | 6851 | ||
@@ -6539,7 +6857,7 @@ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | |||
6539 | fi; | 6857 | fi; |
6540 | 6858 | ||
6541 | for ac_func in \ | 6859 | for ac_func in \ |
6542 | arc4random __b64_ntop b64_ntop __b64_pton b64_pton basename \ | 6860 | arc4random __b64_ntop b64_ntop __b64_pton b64_pton \ |
6543 | bcopy bindresvport_sa clock fchmod fchown freeaddrinfo futimes \ | 6861 | bcopy bindresvport_sa clock fchmod fchown freeaddrinfo futimes \ |
6544 | getaddrinfo getcwd getgrouplist getnameinfo getopt \ | 6862 | getaddrinfo getcwd getgrouplist getnameinfo getopt \ |
6545 | getpeereid _getpty getrlimit getttyent glob inet_aton \ | 6863 | getpeereid _getpty getrlimit getttyent glob inet_aton \ |
@@ -6547,20 +6865,20 @@ for ac_func in \ | |||
6547 | mkdtemp mmap ngetaddrinfo nsleep ogetaddrinfo openlog_r openpty \ | 6865 | mkdtemp mmap ngetaddrinfo nsleep ogetaddrinfo openlog_r openpty \ |
6548 | pstat readpassphrase realpath recvmsg rresvport_af sendmsg \ | 6866 | pstat readpassphrase realpath recvmsg rresvport_af sendmsg \ |
6549 | setdtablesize setegid setenv seteuid setgroups setlogin setpcred \ | 6867 | setdtablesize setegid setenv seteuid setgroups setlogin setpcred \ |
6550 | setproctitle setregid setresgid setresuid setreuid setrlimit \ | 6868 | setproctitle setregid setreuid setrlimit \ |
6551 | setsid setvbuf sigaction sigvec snprintf socketpair strerror \ | 6869 | setsid setvbuf sigaction sigvec snprintf socketpair strerror \ |
6552 | strlcat strlcpy strmode strnvis sysconf tcgetpgrp \ | 6870 | strlcat strlcpy strmode strnvis strtoul sysconf tcgetpgrp \ |
6553 | truncate utimes vhangup vsnprintf waitpid \ | 6871 | truncate updwtmpx utimes vhangup vsnprintf waitpid \ |
6554 | 6872 | ||
6555 | do | 6873 | do |
6556 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` | 6874 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` |
6557 | echo "$as_me:6557: checking for $ac_func" >&5 | 6875 | echo "$as_me:6875: checking for $ac_func" >&5 |
6558 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 | 6876 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 |
6559 | if eval "test \"\${$as_ac_var+set}\" = set"; then | 6877 | if eval "test \"\${$as_ac_var+set}\" = set"; then |
6560 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 6878 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
6561 | else | 6879 | else |
6562 | cat >conftest.$ac_ext <<_ACEOF | 6880 | cat >conftest.$ac_ext <<_ACEOF |
6563 | #line 6563 "configure" | 6881 | #line 6881 "configure" |
6564 | #include "confdefs.h" | 6882 | #include "confdefs.h" |
6565 | /* System header to define __stub macros and hopefully few prototypes, | 6883 | /* System header to define __stub macros and hopefully few prototypes, |
6566 | which can conflict with char $ac_func (); below. */ | 6884 | which can conflict with char $ac_func (); below. */ |
@@ -6591,16 +6909,16 @@ f = $ac_func; | |||
6591 | } | 6909 | } |
6592 | _ACEOF | 6910 | _ACEOF |
6593 | rm -f conftest.$ac_objext conftest$ac_exeext | 6911 | rm -f conftest.$ac_objext conftest$ac_exeext |
6594 | if { (eval echo "$as_me:6594: \"$ac_link\"") >&5 | 6912 | if { (eval echo "$as_me:6912: \"$ac_link\"") >&5 |
6595 | (eval $ac_link) 2>&5 | 6913 | (eval $ac_link) 2>&5 |
6596 | ac_status=$? | 6914 | ac_status=$? |
6597 | echo "$as_me:6597: \$? = $ac_status" >&5 | 6915 | echo "$as_me:6915: \$? = $ac_status" >&5 |
6598 | (exit $ac_status); } && | 6916 | (exit $ac_status); } && |
6599 | { ac_try='test -s conftest$ac_exeext' | 6917 | { ac_try='test -s conftest$ac_exeext' |
6600 | { (eval echo "$as_me:6600: \"$ac_try\"") >&5 | 6918 | { (eval echo "$as_me:6918: \"$ac_try\"") >&5 |
6601 | (eval $ac_try) 2>&5 | 6919 | (eval $ac_try) 2>&5 |
6602 | ac_status=$? | 6920 | ac_status=$? |
6603 | echo "$as_me:6603: \$? = $ac_status" >&5 | 6921 | echo "$as_me:6921: \$? = $ac_status" >&5 |
6604 | (exit $ac_status); }; }; then | 6922 | (exit $ac_status); }; }; then |
6605 | eval "$as_ac_var=yes" | 6923 | eval "$as_ac_var=yes" |
6606 | else | 6924 | else |
@@ -6610,7 +6928,7 @@ eval "$as_ac_var=no" | |||
6610 | fi | 6928 | fi |
6611 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 6929 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
6612 | fi | 6930 | fi |
6613 | echo "$as_me:6613: result: `eval echo '${'$as_ac_var'}'`" >&5 | 6931 | echo "$as_me:6931: result: `eval echo '${'$as_ac_var'}'`" >&5 |
6614 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 | 6932 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 |
6615 | if test `eval echo '${'$as_ac_var'}'` = yes; then | 6933 | if test `eval echo '${'$as_ac_var'}'` = yes; then |
6616 | cat >>confdefs.h <<EOF | 6934 | cat >>confdefs.h <<EOF |
@@ -6625,13 +6943,13 @@ done | |||
6625 | for ac_func in gai_strerror | 6943 | for ac_func in gai_strerror |
6626 | do | 6944 | do |
6627 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` | 6945 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` |
6628 | echo "$as_me:6628: checking for $ac_func" >&5 | 6946 | echo "$as_me:6946: checking for $ac_func" >&5 |
6629 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 | 6947 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 |
6630 | if eval "test \"\${$as_ac_var+set}\" = set"; then | 6948 | if eval "test \"\${$as_ac_var+set}\" = set"; then |
6631 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 6949 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
6632 | else | 6950 | else |
6633 | cat >conftest.$ac_ext <<_ACEOF | 6951 | cat >conftest.$ac_ext <<_ACEOF |
6634 | #line 6634 "configure" | 6952 | #line 6952 "configure" |
6635 | #include "confdefs.h" | 6953 | #include "confdefs.h" |
6636 | /* System header to define __stub macros and hopefully few prototypes, | 6954 | /* System header to define __stub macros and hopefully few prototypes, |
6637 | which can conflict with char $ac_func (); below. */ | 6955 | which can conflict with char $ac_func (); below. */ |
@@ -6662,16 +6980,16 @@ f = $ac_func; | |||
6662 | } | 6980 | } |
6663 | _ACEOF | 6981 | _ACEOF |
6664 | rm -f conftest.$ac_objext conftest$ac_exeext | 6982 | rm -f conftest.$ac_objext conftest$ac_exeext |
6665 | if { (eval echo "$as_me:6665: \"$ac_link\"") >&5 | 6983 | if { (eval echo "$as_me:6983: \"$ac_link\"") >&5 |
6666 | (eval $ac_link) 2>&5 | 6984 | (eval $ac_link) 2>&5 |
6667 | ac_status=$? | 6985 | ac_status=$? |
6668 | echo "$as_me:6668: \$? = $ac_status" >&5 | 6986 | echo "$as_me:6986: \$? = $ac_status" >&5 |
6669 | (exit $ac_status); } && | 6987 | (exit $ac_status); } && |
6670 | { ac_try='test -s conftest$ac_exeext' | 6988 | { ac_try='test -s conftest$ac_exeext' |
6671 | { (eval echo "$as_me:6671: \"$ac_try\"") >&5 | 6989 | { (eval echo "$as_me:6989: \"$ac_try\"") >&5 |
6672 | (eval $ac_try) 2>&5 | 6990 | (eval $ac_try) 2>&5 |
6673 | ac_status=$? | 6991 | ac_status=$? |
6674 | echo "$as_me:6674: \$? = $ac_status" >&5 | 6992 | echo "$as_me:6992: \$? = $ac_status" >&5 |
6675 | (exit $ac_status); }; }; then | 6993 | (exit $ac_status); }; }; then |
6676 | eval "$as_ac_var=yes" | 6994 | eval "$as_ac_var=yes" |
6677 | else | 6995 | else |
@@ -6681,7 +6999,7 @@ eval "$as_ac_var=no" | |||
6681 | fi | 6999 | fi |
6682 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 7000 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
6683 | fi | 7001 | fi |
6684 | echo "$as_me:6684: result: `eval echo '${'$as_ac_var'}'`" >&5 | 7002 | echo "$as_me:7002: result: `eval echo '${'$as_ac_var'}'`" >&5 |
6685 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 | 7003 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 |
6686 | if test `eval echo '${'$as_ac_var'}'` = yes; then | 7004 | if test `eval echo '${'$as_ac_var'}'` = yes; then |
6687 | cat >>confdefs.h <<EOF | 7005 | cat >>confdefs.h <<EOF |
@@ -6693,7 +7011,7 @@ EOF | |||
6693 | EOF | 7011 | EOF |
6694 | 7012 | ||
6695 | cat >conftest.$ac_ext <<_ACEOF | 7013 | cat >conftest.$ac_ext <<_ACEOF |
6696 | #line 6696 "configure" | 7014 | #line 7014 "configure" |
6697 | #include "confdefs.h" | 7015 | #include "confdefs.h" |
6698 | 7016 | ||
6699 | #include <sys/types.h> | 7017 | #include <sys/types.h> |
@@ -6713,16 +7031,16 @@ str = gai_strerror(0); | |||
6713 | } | 7031 | } |
6714 | _ACEOF | 7032 | _ACEOF |
6715 | rm -f conftest.$ac_objext | 7033 | rm -f conftest.$ac_objext |
6716 | if { (eval echo "$as_me:6716: \"$ac_compile\"") >&5 | 7034 | if { (eval echo "$as_me:7034: \"$ac_compile\"") >&5 |
6717 | (eval $ac_compile) 2>&5 | 7035 | (eval $ac_compile) 2>&5 |
6718 | ac_status=$? | 7036 | ac_status=$? |
6719 | echo "$as_me:6719: \$? = $ac_status" >&5 | 7037 | echo "$as_me:7037: \$? = $ac_status" >&5 |
6720 | (exit $ac_status); } && | 7038 | (exit $ac_status); } && |
6721 | { ac_try='test -s conftest.$ac_objext' | 7039 | { ac_try='test -s conftest.$ac_objext' |
6722 | { (eval echo "$as_me:6722: \"$ac_try\"") >&5 | 7040 | { (eval echo "$as_me:7040: \"$ac_try\"") >&5 |
6723 | (eval $ac_try) 2>&5 | 7041 | (eval $ac_try) 2>&5 |
6724 | ac_status=$? | 7042 | ac_status=$? |
6725 | echo "$as_me:6725: \$? = $ac_status" >&5 | 7043 | echo "$as_me:7043: \$? = $ac_status" >&5 |
6726 | (exit $ac_status); }; }; then | 7044 | (exit $ac_status); }; }; then |
6727 | 7045 | ||
6728 | cat >>confdefs.h <<\EOF | 7046 | cat >>confdefs.h <<\EOF |
@@ -6737,7 +7055,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext | |||
6737 | fi | 7055 | fi |
6738 | done | 7056 | done |
6739 | 7057 | ||
6740 | echo "$as_me:6740: checking for library containing nanosleep" >&5 | 7058 | echo "$as_me:7058: checking for library containing nanosleep" >&5 |
6741 | echo $ECHO_N "checking for library containing nanosleep... $ECHO_C" >&6 | 7059 | echo $ECHO_N "checking for library containing nanosleep... $ECHO_C" >&6 |
6742 | if test "${ac_cv_search_nanosleep+set}" = set; then | 7060 | if test "${ac_cv_search_nanosleep+set}" = set; then |
6743 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 7061 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -6745,7 +7063,7 @@ else | |||
6745 | ac_func_search_save_LIBS=$LIBS | 7063 | ac_func_search_save_LIBS=$LIBS |
6746 | ac_cv_search_nanosleep=no | 7064 | ac_cv_search_nanosleep=no |
6747 | cat >conftest.$ac_ext <<_ACEOF | 7065 | cat >conftest.$ac_ext <<_ACEOF |
6748 | #line 6748 "configure" | 7066 | #line 7066 "configure" |
6749 | #include "confdefs.h" | 7067 | #include "confdefs.h" |
6750 | 7068 | ||
6751 | /* Override any gcc2 internal prototype to avoid an error. */ | 7069 | /* Override any gcc2 internal prototype to avoid an error. */ |
@@ -6764,16 +7082,16 @@ nanosleep (); | |||
6764 | } | 7082 | } |
6765 | _ACEOF | 7083 | _ACEOF |
6766 | rm -f conftest.$ac_objext conftest$ac_exeext | 7084 | rm -f conftest.$ac_objext conftest$ac_exeext |
6767 | if { (eval echo "$as_me:6767: \"$ac_link\"") >&5 | 7085 | if { (eval echo "$as_me:7085: \"$ac_link\"") >&5 |
6768 | (eval $ac_link) 2>&5 | 7086 | (eval $ac_link) 2>&5 |
6769 | ac_status=$? | 7087 | ac_status=$? |
6770 | echo "$as_me:6770: \$? = $ac_status" >&5 | 7088 | echo "$as_me:7088: \$? = $ac_status" >&5 |
6771 | (exit $ac_status); } && | 7089 | (exit $ac_status); } && |
6772 | { ac_try='test -s conftest$ac_exeext' | 7090 | { ac_try='test -s conftest$ac_exeext' |
6773 | { (eval echo "$as_me:6773: \"$ac_try\"") >&5 | 7091 | { (eval echo "$as_me:7091: \"$ac_try\"") >&5 |
6774 | (eval $ac_try) 2>&5 | 7092 | (eval $ac_try) 2>&5 |
6775 | ac_status=$? | 7093 | ac_status=$? |
6776 | echo "$as_me:6776: \$? = $ac_status" >&5 | 7094 | echo "$as_me:7094: \$? = $ac_status" >&5 |
6777 | (exit $ac_status); }; }; then | 7095 | (exit $ac_status); }; }; then |
6778 | ac_cv_search_nanosleep="none required" | 7096 | ac_cv_search_nanosleep="none required" |
6779 | else | 7097 | else |
@@ -6785,7 +7103,7 @@ if test "$ac_cv_search_nanosleep" = no; then | |||
6785 | for ac_lib in rt posix4; do | 7103 | for ac_lib in rt posix4; do |
6786 | LIBS="-l$ac_lib $ac_func_search_save_LIBS" | 7104 | LIBS="-l$ac_lib $ac_func_search_save_LIBS" |
6787 | cat >conftest.$ac_ext <<_ACEOF | 7105 | cat >conftest.$ac_ext <<_ACEOF |
6788 | #line 6788 "configure" | 7106 | #line 7106 "configure" |
6789 | #include "confdefs.h" | 7107 | #include "confdefs.h" |
6790 | 7108 | ||
6791 | /* Override any gcc2 internal prototype to avoid an error. */ | 7109 | /* Override any gcc2 internal prototype to avoid an error. */ |
@@ -6804,16 +7122,16 @@ nanosleep (); | |||
6804 | } | 7122 | } |
6805 | _ACEOF | 7123 | _ACEOF |
6806 | rm -f conftest.$ac_objext conftest$ac_exeext | 7124 | rm -f conftest.$ac_objext conftest$ac_exeext |
6807 | if { (eval echo "$as_me:6807: \"$ac_link\"") >&5 | 7125 | if { (eval echo "$as_me:7125: \"$ac_link\"") >&5 |
6808 | (eval $ac_link) 2>&5 | 7126 | (eval $ac_link) 2>&5 |
6809 | ac_status=$? | 7127 | ac_status=$? |
6810 | echo "$as_me:6810: \$? = $ac_status" >&5 | 7128 | echo "$as_me:7128: \$? = $ac_status" >&5 |
6811 | (exit $ac_status); } && | 7129 | (exit $ac_status); } && |
6812 | { ac_try='test -s conftest$ac_exeext' | 7130 | { ac_try='test -s conftest$ac_exeext' |
6813 | { (eval echo "$as_me:6813: \"$ac_try\"") >&5 | 7131 | { (eval echo "$as_me:7131: \"$ac_try\"") >&5 |
6814 | (eval $ac_try) 2>&5 | 7132 | (eval $ac_try) 2>&5 |
6815 | ac_status=$? | 7133 | ac_status=$? |
6816 | echo "$as_me:6816: \$? = $ac_status" >&5 | 7134 | echo "$as_me:7134: \$? = $ac_status" >&5 |
6817 | (exit $ac_status); }; }; then | 7135 | (exit $ac_status); }; }; then |
6818 | ac_cv_search_nanosleep="-l$ac_lib" | 7136 | ac_cv_search_nanosleep="-l$ac_lib" |
6819 | break | 7137 | break |
@@ -6826,7 +7144,7 @@ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | |||
6826 | fi | 7144 | fi |
6827 | LIBS=$ac_func_search_save_LIBS | 7145 | LIBS=$ac_func_search_save_LIBS |
6828 | fi | 7146 | fi |
6829 | echo "$as_me:6829: result: $ac_cv_search_nanosleep" >&5 | 7147 | echo "$as_me:7147: result: $ac_cv_search_nanosleep" >&5 |
6830 | echo "${ECHO_T}$ac_cv_search_nanosleep" >&6 | 7148 | echo "${ECHO_T}$ac_cv_search_nanosleep" >&6 |
6831 | if test "$ac_cv_search_nanosleep" != no; then | 7149 | if test "$ac_cv_search_nanosleep" != no; then |
6832 | test "$ac_cv_search_nanosleep" = "none required" || LIBS="$ac_cv_search_nanosleep $LIBS" | 7150 | test "$ac_cv_search_nanosleep" = "none required" || LIBS="$ac_cv_search_nanosleep $LIBS" |
@@ -6836,13 +7154,13 @@ EOF | |||
6836 | 7154 | ||
6837 | fi | 7155 | fi |
6838 | 7156 | ||
6839 | echo "$as_me:6839: checking for ANSI C header files" >&5 | 7157 | echo "$as_me:7157: checking for ANSI C header files" >&5 |
6840 | echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 | 7158 | echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 |
6841 | if test "${ac_cv_header_stdc+set}" = set; then | 7159 | if test "${ac_cv_header_stdc+set}" = set; then |
6842 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 7160 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
6843 | else | 7161 | else |
6844 | cat >conftest.$ac_ext <<_ACEOF | 7162 | cat >conftest.$ac_ext <<_ACEOF |
6845 | #line 6845 "configure" | 7163 | #line 7163 "configure" |
6846 | #include "confdefs.h" | 7164 | #include "confdefs.h" |
6847 | #include <stdlib.h> | 7165 | #include <stdlib.h> |
6848 | #include <stdarg.h> | 7166 | #include <stdarg.h> |
@@ -6850,13 +7168,13 @@ else | |||
6850 | #include <float.h> | 7168 | #include <float.h> |
6851 | 7169 | ||
6852 | _ACEOF | 7170 | _ACEOF |
6853 | if { (eval echo "$as_me:6853: \"$ac_cpp conftest.$ac_ext\"") >&5 | 7171 | if { (eval echo "$as_me:7171: \"$ac_cpp conftest.$ac_ext\"") >&5 |
6854 | (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 | 7172 | (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 |
6855 | ac_status=$? | 7173 | ac_status=$? |
6856 | egrep -v '^ *\+' conftest.er1 >conftest.err | 7174 | egrep -v '^ *\+' conftest.er1 >conftest.err |
6857 | rm -f conftest.er1 | 7175 | rm -f conftest.er1 |
6858 | cat conftest.err >&5 | 7176 | cat conftest.err >&5 |
6859 | echo "$as_me:6859: \$? = $ac_status" >&5 | 7177 | echo "$as_me:7177: \$? = $ac_status" >&5 |
6860 | (exit $ac_status); } >/dev/null; then | 7178 | (exit $ac_status); } >/dev/null; then |
6861 | if test -s conftest.err; then | 7179 | if test -s conftest.err; then |
6862 | ac_cpp_err=$ac_c_preproc_warn_flag | 7180 | ac_cpp_err=$ac_c_preproc_warn_flag |
@@ -6878,7 +7196,7 @@ rm -f conftest.err conftest.$ac_ext | |||
6878 | if test $ac_cv_header_stdc = yes; then | 7196 | if test $ac_cv_header_stdc = yes; then |
6879 | # SunOS 4.x string.h does not declare mem*, contrary to ANSI. | 7197 | # SunOS 4.x string.h does not declare mem*, contrary to ANSI. |
6880 | cat >conftest.$ac_ext <<_ACEOF | 7198 | cat >conftest.$ac_ext <<_ACEOF |
6881 | #line 6881 "configure" | 7199 | #line 7199 "configure" |
6882 | #include "confdefs.h" | 7200 | #include "confdefs.h" |
6883 | #include <string.h> | 7201 | #include <string.h> |
6884 | 7202 | ||
@@ -6896,7 +7214,7 @@ fi | |||
6896 | if test $ac_cv_header_stdc = yes; then | 7214 | if test $ac_cv_header_stdc = yes; then |
6897 | # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. | 7215 | # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. |
6898 | cat >conftest.$ac_ext <<_ACEOF | 7216 | cat >conftest.$ac_ext <<_ACEOF |
6899 | #line 6899 "configure" | 7217 | #line 7217 "configure" |
6900 | #include "confdefs.h" | 7218 | #include "confdefs.h" |
6901 | #include <stdlib.h> | 7219 | #include <stdlib.h> |
6902 | 7220 | ||
@@ -6917,7 +7235,7 @@ if test $ac_cv_header_stdc = yes; then | |||
6917 | : | 7235 | : |
6918 | else | 7236 | else |
6919 | cat >conftest.$ac_ext <<_ACEOF | 7237 | cat >conftest.$ac_ext <<_ACEOF |
6920 | #line 6920 "configure" | 7238 | #line 7238 "configure" |
6921 | #include "confdefs.h" | 7239 | #include "confdefs.h" |
6922 | #include <ctype.h> | 7240 | #include <ctype.h> |
6923 | #if ((' ' & 0x0FF) == 0x020) | 7241 | #if ((' ' & 0x0FF) == 0x020) |
@@ -6943,15 +7261,15 @@ main () | |||
6943 | } | 7261 | } |
6944 | _ACEOF | 7262 | _ACEOF |
6945 | rm -f conftest$ac_exeext | 7263 | rm -f conftest$ac_exeext |
6946 | if { (eval echo "$as_me:6946: \"$ac_link\"") >&5 | 7264 | if { (eval echo "$as_me:7264: \"$ac_link\"") >&5 |
6947 | (eval $ac_link) 2>&5 | 7265 | (eval $ac_link) 2>&5 |
6948 | ac_status=$? | 7266 | ac_status=$? |
6949 | echo "$as_me:6949: \$? = $ac_status" >&5 | 7267 | echo "$as_me:7267: \$? = $ac_status" >&5 |
6950 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' | 7268 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' |
6951 | { (eval echo "$as_me:6951: \"$ac_try\"") >&5 | 7269 | { (eval echo "$as_me:7269: \"$ac_try\"") >&5 |
6952 | (eval $ac_try) 2>&5 | 7270 | (eval $ac_try) 2>&5 |
6953 | ac_status=$? | 7271 | ac_status=$? |
6954 | echo "$as_me:6954: \$? = $ac_status" >&5 | 7272 | echo "$as_me:7272: \$? = $ac_status" >&5 |
6955 | (exit $ac_status); }; }; then | 7273 | (exit $ac_status); }; }; then |
6956 | : | 7274 | : |
6957 | else | 7275 | else |
@@ -6964,7 +7282,7 @@ rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext | |||
6964 | fi | 7282 | fi |
6965 | fi | 7283 | fi |
6966 | fi | 7284 | fi |
6967 | echo "$as_me:6967: result: $ac_cv_header_stdc" >&5 | 7285 | echo "$as_me:7285: result: $ac_cv_header_stdc" >&5 |
6968 | echo "${ECHO_T}$ac_cv_header_stdc" >&6 | 7286 | echo "${ECHO_T}$ac_cv_header_stdc" >&6 |
6969 | if test $ac_cv_header_stdc = yes; then | 7287 | if test $ac_cv_header_stdc = yes; then |
6970 | 7288 | ||
@@ -6980,28 +7298,28 @@ for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ | |||
6980 | inttypes.h stdint.h unistd.h | 7298 | inttypes.h stdint.h unistd.h |
6981 | do | 7299 | do |
6982 | as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` | 7300 | as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` |
6983 | echo "$as_me:6983: checking for $ac_header" >&5 | 7301 | echo "$as_me:7301: checking for $ac_header" >&5 |
6984 | echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 | 7302 | echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 |
6985 | if eval "test \"\${$as_ac_Header+set}\" = set"; then | 7303 | if eval "test \"\${$as_ac_Header+set}\" = set"; then |
6986 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 7304 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
6987 | else | 7305 | else |
6988 | cat >conftest.$ac_ext <<_ACEOF | 7306 | cat >conftest.$ac_ext <<_ACEOF |
6989 | #line 6989 "configure" | 7307 | #line 7307 "configure" |
6990 | #include "confdefs.h" | 7308 | #include "confdefs.h" |
6991 | $ac_includes_default | 7309 | $ac_includes_default |
6992 | #include <$ac_header> | 7310 | #include <$ac_header> |
6993 | _ACEOF | 7311 | _ACEOF |
6994 | rm -f conftest.$ac_objext | 7312 | rm -f conftest.$ac_objext |
6995 | if { (eval echo "$as_me:6995: \"$ac_compile\"") >&5 | 7313 | if { (eval echo "$as_me:7313: \"$ac_compile\"") >&5 |
6996 | (eval $ac_compile) 2>&5 | 7314 | (eval $ac_compile) 2>&5 |
6997 | ac_status=$? | 7315 | ac_status=$? |
6998 | echo "$as_me:6998: \$? = $ac_status" >&5 | 7316 | echo "$as_me:7316: \$? = $ac_status" >&5 |
6999 | (exit $ac_status); } && | 7317 | (exit $ac_status); } && |
7000 | { ac_try='test -s conftest.$ac_objext' | 7318 | { ac_try='test -s conftest.$ac_objext' |
7001 | { (eval echo "$as_me:7001: \"$ac_try\"") >&5 | 7319 | { (eval echo "$as_me:7319: \"$ac_try\"") >&5 |
7002 | (eval $ac_try) 2>&5 | 7320 | (eval $ac_try) 2>&5 |
7003 | ac_status=$? | 7321 | ac_status=$? |
7004 | echo "$as_me:7004: \$? = $ac_status" >&5 | 7322 | echo "$as_me:7322: \$? = $ac_status" >&5 |
7005 | (exit $ac_status); }; }; then | 7323 | (exit $ac_status); }; }; then |
7006 | eval "$as_ac_Header=yes" | 7324 | eval "$as_ac_Header=yes" |
7007 | else | 7325 | else |
@@ -7011,7 +7329,7 @@ eval "$as_ac_Header=no" | |||
7011 | fi | 7329 | fi |
7012 | rm -f conftest.$ac_objext conftest.$ac_ext | 7330 | rm -f conftest.$ac_objext conftest.$ac_ext |
7013 | fi | 7331 | fi |
7014 | echo "$as_me:7014: result: `eval echo '${'$as_ac_Header'}'`" >&5 | 7332 | echo "$as_me:7332: result: `eval echo '${'$as_ac_Header'}'`" >&5 |
7015 | echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 | 7333 | echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 |
7016 | if test `eval echo '${'$as_ac_Header'}'` = yes; then | 7334 | if test `eval echo '${'$as_ac_Header'}'` = yes; then |
7017 | cat >>confdefs.h <<EOF | 7335 | cat >>confdefs.h <<EOF |
@@ -7021,13 +7339,13 @@ EOF | |||
7021 | fi | 7339 | fi |
7022 | done | 7340 | done |
7023 | 7341 | ||
7024 | echo "$as_me:7024: checking whether strsep is declared" >&5 | 7342 | echo "$as_me:7342: checking whether strsep is declared" >&5 |
7025 | echo $ECHO_N "checking whether strsep is declared... $ECHO_C" >&6 | 7343 | echo $ECHO_N "checking whether strsep is declared... $ECHO_C" >&6 |
7026 | if test "${ac_cv_have_decl_strsep+set}" = set; then | 7344 | if test "${ac_cv_have_decl_strsep+set}" = set; then |
7027 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 7345 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
7028 | else | 7346 | else |
7029 | cat >conftest.$ac_ext <<_ACEOF | 7347 | cat >conftest.$ac_ext <<_ACEOF |
7030 | #line 7030 "configure" | 7348 | #line 7348 "configure" |
7031 | #include "confdefs.h" | 7349 | #include "confdefs.h" |
7032 | $ac_includes_default | 7350 | $ac_includes_default |
7033 | int | 7351 | int |
@@ -7042,16 +7360,16 @@ main () | |||
7042 | } | 7360 | } |
7043 | _ACEOF | 7361 | _ACEOF |
7044 | rm -f conftest.$ac_objext | 7362 | rm -f conftest.$ac_objext |
7045 | if { (eval echo "$as_me:7045: \"$ac_compile\"") >&5 | 7363 | if { (eval echo "$as_me:7363: \"$ac_compile\"") >&5 |
7046 | (eval $ac_compile) 2>&5 | 7364 | (eval $ac_compile) 2>&5 |
7047 | ac_status=$? | 7365 | ac_status=$? |
7048 | echo "$as_me:7048: \$? = $ac_status" >&5 | 7366 | echo "$as_me:7366: \$? = $ac_status" >&5 |
7049 | (exit $ac_status); } && | 7367 | (exit $ac_status); } && |
7050 | { ac_try='test -s conftest.$ac_objext' | 7368 | { ac_try='test -s conftest.$ac_objext' |
7051 | { (eval echo "$as_me:7051: \"$ac_try\"") >&5 | 7369 | { (eval echo "$as_me:7369: \"$ac_try\"") >&5 |
7052 | (eval $ac_try) 2>&5 | 7370 | (eval $ac_try) 2>&5 |
7053 | ac_status=$? | 7371 | ac_status=$? |
7054 | echo "$as_me:7054: \$? = $ac_status" >&5 | 7372 | echo "$as_me:7372: \$? = $ac_status" >&5 |
7055 | (exit $ac_status); }; }; then | 7373 | (exit $ac_status); }; }; then |
7056 | ac_cv_have_decl_strsep=yes | 7374 | ac_cv_have_decl_strsep=yes |
7057 | else | 7375 | else |
@@ -7061,20 +7379,20 @@ ac_cv_have_decl_strsep=no | |||
7061 | fi | 7379 | fi |
7062 | rm -f conftest.$ac_objext conftest.$ac_ext | 7380 | rm -f conftest.$ac_objext conftest.$ac_ext |
7063 | fi | 7381 | fi |
7064 | echo "$as_me:7064: result: $ac_cv_have_decl_strsep" >&5 | 7382 | echo "$as_me:7382: result: $ac_cv_have_decl_strsep" >&5 |
7065 | echo "${ECHO_T}$ac_cv_have_decl_strsep" >&6 | 7383 | echo "${ECHO_T}$ac_cv_have_decl_strsep" >&6 |
7066 | if test $ac_cv_have_decl_strsep = yes; then | 7384 | if test $ac_cv_have_decl_strsep = yes; then |
7067 | 7385 | ||
7068 | for ac_func in strsep | 7386 | for ac_func in strsep |
7069 | do | 7387 | do |
7070 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` | 7388 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` |
7071 | echo "$as_me:7071: checking for $ac_func" >&5 | 7389 | echo "$as_me:7389: checking for $ac_func" >&5 |
7072 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 | 7390 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 |
7073 | if eval "test \"\${$as_ac_var+set}\" = set"; then | 7391 | if eval "test \"\${$as_ac_var+set}\" = set"; then |
7074 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 7392 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
7075 | else | 7393 | else |
7076 | cat >conftest.$ac_ext <<_ACEOF | 7394 | cat >conftest.$ac_ext <<_ACEOF |
7077 | #line 7077 "configure" | 7395 | #line 7395 "configure" |
7078 | #include "confdefs.h" | 7396 | #include "confdefs.h" |
7079 | /* System header to define __stub macros and hopefully few prototypes, | 7397 | /* System header to define __stub macros and hopefully few prototypes, |
7080 | which can conflict with char $ac_func (); below. */ | 7398 | which can conflict with char $ac_func (); below. */ |
@@ -7105,16 +7423,16 @@ f = $ac_func; | |||
7105 | } | 7423 | } |
7106 | _ACEOF | 7424 | _ACEOF |
7107 | rm -f conftest.$ac_objext conftest$ac_exeext | 7425 | rm -f conftest.$ac_objext conftest$ac_exeext |
7108 | if { (eval echo "$as_me:7108: \"$ac_link\"") >&5 | 7426 | if { (eval echo "$as_me:7426: \"$ac_link\"") >&5 |
7109 | (eval $ac_link) 2>&5 | 7427 | (eval $ac_link) 2>&5 |
7110 | ac_status=$? | 7428 | ac_status=$? |
7111 | echo "$as_me:7111: \$? = $ac_status" >&5 | 7429 | echo "$as_me:7429: \$? = $ac_status" >&5 |
7112 | (exit $ac_status); } && | 7430 | (exit $ac_status); } && |
7113 | { ac_try='test -s conftest$ac_exeext' | 7431 | { ac_try='test -s conftest$ac_exeext' |
7114 | { (eval echo "$as_me:7114: \"$ac_try\"") >&5 | 7432 | { (eval echo "$as_me:7432: \"$ac_try\"") >&5 |
7115 | (eval $ac_try) 2>&5 | 7433 | (eval $ac_try) 2>&5 |
7116 | ac_status=$? | 7434 | ac_status=$? |
7117 | echo "$as_me:7117: \$? = $ac_status" >&5 | 7435 | echo "$as_me:7435: \$? = $ac_status" >&5 |
7118 | (exit $ac_status); }; }; then | 7436 | (exit $ac_status); }; }; then |
7119 | eval "$as_ac_var=yes" | 7437 | eval "$as_ac_var=yes" |
7120 | else | 7438 | else |
@@ -7124,7 +7442,7 @@ eval "$as_ac_var=no" | |||
7124 | fi | 7442 | fi |
7125 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 7443 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
7126 | fi | 7444 | fi |
7127 | echo "$as_me:7127: result: `eval echo '${'$as_ac_var'}'`" >&5 | 7445 | echo "$as_me:7445: result: `eval echo '${'$as_ac_var'}'`" >&5 |
7128 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 | 7446 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 |
7129 | if test `eval echo '${'$as_ac_var'}'` = yes; then | 7447 | if test `eval echo '${'$as_ac_var'}'` = yes; then |
7130 | cat >>confdefs.h <<EOF | 7448 | cat >>confdefs.h <<EOF |
@@ -7136,13 +7454,13 @@ done | |||
7136 | 7454 | ||
7137 | fi | 7455 | fi |
7138 | 7456 | ||
7139 | echo "$as_me:7139: checking whether getrusage is declared" >&5 | 7457 | echo "$as_me:7457: checking whether getrusage is declared" >&5 |
7140 | echo $ECHO_N "checking whether getrusage is declared... $ECHO_C" >&6 | 7458 | echo $ECHO_N "checking whether getrusage is declared... $ECHO_C" >&6 |
7141 | if test "${ac_cv_have_decl_getrusage+set}" = set; then | 7459 | if test "${ac_cv_have_decl_getrusage+set}" = set; then |
7142 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 7460 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
7143 | else | 7461 | else |
7144 | cat >conftest.$ac_ext <<_ACEOF | 7462 | cat >conftest.$ac_ext <<_ACEOF |
7145 | #line 7145 "configure" | 7463 | #line 7463 "configure" |
7146 | #include "confdefs.h" | 7464 | #include "confdefs.h" |
7147 | $ac_includes_default | 7465 | $ac_includes_default |
7148 | int | 7466 | int |
@@ -7157,16 +7475,16 @@ main () | |||
7157 | } | 7475 | } |
7158 | _ACEOF | 7476 | _ACEOF |
7159 | rm -f conftest.$ac_objext | 7477 | rm -f conftest.$ac_objext |
7160 | if { (eval echo "$as_me:7160: \"$ac_compile\"") >&5 | 7478 | if { (eval echo "$as_me:7478: \"$ac_compile\"") >&5 |
7161 | (eval $ac_compile) 2>&5 | 7479 | (eval $ac_compile) 2>&5 |
7162 | ac_status=$? | 7480 | ac_status=$? |
7163 | echo "$as_me:7163: \$? = $ac_status" >&5 | 7481 | echo "$as_me:7481: \$? = $ac_status" >&5 |
7164 | (exit $ac_status); } && | 7482 | (exit $ac_status); } && |
7165 | { ac_try='test -s conftest.$ac_objext' | 7483 | { ac_try='test -s conftest.$ac_objext' |
7166 | { (eval echo "$as_me:7166: \"$ac_try\"") >&5 | 7484 | { (eval echo "$as_me:7484: \"$ac_try\"") >&5 |
7167 | (eval $ac_try) 2>&5 | 7485 | (eval $ac_try) 2>&5 |
7168 | ac_status=$? | 7486 | ac_status=$? |
7169 | echo "$as_me:7169: \$? = $ac_status" >&5 | 7487 | echo "$as_me:7487: \$? = $ac_status" >&5 |
7170 | (exit $ac_status); }; }; then | 7488 | (exit $ac_status); }; }; then |
7171 | ac_cv_have_decl_getrusage=yes | 7489 | ac_cv_have_decl_getrusage=yes |
7172 | else | 7490 | else |
@@ -7176,20 +7494,20 @@ ac_cv_have_decl_getrusage=no | |||
7176 | fi | 7494 | fi |
7177 | rm -f conftest.$ac_objext conftest.$ac_ext | 7495 | rm -f conftest.$ac_objext conftest.$ac_ext |
7178 | fi | 7496 | fi |
7179 | echo "$as_me:7179: result: $ac_cv_have_decl_getrusage" >&5 | 7497 | echo "$as_me:7497: result: $ac_cv_have_decl_getrusage" >&5 |
7180 | echo "${ECHO_T}$ac_cv_have_decl_getrusage" >&6 | 7498 | echo "${ECHO_T}$ac_cv_have_decl_getrusage" >&6 |
7181 | if test $ac_cv_have_decl_getrusage = yes; then | 7499 | if test $ac_cv_have_decl_getrusage = yes; then |
7182 | 7500 | ||
7183 | for ac_func in getrusage | 7501 | for ac_func in getrusage |
7184 | do | 7502 | do |
7185 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` | 7503 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` |
7186 | echo "$as_me:7186: checking for $ac_func" >&5 | 7504 | echo "$as_me:7504: checking for $ac_func" >&5 |
7187 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 | 7505 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 |
7188 | if eval "test \"\${$as_ac_var+set}\" = set"; then | 7506 | if eval "test \"\${$as_ac_var+set}\" = set"; then |
7189 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 7507 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
7190 | else | 7508 | else |
7191 | cat >conftest.$ac_ext <<_ACEOF | 7509 | cat >conftest.$ac_ext <<_ACEOF |
7192 | #line 7192 "configure" | 7510 | #line 7510 "configure" |
7193 | #include "confdefs.h" | 7511 | #include "confdefs.h" |
7194 | /* System header to define __stub macros and hopefully few prototypes, | 7512 | /* System header to define __stub macros and hopefully few prototypes, |
7195 | which can conflict with char $ac_func (); below. */ | 7513 | which can conflict with char $ac_func (); below. */ |
@@ -7220,16 +7538,16 @@ f = $ac_func; | |||
7220 | } | 7538 | } |
7221 | _ACEOF | 7539 | _ACEOF |
7222 | rm -f conftest.$ac_objext conftest$ac_exeext | 7540 | rm -f conftest.$ac_objext conftest$ac_exeext |
7223 | if { (eval echo "$as_me:7223: \"$ac_link\"") >&5 | 7541 | if { (eval echo "$as_me:7541: \"$ac_link\"") >&5 |
7224 | (eval $ac_link) 2>&5 | 7542 | (eval $ac_link) 2>&5 |
7225 | ac_status=$? | 7543 | ac_status=$? |
7226 | echo "$as_me:7226: \$? = $ac_status" >&5 | 7544 | echo "$as_me:7544: \$? = $ac_status" >&5 |
7227 | (exit $ac_status); } && | 7545 | (exit $ac_status); } && |
7228 | { ac_try='test -s conftest$ac_exeext' | 7546 | { ac_try='test -s conftest$ac_exeext' |
7229 | { (eval echo "$as_me:7229: \"$ac_try\"") >&5 | 7547 | { (eval echo "$as_me:7547: \"$ac_try\"") >&5 |
7230 | (eval $ac_try) 2>&5 | 7548 | (eval $ac_try) 2>&5 |
7231 | ac_status=$? | 7549 | ac_status=$? |
7232 | echo "$as_me:7232: \$? = $ac_status" >&5 | 7550 | echo "$as_me:7550: \$? = $ac_status" >&5 |
7233 | (exit $ac_status); }; }; then | 7551 | (exit $ac_status); }; }; then |
7234 | eval "$as_ac_var=yes" | 7552 | eval "$as_ac_var=yes" |
7235 | else | 7553 | else |
@@ -7239,7 +7557,7 @@ eval "$as_ac_var=no" | |||
7239 | fi | 7557 | fi |
7240 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 7558 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
7241 | fi | 7559 | fi |
7242 | echo "$as_me:7242: result: `eval echo '${'$as_ac_var'}'`" >&5 | 7560 | echo "$as_me:7560: result: `eval echo '${'$as_ac_var'}'`" >&5 |
7243 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 | 7561 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 |
7244 | if test `eval echo '${'$as_ac_var'}'` = yes; then | 7562 | if test `eval echo '${'$as_ac_var'}'` = yes; then |
7245 | cat >>confdefs.h <<EOF | 7563 | cat >>confdefs.h <<EOF |
@@ -7251,13 +7569,13 @@ done | |||
7251 | 7569 | ||
7252 | fi | 7570 | fi |
7253 | 7571 | ||
7254 | echo "$as_me:7254: checking whether tcsendbreak is declared" >&5 | 7572 | echo "$as_me:7572: checking whether tcsendbreak is declared" >&5 |
7255 | echo $ECHO_N "checking whether tcsendbreak is declared... $ECHO_C" >&6 | 7573 | echo $ECHO_N "checking whether tcsendbreak is declared... $ECHO_C" >&6 |
7256 | if test "${ac_cv_have_decl_tcsendbreak+set}" = set; then | 7574 | if test "${ac_cv_have_decl_tcsendbreak+set}" = set; then |
7257 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 7575 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
7258 | else | 7576 | else |
7259 | cat >conftest.$ac_ext <<_ACEOF | 7577 | cat >conftest.$ac_ext <<_ACEOF |
7260 | #line 7260 "configure" | 7578 | #line 7578 "configure" |
7261 | #include "confdefs.h" | 7579 | #include "confdefs.h" |
7262 | #include <termios.h> | 7580 | #include <termios.h> |
7263 | 7581 | ||
@@ -7273,16 +7591,16 @@ main () | |||
7273 | } | 7591 | } |
7274 | _ACEOF | 7592 | _ACEOF |
7275 | rm -f conftest.$ac_objext | 7593 | rm -f conftest.$ac_objext |
7276 | if { (eval echo "$as_me:7276: \"$ac_compile\"") >&5 | 7594 | if { (eval echo "$as_me:7594: \"$ac_compile\"") >&5 |
7277 | (eval $ac_compile) 2>&5 | 7595 | (eval $ac_compile) 2>&5 |
7278 | ac_status=$? | 7596 | ac_status=$? |
7279 | echo "$as_me:7279: \$? = $ac_status" >&5 | 7597 | echo "$as_me:7597: \$? = $ac_status" >&5 |
7280 | (exit $ac_status); } && | 7598 | (exit $ac_status); } && |
7281 | { ac_try='test -s conftest.$ac_objext' | 7599 | { ac_try='test -s conftest.$ac_objext' |
7282 | { (eval echo "$as_me:7282: \"$ac_try\"") >&5 | 7600 | { (eval echo "$as_me:7600: \"$ac_try\"") >&5 |
7283 | (eval $ac_try) 2>&5 | 7601 | (eval $ac_try) 2>&5 |
7284 | ac_status=$? | 7602 | ac_status=$? |
7285 | echo "$as_me:7285: \$? = $ac_status" >&5 | 7603 | echo "$as_me:7603: \$? = $ac_status" >&5 |
7286 | (exit $ac_status); }; }; then | 7604 | (exit $ac_status); }; }; then |
7287 | ac_cv_have_decl_tcsendbreak=yes | 7605 | ac_cv_have_decl_tcsendbreak=yes |
7288 | else | 7606 | else |
@@ -7292,7 +7610,7 @@ ac_cv_have_decl_tcsendbreak=no | |||
7292 | fi | 7610 | fi |
7293 | rm -f conftest.$ac_objext conftest.$ac_ext | 7611 | rm -f conftest.$ac_objext conftest.$ac_ext |
7294 | fi | 7612 | fi |
7295 | echo "$as_me:7295: result: $ac_cv_have_decl_tcsendbreak" >&5 | 7613 | echo "$as_me:7613: result: $ac_cv_have_decl_tcsendbreak" >&5 |
7296 | echo "${ECHO_T}$ac_cv_have_decl_tcsendbreak" >&6 | 7614 | echo "${ECHO_T}$ac_cv_have_decl_tcsendbreak" >&6 |
7297 | if test $ac_cv_have_decl_tcsendbreak = yes; then | 7615 | if test $ac_cv_have_decl_tcsendbreak = yes; then |
7298 | cat >>confdefs.h <<\EOF | 7616 | cat >>confdefs.h <<\EOF |
@@ -7304,13 +7622,84 @@ else | |||
7304 | for ac_func in tcsendbreak | 7622 | for ac_func in tcsendbreak |
7305 | do | 7623 | do |
7306 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` | 7624 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` |
7307 | echo "$as_me:7307: checking for $ac_func" >&5 | 7625 | echo "$as_me:7625: checking for $ac_func" >&5 |
7626 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 | ||
7627 | if eval "test \"\${$as_ac_var+set}\" = set"; then | ||
7628 | echo $ECHO_N "(cached) $ECHO_C" >&6 | ||
7629 | else | ||
7630 | cat >conftest.$ac_ext <<_ACEOF | ||
7631 | #line 7631 "configure" | ||
7632 | #include "confdefs.h" | ||
7633 | /* System header to define __stub macros and hopefully few prototypes, | ||
7634 | which can conflict with char $ac_func (); below. */ | ||
7635 | #include <assert.h> | ||
7636 | /* Override any gcc2 internal prototype to avoid an error. */ | ||
7637 | #ifdef __cplusplus | ||
7638 | extern "C" | ||
7639 | #endif | ||
7640 | /* We use char because int might match the return type of a gcc2 | ||
7641 | builtin and then its argument prototype would still apply. */ | ||
7642 | char $ac_func (); | ||
7643 | char (*f) (); | ||
7644 | |||
7645 | int | ||
7646 | main () | ||
7647 | { | ||
7648 | /* The GNU C library defines this for functions which it implements | ||
7649 | to always fail with ENOSYS. Some functions are actually named | ||
7650 | something starting with __ and the normal name is an alias. */ | ||
7651 | #if defined (__stub_$ac_func) || defined (__stub___$ac_func) | ||
7652 | choke me | ||
7653 | #else | ||
7654 | f = $ac_func; | ||
7655 | #endif | ||
7656 | |||
7657 | ; | ||
7658 | return 0; | ||
7659 | } | ||
7660 | _ACEOF | ||
7661 | rm -f conftest.$ac_objext conftest$ac_exeext | ||
7662 | if { (eval echo "$as_me:7662: \"$ac_link\"") >&5 | ||
7663 | (eval $ac_link) 2>&5 | ||
7664 | ac_status=$? | ||
7665 | echo "$as_me:7665: \$? = $ac_status" >&5 | ||
7666 | (exit $ac_status); } && | ||
7667 | { ac_try='test -s conftest$ac_exeext' | ||
7668 | { (eval echo "$as_me:7668: \"$ac_try\"") >&5 | ||
7669 | (eval $ac_try) 2>&5 | ||
7670 | ac_status=$? | ||
7671 | echo "$as_me:7671: \$? = $ac_status" >&5 | ||
7672 | (exit $ac_status); }; }; then | ||
7673 | eval "$as_ac_var=yes" | ||
7674 | else | ||
7675 | echo "$as_me: failed program was:" >&5 | ||
7676 | cat conftest.$ac_ext >&5 | ||
7677 | eval "$as_ac_var=no" | ||
7678 | fi | ||
7679 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | ||
7680 | fi | ||
7681 | echo "$as_me:7681: result: `eval echo '${'$as_ac_var'}'`" >&5 | ||
7682 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 | ||
7683 | if test `eval echo '${'$as_ac_var'}'` = yes; then | ||
7684 | cat >>confdefs.h <<EOF | ||
7685 | #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 | ||
7686 | EOF | ||
7687 | |||
7688 | fi | ||
7689 | done | ||
7690 | |||
7691 | fi | ||
7692 | |||
7693 | for ac_func in setresuid | ||
7694 | do | ||
7695 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` | ||
7696 | echo "$as_me:7696: checking for $ac_func" >&5 | ||
7308 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 | 7697 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 |
7309 | if eval "test \"\${$as_ac_var+set}\" = set"; then | 7698 | if eval "test \"\${$as_ac_var+set}\" = set"; then |
7310 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 7699 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
7311 | else | 7700 | else |
7312 | cat >conftest.$ac_ext <<_ACEOF | 7701 | cat >conftest.$ac_ext <<_ACEOF |
7313 | #line 7313 "configure" | 7702 | #line 7702 "configure" |
7314 | #include "confdefs.h" | 7703 | #include "confdefs.h" |
7315 | /* System header to define __stub macros and hopefully few prototypes, | 7704 | /* System header to define __stub macros and hopefully few prototypes, |
7316 | which can conflict with char $ac_func (); below. */ | 7705 | which can conflict with char $ac_func (); below. */ |
@@ -7341,16 +7730,16 @@ f = $ac_func; | |||
7341 | } | 7730 | } |
7342 | _ACEOF | 7731 | _ACEOF |
7343 | rm -f conftest.$ac_objext conftest$ac_exeext | 7732 | rm -f conftest.$ac_objext conftest$ac_exeext |
7344 | if { (eval echo "$as_me:7344: \"$ac_link\"") >&5 | 7733 | if { (eval echo "$as_me:7733: \"$ac_link\"") >&5 |
7345 | (eval $ac_link) 2>&5 | 7734 | (eval $ac_link) 2>&5 |
7346 | ac_status=$? | 7735 | ac_status=$? |
7347 | echo "$as_me:7347: \$? = $ac_status" >&5 | 7736 | echo "$as_me:7736: \$? = $ac_status" >&5 |
7348 | (exit $ac_status); } && | 7737 | (exit $ac_status); } && |
7349 | { ac_try='test -s conftest$ac_exeext' | 7738 | { ac_try='test -s conftest$ac_exeext' |
7350 | { (eval echo "$as_me:7350: \"$ac_try\"") >&5 | 7739 | { (eval echo "$as_me:7739: \"$ac_try\"") >&5 |
7351 | (eval $ac_try) 2>&5 | 7740 | (eval $ac_try) 2>&5 |
7352 | ac_status=$? | 7741 | ac_status=$? |
7353 | echo "$as_me:7353: \$? = $ac_status" >&5 | 7742 | echo "$as_me:7742: \$? = $ac_status" >&5 |
7354 | (exit $ac_status); }; }; then | 7743 | (exit $ac_status); }; }; then |
7355 | eval "$as_ac_var=yes" | 7744 | eval "$as_ac_var=yes" |
7356 | else | 7745 | else |
@@ -7360,28 +7749,183 @@ eval "$as_ac_var=no" | |||
7360 | fi | 7749 | fi |
7361 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 7750 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
7362 | fi | 7751 | fi |
7363 | echo "$as_me:7363: result: `eval echo '${'$as_ac_var'}'`" >&5 | 7752 | echo "$as_me:7752: result: `eval echo '${'$as_ac_var'}'`" >&5 |
7364 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 | 7753 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 |
7365 | if test `eval echo '${'$as_ac_var'}'` = yes; then | 7754 | if test `eval echo '${'$as_ac_var'}'` = yes; then |
7366 | cat >>confdefs.h <<EOF | 7755 | cat >>confdefs.h <<EOF |
7367 | #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 | 7756 | #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 |
7368 | EOF | 7757 | EOF |
7369 | 7758 | ||
7759 | echo "$as_me:7759: checking if setresuid seems to work" >&5 | ||
7760 | echo $ECHO_N "checking if setresuid seems to work... $ECHO_C" >&6 | ||
7761 | if test "$cross_compiling" = yes; then | ||
7762 | { { echo "$as_me:7762: error: cannot run test program while cross compiling" >&5 | ||
7763 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} | ||
7764 | { (exit 1); exit 1; }; } | ||
7765 | else | ||
7766 | cat >conftest.$ac_ext <<_ACEOF | ||
7767 | #line 7767 "configure" | ||
7768 | #include "confdefs.h" | ||
7769 | |||
7770 | #include <stdlib.h> | ||
7771 | #include <errno.h> | ||
7772 | int main(){errno=0; setresuid(0,0,0); if (errno==ENOSYS) exit(1); else exit(0);} | ||
7773 | |||
7774 | _ACEOF | ||
7775 | rm -f conftest$ac_exeext | ||
7776 | if { (eval echo "$as_me:7776: \"$ac_link\"") >&5 | ||
7777 | (eval $ac_link) 2>&5 | ||
7778 | ac_status=$? | ||
7779 | echo "$as_me:7779: \$? = $ac_status" >&5 | ||
7780 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' | ||
7781 | { (eval echo "$as_me:7781: \"$ac_try\"") >&5 | ||
7782 | (eval $ac_try) 2>&5 | ||
7783 | ac_status=$? | ||
7784 | echo "$as_me:7784: \$? = $ac_status" >&5 | ||
7785 | (exit $ac_status); }; }; then | ||
7786 | echo "$as_me:7786: result: yes" >&5 | ||
7787 | echo "${ECHO_T}yes" >&6 | ||
7788 | else | ||
7789 | echo "$as_me: program exited with status $ac_status" >&5 | ||
7790 | echo "$as_me: failed program was:" >&5 | ||
7791 | cat conftest.$ac_ext >&5 | ||
7792 | cat >>confdefs.h <<\EOF | ||
7793 | #define BROKEN_SETRESUID 1 | ||
7794 | EOF | ||
7795 | |||
7796 | echo "$as_me:7796: result: not implemented" >&5 | ||
7797 | echo "${ECHO_T}not implemented" >&6 | ||
7798 | |||
7799 | fi | ||
7800 | rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext | ||
7801 | fi | ||
7802 | |||
7370 | fi | 7803 | fi |
7371 | done | 7804 | done |
7372 | 7805 | ||
7806 | for ac_func in setresgid | ||
7807 | do | ||
7808 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` | ||
7809 | echo "$as_me:7809: checking for $ac_func" >&5 | ||
7810 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 | ||
7811 | if eval "test \"\${$as_ac_var+set}\" = set"; then | ||
7812 | echo $ECHO_N "(cached) $ECHO_C" >&6 | ||
7813 | else | ||
7814 | cat >conftest.$ac_ext <<_ACEOF | ||
7815 | #line 7815 "configure" | ||
7816 | #include "confdefs.h" | ||
7817 | /* System header to define __stub macros and hopefully few prototypes, | ||
7818 | which can conflict with char $ac_func (); below. */ | ||
7819 | #include <assert.h> | ||
7820 | /* Override any gcc2 internal prototype to avoid an error. */ | ||
7821 | #ifdef __cplusplus | ||
7822 | extern "C" | ||
7823 | #endif | ||
7824 | /* We use char because int might match the return type of a gcc2 | ||
7825 | builtin and then its argument prototype would still apply. */ | ||
7826 | char $ac_func (); | ||
7827 | char (*f) (); | ||
7828 | |||
7829 | int | ||
7830 | main () | ||
7831 | { | ||
7832 | /* The GNU C library defines this for functions which it implements | ||
7833 | to always fail with ENOSYS. Some functions are actually named | ||
7834 | something starting with __ and the normal name is an alias. */ | ||
7835 | #if defined (__stub_$ac_func) || defined (__stub___$ac_func) | ||
7836 | choke me | ||
7837 | #else | ||
7838 | f = $ac_func; | ||
7839 | #endif | ||
7840 | |||
7841 | ; | ||
7842 | return 0; | ||
7843 | } | ||
7844 | _ACEOF | ||
7845 | rm -f conftest.$ac_objext conftest$ac_exeext | ||
7846 | if { (eval echo "$as_me:7846: \"$ac_link\"") >&5 | ||
7847 | (eval $ac_link) 2>&5 | ||
7848 | ac_status=$? | ||
7849 | echo "$as_me:7849: \$? = $ac_status" >&5 | ||
7850 | (exit $ac_status); } && | ||
7851 | { ac_try='test -s conftest$ac_exeext' | ||
7852 | { (eval echo "$as_me:7852: \"$ac_try\"") >&5 | ||
7853 | (eval $ac_try) 2>&5 | ||
7854 | ac_status=$? | ||
7855 | echo "$as_me:7855: \$? = $ac_status" >&5 | ||
7856 | (exit $ac_status); }; }; then | ||
7857 | eval "$as_ac_var=yes" | ||
7858 | else | ||
7859 | echo "$as_me: failed program was:" >&5 | ||
7860 | cat conftest.$ac_ext >&5 | ||
7861 | eval "$as_ac_var=no" | ||
7862 | fi | ||
7863 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | ||
7864 | fi | ||
7865 | echo "$as_me:7865: result: `eval echo '${'$as_ac_var'}'`" >&5 | ||
7866 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 | ||
7867 | if test `eval echo '${'$as_ac_var'}'` = yes; then | ||
7868 | cat >>confdefs.h <<EOF | ||
7869 | #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 | ||
7870 | EOF | ||
7871 | |||
7872 | echo "$as_me:7872: checking if setresgid seems to work" >&5 | ||
7873 | echo $ECHO_N "checking if setresgid seems to work... $ECHO_C" >&6 | ||
7874 | if test "$cross_compiling" = yes; then | ||
7875 | { { echo "$as_me:7875: error: cannot run test program while cross compiling" >&5 | ||
7876 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} | ||
7877 | { (exit 1); exit 1; }; } | ||
7878 | else | ||
7879 | cat >conftest.$ac_ext <<_ACEOF | ||
7880 | #line 7880 "configure" | ||
7881 | #include "confdefs.h" | ||
7882 | |||
7883 | #include <stdlib.h> | ||
7884 | #include <errno.h> | ||
7885 | int main(){errno=0; setresgid(0,0,0); if (errno==ENOSYS) exit(1); else exit(0);} | ||
7886 | |||
7887 | _ACEOF | ||
7888 | rm -f conftest$ac_exeext | ||
7889 | if { (eval echo "$as_me:7889: \"$ac_link\"") >&5 | ||
7890 | (eval $ac_link) 2>&5 | ||
7891 | ac_status=$? | ||
7892 | echo "$as_me:7892: \$? = $ac_status" >&5 | ||
7893 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' | ||
7894 | { (eval echo "$as_me:7894: \"$ac_try\"") >&5 | ||
7895 | (eval $ac_try) 2>&5 | ||
7896 | ac_status=$? | ||
7897 | echo "$as_me:7897: \$? = $ac_status" >&5 | ||
7898 | (exit $ac_status); }; }; then | ||
7899 | echo "$as_me:7899: result: yes" >&5 | ||
7900 | echo "${ECHO_T}yes" >&6 | ||
7901 | else | ||
7902 | echo "$as_me: program exited with status $ac_status" >&5 | ||
7903 | echo "$as_me: failed program was:" >&5 | ||
7904 | cat conftest.$ac_ext >&5 | ||
7905 | cat >>confdefs.h <<\EOF | ||
7906 | #define BROKEN_SETRESGID 1 | ||
7907 | EOF | ||
7908 | |||
7909 | echo "$as_me:7909: result: not implemented" >&5 | ||
7910 | echo "${ECHO_T}not implemented" >&6 | ||
7911 | |||
7912 | fi | ||
7913 | rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext | ||
7373 | fi | 7914 | fi |
7374 | 7915 | ||
7916 | fi | ||
7917 | done | ||
7918 | |||
7375 | for ac_func in gettimeofday time | 7919 | for ac_func in gettimeofday time |
7376 | do | 7920 | do |
7377 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` | 7921 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` |
7378 | echo "$as_me:7378: checking for $ac_func" >&5 | 7922 | echo "$as_me:7922: checking for $ac_func" >&5 |
7379 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 | 7923 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 |
7380 | if eval "test \"\${$as_ac_var+set}\" = set"; then | 7924 | if eval "test \"\${$as_ac_var+set}\" = set"; then |
7381 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 7925 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
7382 | else | 7926 | else |
7383 | cat >conftest.$ac_ext <<_ACEOF | 7927 | cat >conftest.$ac_ext <<_ACEOF |
7384 | #line 7384 "configure" | 7928 | #line 7928 "configure" |
7385 | #include "confdefs.h" | 7929 | #include "confdefs.h" |
7386 | /* System header to define __stub macros and hopefully few prototypes, | 7930 | /* System header to define __stub macros and hopefully few prototypes, |
7387 | which can conflict with char $ac_func (); below. */ | 7931 | which can conflict with char $ac_func (); below. */ |
@@ -7412,16 +7956,16 @@ f = $ac_func; | |||
7412 | } | 7956 | } |
7413 | _ACEOF | 7957 | _ACEOF |
7414 | rm -f conftest.$ac_objext conftest$ac_exeext | 7958 | rm -f conftest.$ac_objext conftest$ac_exeext |
7415 | if { (eval echo "$as_me:7415: \"$ac_link\"") >&5 | 7959 | if { (eval echo "$as_me:7959: \"$ac_link\"") >&5 |
7416 | (eval $ac_link) 2>&5 | 7960 | (eval $ac_link) 2>&5 |
7417 | ac_status=$? | 7961 | ac_status=$? |
7418 | echo "$as_me:7418: \$? = $ac_status" >&5 | 7962 | echo "$as_me:7962: \$? = $ac_status" >&5 |
7419 | (exit $ac_status); } && | 7963 | (exit $ac_status); } && |
7420 | { ac_try='test -s conftest$ac_exeext' | 7964 | { ac_try='test -s conftest$ac_exeext' |
7421 | { (eval echo "$as_me:7421: \"$ac_try\"") >&5 | 7965 | { (eval echo "$as_me:7965: \"$ac_try\"") >&5 |
7422 | (eval $ac_try) 2>&5 | 7966 | (eval $ac_try) 2>&5 |
7423 | ac_status=$? | 7967 | ac_status=$? |
7424 | echo "$as_me:7424: \$? = $ac_status" >&5 | 7968 | echo "$as_me:7968: \$? = $ac_status" >&5 |
7425 | (exit $ac_status); }; }; then | 7969 | (exit $ac_status); }; }; then |
7426 | eval "$as_ac_var=yes" | 7970 | eval "$as_ac_var=yes" |
7427 | else | 7971 | else |
@@ -7431,7 +7975,7 @@ eval "$as_ac_var=no" | |||
7431 | fi | 7975 | fi |
7432 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 7976 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
7433 | fi | 7977 | fi |
7434 | echo "$as_me:7434: result: `eval echo '${'$as_ac_var'}'`" >&5 | 7978 | echo "$as_me:7978: result: `eval echo '${'$as_ac_var'}'`" >&5 |
7435 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 | 7979 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 |
7436 | if test `eval echo '${'$as_ac_var'}'` = yes; then | 7980 | if test `eval echo '${'$as_ac_var'}'` = yes; then |
7437 | cat >>confdefs.h <<EOF | 7981 | cat >>confdefs.h <<EOF |
@@ -7444,13 +7988,13 @@ done | |||
7444 | for ac_func in endutent getutent getutid getutline pututline setutent | 7988 | for ac_func in endutent getutent getutid getutline pututline setutent |
7445 | do | 7989 | do |
7446 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` | 7990 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` |
7447 | echo "$as_me:7447: checking for $ac_func" >&5 | 7991 | echo "$as_me:7991: checking for $ac_func" >&5 |
7448 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 | 7992 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 |
7449 | if eval "test \"\${$as_ac_var+set}\" = set"; then | 7993 | if eval "test \"\${$as_ac_var+set}\" = set"; then |
7450 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 7994 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
7451 | else | 7995 | else |
7452 | cat >conftest.$ac_ext <<_ACEOF | 7996 | cat >conftest.$ac_ext <<_ACEOF |
7453 | #line 7453 "configure" | 7997 | #line 7997 "configure" |
7454 | #include "confdefs.h" | 7998 | #include "confdefs.h" |
7455 | /* System header to define __stub macros and hopefully few prototypes, | 7999 | /* System header to define __stub macros and hopefully few prototypes, |
7456 | which can conflict with char $ac_func (); below. */ | 8000 | which can conflict with char $ac_func (); below. */ |
@@ -7481,16 +8025,16 @@ f = $ac_func; | |||
7481 | } | 8025 | } |
7482 | _ACEOF | 8026 | _ACEOF |
7483 | rm -f conftest.$ac_objext conftest$ac_exeext | 8027 | rm -f conftest.$ac_objext conftest$ac_exeext |
7484 | if { (eval echo "$as_me:7484: \"$ac_link\"") >&5 | 8028 | if { (eval echo "$as_me:8028: \"$ac_link\"") >&5 |
7485 | (eval $ac_link) 2>&5 | 8029 | (eval $ac_link) 2>&5 |
7486 | ac_status=$? | 8030 | ac_status=$? |
7487 | echo "$as_me:7487: \$? = $ac_status" >&5 | 8031 | echo "$as_me:8031: \$? = $ac_status" >&5 |
7488 | (exit $ac_status); } && | 8032 | (exit $ac_status); } && |
7489 | { ac_try='test -s conftest$ac_exeext' | 8033 | { ac_try='test -s conftest$ac_exeext' |
7490 | { (eval echo "$as_me:7490: \"$ac_try\"") >&5 | 8034 | { (eval echo "$as_me:8034: \"$ac_try\"") >&5 |
7491 | (eval $ac_try) 2>&5 | 8035 | (eval $ac_try) 2>&5 |
7492 | ac_status=$? | 8036 | ac_status=$? |
7493 | echo "$as_me:7493: \$? = $ac_status" >&5 | 8037 | echo "$as_me:8037: \$? = $ac_status" >&5 |
7494 | (exit $ac_status); }; }; then | 8038 | (exit $ac_status); }; }; then |
7495 | eval "$as_ac_var=yes" | 8039 | eval "$as_ac_var=yes" |
7496 | else | 8040 | else |
@@ -7500,7 +8044,7 @@ eval "$as_ac_var=no" | |||
7500 | fi | 8044 | fi |
7501 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 8045 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
7502 | fi | 8046 | fi |
7503 | echo "$as_me:7503: result: `eval echo '${'$as_ac_var'}'`" >&5 | 8047 | echo "$as_me:8047: result: `eval echo '${'$as_ac_var'}'`" >&5 |
7504 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 | 8048 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 |
7505 | if test `eval echo '${'$as_ac_var'}'` = yes; then | 8049 | if test `eval echo '${'$as_ac_var'}'` = yes; then |
7506 | cat >>confdefs.h <<EOF | 8050 | cat >>confdefs.h <<EOF |
@@ -7513,13 +8057,13 @@ done | |||
7513 | for ac_func in utmpname | 8057 | for ac_func in utmpname |
7514 | do | 8058 | do |
7515 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` | 8059 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` |
7516 | echo "$as_me:7516: checking for $ac_func" >&5 | 8060 | echo "$as_me:8060: checking for $ac_func" >&5 |
7517 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 | 8061 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 |
7518 | if eval "test \"\${$as_ac_var+set}\" = set"; then | 8062 | if eval "test \"\${$as_ac_var+set}\" = set"; then |
7519 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 8063 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
7520 | else | 8064 | else |
7521 | cat >conftest.$ac_ext <<_ACEOF | 8065 | cat >conftest.$ac_ext <<_ACEOF |
7522 | #line 7522 "configure" | 8066 | #line 8066 "configure" |
7523 | #include "confdefs.h" | 8067 | #include "confdefs.h" |
7524 | /* System header to define __stub macros and hopefully few prototypes, | 8068 | /* System header to define __stub macros and hopefully few prototypes, |
7525 | which can conflict with char $ac_func (); below. */ | 8069 | which can conflict with char $ac_func (); below. */ |
@@ -7550,16 +8094,16 @@ f = $ac_func; | |||
7550 | } | 8094 | } |
7551 | _ACEOF | 8095 | _ACEOF |
7552 | rm -f conftest.$ac_objext conftest$ac_exeext | 8096 | rm -f conftest.$ac_objext conftest$ac_exeext |
7553 | if { (eval echo "$as_me:7553: \"$ac_link\"") >&5 | 8097 | if { (eval echo "$as_me:8097: \"$ac_link\"") >&5 |
7554 | (eval $ac_link) 2>&5 | 8098 | (eval $ac_link) 2>&5 |
7555 | ac_status=$? | 8099 | ac_status=$? |
7556 | echo "$as_me:7556: \$? = $ac_status" >&5 | 8100 | echo "$as_me:8100: \$? = $ac_status" >&5 |
7557 | (exit $ac_status); } && | 8101 | (exit $ac_status); } && |
7558 | { ac_try='test -s conftest$ac_exeext' | 8102 | { ac_try='test -s conftest$ac_exeext' |
7559 | { (eval echo "$as_me:7559: \"$ac_try\"") >&5 | 8103 | { (eval echo "$as_me:8103: \"$ac_try\"") >&5 |
7560 | (eval $ac_try) 2>&5 | 8104 | (eval $ac_try) 2>&5 |
7561 | ac_status=$? | 8105 | ac_status=$? |
7562 | echo "$as_me:7562: \$? = $ac_status" >&5 | 8106 | echo "$as_me:8106: \$? = $ac_status" >&5 |
7563 | (exit $ac_status); }; }; then | 8107 | (exit $ac_status); }; }; then |
7564 | eval "$as_ac_var=yes" | 8108 | eval "$as_ac_var=yes" |
7565 | else | 8109 | else |
@@ -7569,7 +8113,7 @@ eval "$as_ac_var=no" | |||
7569 | fi | 8113 | fi |
7570 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 8114 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
7571 | fi | 8115 | fi |
7572 | echo "$as_me:7572: result: `eval echo '${'$as_ac_var'}'`" >&5 | 8116 | echo "$as_me:8116: result: `eval echo '${'$as_ac_var'}'`" >&5 |
7573 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 | 8117 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 |
7574 | if test `eval echo '${'$as_ac_var'}'` = yes; then | 8118 | if test `eval echo '${'$as_ac_var'}'` = yes; then |
7575 | cat >>confdefs.h <<EOF | 8119 | cat >>confdefs.h <<EOF |
@@ -7582,13 +8126,13 @@ done | |||
7582 | for ac_func in endutxent getutxent getutxid getutxline pututxline | 8126 | for ac_func in endutxent getutxent getutxid getutxline pututxline |
7583 | do | 8127 | do |
7584 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` | 8128 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` |
7585 | echo "$as_me:7585: checking for $ac_func" >&5 | 8129 | echo "$as_me:8129: checking for $ac_func" >&5 |
7586 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 | 8130 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 |
7587 | if eval "test \"\${$as_ac_var+set}\" = set"; then | 8131 | if eval "test \"\${$as_ac_var+set}\" = set"; then |
7588 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 8132 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
7589 | else | 8133 | else |
7590 | cat >conftest.$ac_ext <<_ACEOF | 8134 | cat >conftest.$ac_ext <<_ACEOF |
7591 | #line 7591 "configure" | 8135 | #line 8135 "configure" |
7592 | #include "confdefs.h" | 8136 | #include "confdefs.h" |
7593 | /* System header to define __stub macros and hopefully few prototypes, | 8137 | /* System header to define __stub macros and hopefully few prototypes, |
7594 | which can conflict with char $ac_func (); below. */ | 8138 | which can conflict with char $ac_func (); below. */ |
@@ -7619,16 +8163,16 @@ f = $ac_func; | |||
7619 | } | 8163 | } |
7620 | _ACEOF | 8164 | _ACEOF |
7621 | rm -f conftest.$ac_objext conftest$ac_exeext | 8165 | rm -f conftest.$ac_objext conftest$ac_exeext |
7622 | if { (eval echo "$as_me:7622: \"$ac_link\"") >&5 | 8166 | if { (eval echo "$as_me:8166: \"$ac_link\"") >&5 |
7623 | (eval $ac_link) 2>&5 | 8167 | (eval $ac_link) 2>&5 |
7624 | ac_status=$? | 8168 | ac_status=$? |
7625 | echo "$as_me:7625: \$? = $ac_status" >&5 | 8169 | echo "$as_me:8169: \$? = $ac_status" >&5 |
7626 | (exit $ac_status); } && | 8170 | (exit $ac_status); } && |
7627 | { ac_try='test -s conftest$ac_exeext' | 8171 | { ac_try='test -s conftest$ac_exeext' |
7628 | { (eval echo "$as_me:7628: \"$ac_try\"") >&5 | 8172 | { (eval echo "$as_me:8172: \"$ac_try\"") >&5 |
7629 | (eval $ac_try) 2>&5 | 8173 | (eval $ac_try) 2>&5 |
7630 | ac_status=$? | 8174 | ac_status=$? |
7631 | echo "$as_me:7631: \$? = $ac_status" >&5 | 8175 | echo "$as_me:8175: \$? = $ac_status" >&5 |
7632 | (exit $ac_status); }; }; then | 8176 | (exit $ac_status); }; }; then |
7633 | eval "$as_ac_var=yes" | 8177 | eval "$as_ac_var=yes" |
7634 | else | 8178 | else |
@@ -7638,7 +8182,7 @@ eval "$as_ac_var=no" | |||
7638 | fi | 8182 | fi |
7639 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 8183 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
7640 | fi | 8184 | fi |
7641 | echo "$as_me:7641: result: `eval echo '${'$as_ac_var'}'`" >&5 | 8185 | echo "$as_me:8185: result: `eval echo '${'$as_ac_var'}'`" >&5 |
7642 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 | 8186 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 |
7643 | if test `eval echo '${'$as_ac_var'}'` = yes; then | 8187 | if test `eval echo '${'$as_ac_var'}'` = yes; then |
7644 | cat >>confdefs.h <<EOF | 8188 | cat >>confdefs.h <<EOF |
@@ -7651,13 +8195,13 @@ done | |||
7651 | for ac_func in setutxent utmpxname | 8195 | for ac_func in setutxent utmpxname |
7652 | do | 8196 | do |
7653 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` | 8197 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` |
7654 | echo "$as_me:7654: checking for $ac_func" >&5 | 8198 | echo "$as_me:8198: checking for $ac_func" >&5 |
7655 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 | 8199 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 |
7656 | if eval "test \"\${$as_ac_var+set}\" = set"; then | 8200 | if eval "test \"\${$as_ac_var+set}\" = set"; then |
7657 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 8201 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
7658 | else | 8202 | else |
7659 | cat >conftest.$ac_ext <<_ACEOF | 8203 | cat >conftest.$ac_ext <<_ACEOF |
7660 | #line 7660 "configure" | 8204 | #line 8204 "configure" |
7661 | #include "confdefs.h" | 8205 | #include "confdefs.h" |
7662 | /* System header to define __stub macros and hopefully few prototypes, | 8206 | /* System header to define __stub macros and hopefully few prototypes, |
7663 | which can conflict with char $ac_func (); below. */ | 8207 | which can conflict with char $ac_func (); below. */ |
@@ -7688,16 +8232,16 @@ f = $ac_func; | |||
7688 | } | 8232 | } |
7689 | _ACEOF | 8233 | _ACEOF |
7690 | rm -f conftest.$ac_objext conftest$ac_exeext | 8234 | rm -f conftest.$ac_objext conftest$ac_exeext |
7691 | if { (eval echo "$as_me:7691: \"$ac_link\"") >&5 | 8235 | if { (eval echo "$as_me:8235: \"$ac_link\"") >&5 |
7692 | (eval $ac_link) 2>&5 | 8236 | (eval $ac_link) 2>&5 |
7693 | ac_status=$? | 8237 | ac_status=$? |
7694 | echo "$as_me:7694: \$? = $ac_status" >&5 | 8238 | echo "$as_me:8238: \$? = $ac_status" >&5 |
7695 | (exit $ac_status); } && | 8239 | (exit $ac_status); } && |
7696 | { ac_try='test -s conftest$ac_exeext' | 8240 | { ac_try='test -s conftest$ac_exeext' |
7697 | { (eval echo "$as_me:7697: \"$ac_try\"") >&5 | 8241 | { (eval echo "$as_me:8241: \"$ac_try\"") >&5 |
7698 | (eval $ac_try) 2>&5 | 8242 | (eval $ac_try) 2>&5 |
7699 | ac_status=$? | 8243 | ac_status=$? |
7700 | echo "$as_me:7700: \$? = $ac_status" >&5 | 8244 | echo "$as_me:8244: \$? = $ac_status" >&5 |
7701 | (exit $ac_status); }; }; then | 8245 | (exit $ac_status); }; }; then |
7702 | eval "$as_ac_var=yes" | 8246 | eval "$as_ac_var=yes" |
7703 | else | 8247 | else |
@@ -7707,7 +8251,7 @@ eval "$as_ac_var=no" | |||
7707 | fi | 8251 | fi |
7708 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 8252 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
7709 | fi | 8253 | fi |
7710 | echo "$as_me:7710: result: `eval echo '${'$as_ac_var'}'`" >&5 | 8254 | echo "$as_me:8254: result: `eval echo '${'$as_ac_var'}'`" >&5 |
7711 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 | 8255 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 |
7712 | if test `eval echo '${'$as_ac_var'}'` = yes; then | 8256 | if test `eval echo '${'$as_ac_var'}'` = yes; then |
7713 | cat >>confdefs.h <<EOF | 8257 | cat >>confdefs.h <<EOF |
@@ -7717,13 +8261,13 @@ EOF | |||
7717 | fi | 8261 | fi |
7718 | done | 8262 | done |
7719 | 8263 | ||
7720 | echo "$as_me:7720: checking for daemon" >&5 | 8264 | echo "$as_me:8264: checking for daemon" >&5 |
7721 | echo $ECHO_N "checking for daemon... $ECHO_C" >&6 | 8265 | echo $ECHO_N "checking for daemon... $ECHO_C" >&6 |
7722 | if test "${ac_cv_func_daemon+set}" = set; then | 8266 | if test "${ac_cv_func_daemon+set}" = set; then |
7723 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 8267 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
7724 | else | 8268 | else |
7725 | cat >conftest.$ac_ext <<_ACEOF | 8269 | cat >conftest.$ac_ext <<_ACEOF |
7726 | #line 7726 "configure" | 8270 | #line 8270 "configure" |
7727 | #include "confdefs.h" | 8271 | #include "confdefs.h" |
7728 | /* System header to define __stub macros and hopefully few prototypes, | 8272 | /* System header to define __stub macros and hopefully few prototypes, |
7729 | which can conflict with char daemon (); below. */ | 8273 | which can conflict with char daemon (); below. */ |
@@ -7754,16 +8298,16 @@ f = daemon; | |||
7754 | } | 8298 | } |
7755 | _ACEOF | 8299 | _ACEOF |
7756 | rm -f conftest.$ac_objext conftest$ac_exeext | 8300 | rm -f conftest.$ac_objext conftest$ac_exeext |
7757 | if { (eval echo "$as_me:7757: \"$ac_link\"") >&5 | 8301 | if { (eval echo "$as_me:8301: \"$ac_link\"") >&5 |
7758 | (eval $ac_link) 2>&5 | 8302 | (eval $ac_link) 2>&5 |
7759 | ac_status=$? | 8303 | ac_status=$? |
7760 | echo "$as_me:7760: \$? = $ac_status" >&5 | 8304 | echo "$as_me:8304: \$? = $ac_status" >&5 |
7761 | (exit $ac_status); } && | 8305 | (exit $ac_status); } && |
7762 | { ac_try='test -s conftest$ac_exeext' | 8306 | { ac_try='test -s conftest$ac_exeext' |
7763 | { (eval echo "$as_me:7763: \"$ac_try\"") >&5 | 8307 | { (eval echo "$as_me:8307: \"$ac_try\"") >&5 |
7764 | (eval $ac_try) 2>&5 | 8308 | (eval $ac_try) 2>&5 |
7765 | ac_status=$? | 8309 | ac_status=$? |
7766 | echo "$as_me:7766: \$? = $ac_status" >&5 | 8310 | echo "$as_me:8310: \$? = $ac_status" >&5 |
7767 | (exit $ac_status); }; }; then | 8311 | (exit $ac_status); }; }; then |
7768 | ac_cv_func_daemon=yes | 8312 | ac_cv_func_daemon=yes |
7769 | else | 8313 | else |
@@ -7773,7 +8317,7 @@ ac_cv_func_daemon=no | |||
7773 | fi | 8317 | fi |
7774 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 8318 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
7775 | fi | 8319 | fi |
7776 | echo "$as_me:7776: result: $ac_cv_func_daemon" >&5 | 8320 | echo "$as_me:8320: result: $ac_cv_func_daemon" >&5 |
7777 | echo "${ECHO_T}$ac_cv_func_daemon" >&6 | 8321 | echo "${ECHO_T}$ac_cv_func_daemon" >&6 |
7778 | if test $ac_cv_func_daemon = yes; then | 8322 | if test $ac_cv_func_daemon = yes; then |
7779 | cat >>confdefs.h <<\EOF | 8323 | cat >>confdefs.h <<\EOF |
@@ -7781,7 +8325,7 @@ if test $ac_cv_func_daemon = yes; then | |||
7781 | EOF | 8325 | EOF |
7782 | 8326 | ||
7783 | else | 8327 | else |
7784 | echo "$as_me:7784: checking for daemon in -lbsd" >&5 | 8328 | echo "$as_me:8328: checking for daemon in -lbsd" >&5 |
7785 | echo $ECHO_N "checking for daemon in -lbsd... $ECHO_C" >&6 | 8329 | echo $ECHO_N "checking for daemon in -lbsd... $ECHO_C" >&6 |
7786 | if test "${ac_cv_lib_bsd_daemon+set}" = set; then | 8330 | if test "${ac_cv_lib_bsd_daemon+set}" = set; then |
7787 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 8331 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -7789,7 +8333,7 @@ else | |||
7789 | ac_check_lib_save_LIBS=$LIBS | 8333 | ac_check_lib_save_LIBS=$LIBS |
7790 | LIBS="-lbsd $LIBS" | 8334 | LIBS="-lbsd $LIBS" |
7791 | cat >conftest.$ac_ext <<_ACEOF | 8335 | cat >conftest.$ac_ext <<_ACEOF |
7792 | #line 7792 "configure" | 8336 | #line 8336 "configure" |
7793 | #include "confdefs.h" | 8337 | #include "confdefs.h" |
7794 | 8338 | ||
7795 | /* Override any gcc2 internal prototype to avoid an error. */ | 8339 | /* Override any gcc2 internal prototype to avoid an error. */ |
@@ -7808,16 +8352,16 @@ daemon (); | |||
7808 | } | 8352 | } |
7809 | _ACEOF | 8353 | _ACEOF |
7810 | rm -f conftest.$ac_objext conftest$ac_exeext | 8354 | rm -f conftest.$ac_objext conftest$ac_exeext |
7811 | if { (eval echo "$as_me:7811: \"$ac_link\"") >&5 | 8355 | if { (eval echo "$as_me:8355: \"$ac_link\"") >&5 |
7812 | (eval $ac_link) 2>&5 | 8356 | (eval $ac_link) 2>&5 |
7813 | ac_status=$? | 8357 | ac_status=$? |
7814 | echo "$as_me:7814: \$? = $ac_status" >&5 | 8358 | echo "$as_me:8358: \$? = $ac_status" >&5 |
7815 | (exit $ac_status); } && | 8359 | (exit $ac_status); } && |
7816 | { ac_try='test -s conftest$ac_exeext' | 8360 | { ac_try='test -s conftest$ac_exeext' |
7817 | { (eval echo "$as_me:7817: \"$ac_try\"") >&5 | 8361 | { (eval echo "$as_me:8361: \"$ac_try\"") >&5 |
7818 | (eval $ac_try) 2>&5 | 8362 | (eval $ac_try) 2>&5 |
7819 | ac_status=$? | 8363 | ac_status=$? |
7820 | echo "$as_me:7820: \$? = $ac_status" >&5 | 8364 | echo "$as_me:8364: \$? = $ac_status" >&5 |
7821 | (exit $ac_status); }; }; then | 8365 | (exit $ac_status); }; }; then |
7822 | ac_cv_lib_bsd_daemon=yes | 8366 | ac_cv_lib_bsd_daemon=yes |
7823 | else | 8367 | else |
@@ -7828,7 +8372,7 @@ fi | |||
7828 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 8372 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
7829 | LIBS=$ac_check_lib_save_LIBS | 8373 | LIBS=$ac_check_lib_save_LIBS |
7830 | fi | 8374 | fi |
7831 | echo "$as_me:7831: result: $ac_cv_lib_bsd_daemon" >&5 | 8375 | echo "$as_me:8375: result: $ac_cv_lib_bsd_daemon" >&5 |
7832 | echo "${ECHO_T}$ac_cv_lib_bsd_daemon" >&6 | 8376 | echo "${ECHO_T}$ac_cv_lib_bsd_daemon" >&6 |
7833 | if test $ac_cv_lib_bsd_daemon = yes; then | 8377 | if test $ac_cv_lib_bsd_daemon = yes; then |
7834 | LIBS="$LIBS -lbsd"; cat >>confdefs.h <<\EOF | 8378 | LIBS="$LIBS -lbsd"; cat >>confdefs.h <<\EOF |
@@ -7839,13 +8383,13 @@ fi | |||
7839 | 8383 | ||
7840 | fi | 8384 | fi |
7841 | 8385 | ||
7842 | echo "$as_me:7842: checking for getpagesize" >&5 | 8386 | echo "$as_me:8386: checking for getpagesize" >&5 |
7843 | echo $ECHO_N "checking for getpagesize... $ECHO_C" >&6 | 8387 | echo $ECHO_N "checking for getpagesize... $ECHO_C" >&6 |
7844 | if test "${ac_cv_func_getpagesize+set}" = set; then | 8388 | if test "${ac_cv_func_getpagesize+set}" = set; then |
7845 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 8389 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
7846 | else | 8390 | else |
7847 | cat >conftest.$ac_ext <<_ACEOF | 8391 | cat >conftest.$ac_ext <<_ACEOF |
7848 | #line 7848 "configure" | 8392 | #line 8392 "configure" |
7849 | #include "confdefs.h" | 8393 | #include "confdefs.h" |
7850 | /* System header to define __stub macros and hopefully few prototypes, | 8394 | /* System header to define __stub macros and hopefully few prototypes, |
7851 | which can conflict with char getpagesize (); below. */ | 8395 | which can conflict with char getpagesize (); below. */ |
@@ -7876,16 +8420,16 @@ f = getpagesize; | |||
7876 | } | 8420 | } |
7877 | _ACEOF | 8421 | _ACEOF |
7878 | rm -f conftest.$ac_objext conftest$ac_exeext | 8422 | rm -f conftest.$ac_objext conftest$ac_exeext |
7879 | if { (eval echo "$as_me:7879: \"$ac_link\"") >&5 | 8423 | if { (eval echo "$as_me:8423: \"$ac_link\"") >&5 |
7880 | (eval $ac_link) 2>&5 | 8424 | (eval $ac_link) 2>&5 |
7881 | ac_status=$? | 8425 | ac_status=$? |
7882 | echo "$as_me:7882: \$? = $ac_status" >&5 | 8426 | echo "$as_me:8426: \$? = $ac_status" >&5 |
7883 | (exit $ac_status); } && | 8427 | (exit $ac_status); } && |
7884 | { ac_try='test -s conftest$ac_exeext' | 8428 | { ac_try='test -s conftest$ac_exeext' |
7885 | { (eval echo "$as_me:7885: \"$ac_try\"") >&5 | 8429 | { (eval echo "$as_me:8429: \"$ac_try\"") >&5 |
7886 | (eval $ac_try) 2>&5 | 8430 | (eval $ac_try) 2>&5 |
7887 | ac_status=$? | 8431 | ac_status=$? |
7888 | echo "$as_me:7888: \$? = $ac_status" >&5 | 8432 | echo "$as_me:8432: \$? = $ac_status" >&5 |
7889 | (exit $ac_status); }; }; then | 8433 | (exit $ac_status); }; }; then |
7890 | ac_cv_func_getpagesize=yes | 8434 | ac_cv_func_getpagesize=yes |
7891 | else | 8435 | else |
@@ -7895,7 +8439,7 @@ ac_cv_func_getpagesize=no | |||
7895 | fi | 8439 | fi |
7896 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 8440 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
7897 | fi | 8441 | fi |
7898 | echo "$as_me:7898: result: $ac_cv_func_getpagesize" >&5 | 8442 | echo "$as_me:8442: result: $ac_cv_func_getpagesize" >&5 |
7899 | echo "${ECHO_T}$ac_cv_func_getpagesize" >&6 | 8443 | echo "${ECHO_T}$ac_cv_func_getpagesize" >&6 |
7900 | if test $ac_cv_func_getpagesize = yes; then | 8444 | if test $ac_cv_func_getpagesize = yes; then |
7901 | cat >>confdefs.h <<\EOF | 8445 | cat >>confdefs.h <<\EOF |
@@ -7903,7 +8447,7 @@ if test $ac_cv_func_getpagesize = yes; then | |||
7903 | EOF | 8447 | EOF |
7904 | 8448 | ||
7905 | else | 8449 | else |
7906 | echo "$as_me:7906: checking for getpagesize in -lucb" >&5 | 8450 | echo "$as_me:8450: checking for getpagesize in -lucb" >&5 |
7907 | echo $ECHO_N "checking for getpagesize in -lucb... $ECHO_C" >&6 | 8451 | echo $ECHO_N "checking for getpagesize in -lucb... $ECHO_C" >&6 |
7908 | if test "${ac_cv_lib_ucb_getpagesize+set}" = set; then | 8452 | if test "${ac_cv_lib_ucb_getpagesize+set}" = set; then |
7909 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 8453 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -7911,7 +8455,7 @@ else | |||
7911 | ac_check_lib_save_LIBS=$LIBS | 8455 | ac_check_lib_save_LIBS=$LIBS |
7912 | LIBS="-lucb $LIBS" | 8456 | LIBS="-lucb $LIBS" |
7913 | cat >conftest.$ac_ext <<_ACEOF | 8457 | cat >conftest.$ac_ext <<_ACEOF |
7914 | #line 7914 "configure" | 8458 | #line 8458 "configure" |
7915 | #include "confdefs.h" | 8459 | #include "confdefs.h" |
7916 | 8460 | ||
7917 | /* Override any gcc2 internal prototype to avoid an error. */ | 8461 | /* Override any gcc2 internal prototype to avoid an error. */ |
@@ -7930,16 +8474,16 @@ getpagesize (); | |||
7930 | } | 8474 | } |
7931 | _ACEOF | 8475 | _ACEOF |
7932 | rm -f conftest.$ac_objext conftest$ac_exeext | 8476 | rm -f conftest.$ac_objext conftest$ac_exeext |
7933 | if { (eval echo "$as_me:7933: \"$ac_link\"") >&5 | 8477 | if { (eval echo "$as_me:8477: \"$ac_link\"") >&5 |
7934 | (eval $ac_link) 2>&5 | 8478 | (eval $ac_link) 2>&5 |
7935 | ac_status=$? | 8479 | ac_status=$? |
7936 | echo "$as_me:7936: \$? = $ac_status" >&5 | 8480 | echo "$as_me:8480: \$? = $ac_status" >&5 |
7937 | (exit $ac_status); } && | 8481 | (exit $ac_status); } && |
7938 | { ac_try='test -s conftest$ac_exeext' | 8482 | { ac_try='test -s conftest$ac_exeext' |
7939 | { (eval echo "$as_me:7939: \"$ac_try\"") >&5 | 8483 | { (eval echo "$as_me:8483: \"$ac_try\"") >&5 |
7940 | (eval $ac_try) 2>&5 | 8484 | (eval $ac_try) 2>&5 |
7941 | ac_status=$? | 8485 | ac_status=$? |
7942 | echo "$as_me:7942: \$? = $ac_status" >&5 | 8486 | echo "$as_me:8486: \$? = $ac_status" >&5 |
7943 | (exit $ac_status); }; }; then | 8487 | (exit $ac_status); }; }; then |
7944 | ac_cv_lib_ucb_getpagesize=yes | 8488 | ac_cv_lib_ucb_getpagesize=yes |
7945 | else | 8489 | else |
@@ -7950,7 +8494,7 @@ fi | |||
7950 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 8494 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
7951 | LIBS=$ac_check_lib_save_LIBS | 8495 | LIBS=$ac_check_lib_save_LIBS |
7952 | fi | 8496 | fi |
7953 | echo "$as_me:7953: result: $ac_cv_lib_ucb_getpagesize" >&5 | 8497 | echo "$as_me:8497: result: $ac_cv_lib_ucb_getpagesize" >&5 |
7954 | echo "${ECHO_T}$ac_cv_lib_ucb_getpagesize" >&6 | 8498 | echo "${ECHO_T}$ac_cv_lib_ucb_getpagesize" >&6 |
7955 | if test $ac_cv_lib_ucb_getpagesize = yes; then | 8499 | if test $ac_cv_lib_ucb_getpagesize = yes; then |
7956 | LIBS="$LIBS -lucb"; cat >>confdefs.h <<\EOF | 8500 | LIBS="$LIBS -lucb"; cat >>confdefs.h <<\EOF |
@@ -7963,15 +8507,15 @@ fi | |||
7963 | 8507 | ||
7964 | # Check for broken snprintf | 8508 | # Check for broken snprintf |
7965 | if test "x$ac_cv_func_snprintf" = "xyes" ; then | 8509 | if test "x$ac_cv_func_snprintf" = "xyes" ; then |
7966 | echo "$as_me:7966: checking whether snprintf correctly terminates long strings" >&5 | 8510 | echo "$as_me:8510: checking whether snprintf correctly terminates long strings" >&5 |
7967 | echo $ECHO_N "checking whether snprintf correctly terminates long strings... $ECHO_C" >&6 | 8511 | echo $ECHO_N "checking whether snprintf correctly terminates long strings... $ECHO_C" >&6 |
7968 | if test "$cross_compiling" = yes; then | 8512 | if test "$cross_compiling" = yes; then |
7969 | { { echo "$as_me:7969: error: cannot run test program while cross compiling" >&5 | 8513 | { { echo "$as_me:8513: error: cannot run test program while cross compiling" >&5 |
7970 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} | 8514 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} |
7971 | { (exit 1); exit 1; }; } | 8515 | { (exit 1); exit 1; }; } |
7972 | else | 8516 | else |
7973 | cat >conftest.$ac_ext <<_ACEOF | 8517 | cat >conftest.$ac_ext <<_ACEOF |
7974 | #line 7974 "configure" | 8518 | #line 8518 "configure" |
7975 | #include "confdefs.h" | 8519 | #include "confdefs.h" |
7976 | 8520 | ||
7977 | #include <stdio.h> | 8521 | #include <stdio.h> |
@@ -7979,30 +8523,30 @@ int main(void){char b[5];snprintf(b,5,"123456789");exit(b[4]!='\0');} | |||
7979 | 8523 | ||
7980 | _ACEOF | 8524 | _ACEOF |
7981 | rm -f conftest$ac_exeext | 8525 | rm -f conftest$ac_exeext |
7982 | if { (eval echo "$as_me:7982: \"$ac_link\"") >&5 | 8526 | if { (eval echo "$as_me:8526: \"$ac_link\"") >&5 |
7983 | (eval $ac_link) 2>&5 | 8527 | (eval $ac_link) 2>&5 |
7984 | ac_status=$? | 8528 | ac_status=$? |
7985 | echo "$as_me:7985: \$? = $ac_status" >&5 | 8529 | echo "$as_me:8529: \$? = $ac_status" >&5 |
7986 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' | 8530 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' |
7987 | { (eval echo "$as_me:7987: \"$ac_try\"") >&5 | 8531 | { (eval echo "$as_me:8531: \"$ac_try\"") >&5 |
7988 | (eval $ac_try) 2>&5 | 8532 | (eval $ac_try) 2>&5 |
7989 | ac_status=$? | 8533 | ac_status=$? |
7990 | echo "$as_me:7990: \$? = $ac_status" >&5 | 8534 | echo "$as_me:8534: \$? = $ac_status" >&5 |
7991 | (exit $ac_status); }; }; then | 8535 | (exit $ac_status); }; }; then |
7992 | echo "$as_me:7992: result: yes" >&5 | 8536 | echo "$as_me:8536: result: yes" >&5 |
7993 | echo "${ECHO_T}yes" >&6 | 8537 | echo "${ECHO_T}yes" >&6 |
7994 | else | 8538 | else |
7995 | echo "$as_me: program exited with status $ac_status" >&5 | 8539 | echo "$as_me: program exited with status $ac_status" >&5 |
7996 | echo "$as_me: failed program was:" >&5 | 8540 | echo "$as_me: failed program was:" >&5 |
7997 | cat conftest.$ac_ext >&5 | 8541 | cat conftest.$ac_ext >&5 |
7998 | 8542 | ||
7999 | echo "$as_me:7999: result: no" >&5 | 8543 | echo "$as_me:8543: result: no" >&5 |
8000 | echo "${ECHO_T}no" >&6 | 8544 | echo "${ECHO_T}no" >&6 |
8001 | cat >>confdefs.h <<\EOF | 8545 | cat >>confdefs.h <<\EOF |
8002 | #define BROKEN_SNPRINTF 1 | 8546 | #define BROKEN_SNPRINTF 1 |
8003 | EOF | 8547 | EOF |
8004 | 8548 | ||
8005 | { echo "$as_me:8005: WARNING: ****** Your snprintf() function is broken, complain to your vendor" >&5 | 8549 | { echo "$as_me:8549: WARNING: ****** Your snprintf() function is broken, complain to your vendor" >&5 |
8006 | echo "$as_me: WARNING: ****** Your snprintf() function is broken, complain to your vendor" >&2;} | 8550 | echo "$as_me: WARNING: ****** Your snprintf() function is broken, complain to your vendor" >&2;} |
8007 | 8551 | ||
8008 | fi | 8552 | fi |
@@ -8011,11 +8555,11 @@ fi | |||
8011 | fi | 8555 | fi |
8012 | 8556 | ||
8013 | if test "x$ac_cv_func_mkdtemp" = "xyes" ; then | 8557 | if test "x$ac_cv_func_mkdtemp" = "xyes" ; then |
8014 | echo "$as_me:8014: checking for (overly) strict mkstemp" >&5 | 8558 | echo "$as_me:8558: checking for (overly) strict mkstemp" >&5 |
8015 | echo $ECHO_N "checking for (overly) strict mkstemp... $ECHO_C" >&6 | 8559 | echo $ECHO_N "checking for (overly) strict mkstemp... $ECHO_C" >&6 |
8016 | if test "$cross_compiling" = yes; then | 8560 | if test "$cross_compiling" = yes; then |
8017 | 8561 | ||
8018 | echo "$as_me:8018: result: yes" >&5 | 8562 | echo "$as_me:8562: result: yes" >&5 |
8019 | echo "${ECHO_T}yes" >&6 | 8563 | echo "${ECHO_T}yes" >&6 |
8020 | cat >>confdefs.h <<\EOF | 8564 | cat >>confdefs.h <<\EOF |
8021 | #define HAVE_STRICT_MKSTEMP 1 | 8565 | #define HAVE_STRICT_MKSTEMP 1 |
@@ -8023,7 +8567,7 @@ EOF | |||
8023 | 8567 | ||
8024 | else | 8568 | else |
8025 | cat >conftest.$ac_ext <<_ACEOF | 8569 | cat >conftest.$ac_ext <<_ACEOF |
8026 | #line 8026 "configure" | 8570 | #line 8570 "configure" |
8027 | #include "confdefs.h" | 8571 | #include "confdefs.h" |
8028 | 8572 | ||
8029 | #include <stdlib.h> | 8573 | #include <stdlib.h> |
@@ -8035,18 +8579,18 @@ unlink(template); exit(0); | |||
8035 | 8579 | ||
8036 | _ACEOF | 8580 | _ACEOF |
8037 | rm -f conftest$ac_exeext | 8581 | rm -f conftest$ac_exeext |
8038 | if { (eval echo "$as_me:8038: \"$ac_link\"") >&5 | 8582 | if { (eval echo "$as_me:8582: \"$ac_link\"") >&5 |
8039 | (eval $ac_link) 2>&5 | 8583 | (eval $ac_link) 2>&5 |
8040 | ac_status=$? | 8584 | ac_status=$? |
8041 | echo "$as_me:8041: \$? = $ac_status" >&5 | 8585 | echo "$as_me:8585: \$? = $ac_status" >&5 |
8042 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' | 8586 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' |
8043 | { (eval echo "$as_me:8043: \"$ac_try\"") >&5 | 8587 | { (eval echo "$as_me:8587: \"$ac_try\"") >&5 |
8044 | (eval $ac_try) 2>&5 | 8588 | (eval $ac_try) 2>&5 |
8045 | ac_status=$? | 8589 | ac_status=$? |
8046 | echo "$as_me:8046: \$? = $ac_status" >&5 | 8590 | echo "$as_me:8590: \$? = $ac_status" >&5 |
8047 | (exit $ac_status); }; }; then | 8591 | (exit $ac_status); }; }; then |
8048 | 8592 | ||
8049 | echo "$as_me:8049: result: no" >&5 | 8593 | echo "$as_me:8593: result: no" >&5 |
8050 | echo "${ECHO_T}no" >&6 | 8594 | echo "${ECHO_T}no" >&6 |
8051 | 8595 | ||
8052 | else | 8596 | else |
@@ -8054,7 +8598,7 @@ else | |||
8054 | echo "$as_me: failed program was:" >&5 | 8598 | echo "$as_me: failed program was:" >&5 |
8055 | cat conftest.$ac_ext >&5 | 8599 | cat conftest.$ac_ext >&5 |
8056 | 8600 | ||
8057 | echo "$as_me:8057: result: yes" >&5 | 8601 | echo "$as_me:8601: result: yes" >&5 |
8058 | echo "${ECHO_T}yes" >&6 | 8602 | echo "${ECHO_T}yes" >&6 |
8059 | cat >>confdefs.h <<\EOF | 8603 | cat >>confdefs.h <<\EOF |
8060 | #define HAVE_STRICT_MKSTEMP 1 | 8604 | #define HAVE_STRICT_MKSTEMP 1 |
@@ -8066,15 +8610,15 @@ fi | |||
8066 | fi | 8610 | fi |
8067 | 8611 | ||
8068 | if test ! -z "$check_for_openpty_ctty_bug"; then | 8612 | if test ! -z "$check_for_openpty_ctty_bug"; then |
8069 | echo "$as_me:8069: checking if openpty correctly handles controlling tty" >&5 | 8613 | echo "$as_me:8613: checking if openpty correctly handles controlling tty" >&5 |
8070 | echo $ECHO_N "checking if openpty correctly handles controlling tty... $ECHO_C" >&6 | 8614 | echo $ECHO_N "checking if openpty correctly handles controlling tty... $ECHO_C" >&6 |
8071 | if test "$cross_compiling" = yes; then | 8615 | if test "$cross_compiling" = yes; then |
8072 | { { echo "$as_me:8072: error: cannot run test program while cross compiling" >&5 | 8616 | { { echo "$as_me:8616: error: cannot run test program while cross compiling" >&5 |
8073 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} | 8617 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} |
8074 | { (exit 1); exit 1; }; } | 8618 | { (exit 1); exit 1; }; } |
8075 | else | 8619 | else |
8076 | cat >conftest.$ac_ext <<_ACEOF | 8620 | cat >conftest.$ac_ext <<_ACEOF |
8077 | #line 8077 "configure" | 8621 | #line 8621 "configure" |
8078 | #include "confdefs.h" | 8622 | #include "confdefs.h" |
8079 | 8623 | ||
8080 | #include <stdio.h> | 8624 | #include <stdio.h> |
@@ -8111,18 +8655,18 @@ main() | |||
8111 | 8655 | ||
8112 | _ACEOF | 8656 | _ACEOF |
8113 | rm -f conftest$ac_exeext | 8657 | rm -f conftest$ac_exeext |
8114 | if { (eval echo "$as_me:8114: \"$ac_link\"") >&5 | 8658 | if { (eval echo "$as_me:8658: \"$ac_link\"") >&5 |
8115 | (eval $ac_link) 2>&5 | 8659 | (eval $ac_link) 2>&5 |
8116 | ac_status=$? | 8660 | ac_status=$? |
8117 | echo "$as_me:8117: \$? = $ac_status" >&5 | 8661 | echo "$as_me:8661: \$? = $ac_status" >&5 |
8118 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' | 8662 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' |
8119 | { (eval echo "$as_me:8119: \"$ac_try\"") >&5 | 8663 | { (eval echo "$as_me:8663: \"$ac_try\"") >&5 |
8120 | (eval $ac_try) 2>&5 | 8664 | (eval $ac_try) 2>&5 |
8121 | ac_status=$? | 8665 | ac_status=$? |
8122 | echo "$as_me:8122: \$? = $ac_status" >&5 | 8666 | echo "$as_me:8666: \$? = $ac_status" >&5 |
8123 | (exit $ac_status); }; }; then | 8667 | (exit $ac_status); }; }; then |
8124 | 8668 | ||
8125 | echo "$as_me:8125: result: yes" >&5 | 8669 | echo "$as_me:8669: result: yes" >&5 |
8126 | echo "${ECHO_T}yes" >&6 | 8670 | echo "${ECHO_T}yes" >&6 |
8127 | 8671 | ||
8128 | else | 8672 | else |
@@ -8130,7 +8674,7 @@ else | |||
8130 | echo "$as_me: failed program was:" >&5 | 8674 | echo "$as_me: failed program was:" >&5 |
8131 | cat conftest.$ac_ext >&5 | 8675 | cat conftest.$ac_ext >&5 |
8132 | 8676 | ||
8133 | echo "$as_me:8133: result: no" >&5 | 8677 | echo "$as_me:8677: result: no" >&5 |
8134 | echo "${ECHO_T}no" >&6 | 8678 | echo "${ECHO_T}no" >&6 |
8135 | cat >>confdefs.h <<\EOF | 8679 | cat >>confdefs.h <<\EOF |
8136 | #define SSHD_ACQUIRES_CTTY 1 | 8680 | #define SSHD_ACQUIRES_CTTY 1 |
@@ -8141,14 +8685,14 @@ rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext | |||
8141 | fi | 8685 | fi |
8142 | fi | 8686 | fi |
8143 | 8687 | ||
8144 | echo "$as_me:8144: checking whether getpgrp takes no argument" >&5 | 8688 | echo "$as_me:8688: checking whether getpgrp takes no argument" >&5 |
8145 | echo $ECHO_N "checking whether getpgrp takes no argument... $ECHO_C" >&6 | 8689 | echo $ECHO_N "checking whether getpgrp takes no argument... $ECHO_C" >&6 |
8146 | if test "${ac_cv_func_getpgrp_void+set}" = set; then | 8690 | if test "${ac_cv_func_getpgrp_void+set}" = set; then |
8147 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 8691 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
8148 | else | 8692 | else |
8149 | # Use it with a single arg. | 8693 | # Use it with a single arg. |
8150 | cat >conftest.$ac_ext <<_ACEOF | 8694 | cat >conftest.$ac_ext <<_ACEOF |
8151 | #line 8151 "configure" | 8695 | #line 8695 "configure" |
8152 | #include "confdefs.h" | 8696 | #include "confdefs.h" |
8153 | $ac_includes_default | 8697 | $ac_includes_default |
8154 | int | 8698 | int |
@@ -8160,16 +8704,16 @@ getpgrp (0); | |||
8160 | } | 8704 | } |
8161 | _ACEOF | 8705 | _ACEOF |
8162 | rm -f conftest.$ac_objext | 8706 | rm -f conftest.$ac_objext |
8163 | if { (eval echo "$as_me:8163: \"$ac_compile\"") >&5 | 8707 | if { (eval echo "$as_me:8707: \"$ac_compile\"") >&5 |
8164 | (eval $ac_compile) 2>&5 | 8708 | (eval $ac_compile) 2>&5 |
8165 | ac_status=$? | 8709 | ac_status=$? |
8166 | echo "$as_me:8166: \$? = $ac_status" >&5 | 8710 | echo "$as_me:8710: \$? = $ac_status" >&5 |
8167 | (exit $ac_status); } && | 8711 | (exit $ac_status); } && |
8168 | { ac_try='test -s conftest.$ac_objext' | 8712 | { ac_try='test -s conftest.$ac_objext' |
8169 | { (eval echo "$as_me:8169: \"$ac_try\"") >&5 | 8713 | { (eval echo "$as_me:8713: \"$ac_try\"") >&5 |
8170 | (eval $ac_try) 2>&5 | 8714 | (eval $ac_try) 2>&5 |
8171 | ac_status=$? | 8715 | ac_status=$? |
8172 | echo "$as_me:8172: \$? = $ac_status" >&5 | 8716 | echo "$as_me:8716: \$? = $ac_status" >&5 |
8173 | (exit $ac_status); }; }; then | 8717 | (exit $ac_status); }; }; then |
8174 | ac_func_getpgrp_1=yes | 8718 | ac_func_getpgrp_1=yes |
8175 | else | 8719 | else |
@@ -8180,7 +8724,7 @@ fi | |||
8180 | rm -f conftest.$ac_objext conftest.$ac_ext | 8724 | rm -f conftest.$ac_objext conftest.$ac_ext |
8181 | # Use it with no arg. | 8725 | # Use it with no arg. |
8182 | cat >conftest.$ac_ext <<_ACEOF | 8726 | cat >conftest.$ac_ext <<_ACEOF |
8183 | #line 8183 "configure" | 8727 | #line 8727 "configure" |
8184 | #include "confdefs.h" | 8728 | #include "confdefs.h" |
8185 | $ac_includes_default | 8729 | $ac_includes_default |
8186 | int | 8730 | int |
@@ -8192,16 +8736,16 @@ getpgrp (); | |||
8192 | } | 8736 | } |
8193 | _ACEOF | 8737 | _ACEOF |
8194 | rm -f conftest.$ac_objext | 8738 | rm -f conftest.$ac_objext |
8195 | if { (eval echo "$as_me:8195: \"$ac_compile\"") >&5 | 8739 | if { (eval echo "$as_me:8739: \"$ac_compile\"") >&5 |
8196 | (eval $ac_compile) 2>&5 | 8740 | (eval $ac_compile) 2>&5 |
8197 | ac_status=$? | 8741 | ac_status=$? |
8198 | echo "$as_me:8198: \$? = $ac_status" >&5 | 8742 | echo "$as_me:8742: \$? = $ac_status" >&5 |
8199 | (exit $ac_status); } && | 8743 | (exit $ac_status); } && |
8200 | { ac_try='test -s conftest.$ac_objext' | 8744 | { ac_try='test -s conftest.$ac_objext' |
8201 | { (eval echo "$as_me:8201: \"$ac_try\"") >&5 | 8745 | { (eval echo "$as_me:8745: \"$ac_try\"") >&5 |
8202 | (eval $ac_try) 2>&5 | 8746 | (eval $ac_try) 2>&5 |
8203 | ac_status=$? | 8747 | ac_status=$? |
8204 | echo "$as_me:8204: \$? = $ac_status" >&5 | 8748 | echo "$as_me:8748: \$? = $ac_status" >&5 |
8205 | (exit $ac_status); }; }; then | 8749 | (exit $ac_status); }; }; then |
8206 | ac_func_getpgrp_0=yes | 8750 | ac_func_getpgrp_0=yes |
8207 | else | 8751 | else |
@@ -8215,12 +8759,12 @@ case $ac_func_getpgrp_0:$ac_func_getpgrp_1 in | |||
8215 | yes:no) ac_cv_func_getpgrp_void=yes;; | 8759 | yes:no) ac_cv_func_getpgrp_void=yes;; |
8216 | no:yes) ac_cv_func_getpgrp_void=false;; | 8760 | no:yes) ac_cv_func_getpgrp_void=false;; |
8217 | *) if test "$cross_compiling" = yes; then | 8761 | *) if test "$cross_compiling" = yes; then |
8218 | { { echo "$as_me:8218: error: cannot check getpgrp if cross compiling" >&5 | 8762 | { { echo "$as_me:8762: error: cannot check getpgrp if cross compiling" >&5 |
8219 | echo "$as_me: error: cannot check getpgrp if cross compiling" >&2;} | 8763 | echo "$as_me: error: cannot check getpgrp if cross compiling" >&2;} |
8220 | { (exit 1); exit 1; }; } | 8764 | { (exit 1); exit 1; }; } |
8221 | else | 8765 | else |
8222 | cat >conftest.$ac_ext <<_ACEOF | 8766 | cat >conftest.$ac_ext <<_ACEOF |
8223 | #line 8223 "configure" | 8767 | #line 8767 "configure" |
8224 | #include "confdefs.h" | 8768 | #include "confdefs.h" |
8225 | $ac_includes_default | 8769 | $ac_includes_default |
8226 | 8770 | ||
@@ -8274,15 +8818,15 @@ main () | |||
8274 | 8818 | ||
8275 | _ACEOF | 8819 | _ACEOF |
8276 | rm -f conftest$ac_exeext | 8820 | rm -f conftest$ac_exeext |
8277 | if { (eval echo "$as_me:8277: \"$ac_link\"") >&5 | 8821 | if { (eval echo "$as_me:8821: \"$ac_link\"") >&5 |
8278 | (eval $ac_link) 2>&5 | 8822 | (eval $ac_link) 2>&5 |
8279 | ac_status=$? | 8823 | ac_status=$? |
8280 | echo "$as_me:8280: \$? = $ac_status" >&5 | 8824 | echo "$as_me:8824: \$? = $ac_status" >&5 |
8281 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' | 8825 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' |
8282 | { (eval echo "$as_me:8282: \"$ac_try\"") >&5 | 8826 | { (eval echo "$as_me:8826: \"$ac_try\"") >&5 |
8283 | (eval $ac_try) 2>&5 | 8827 | (eval $ac_try) 2>&5 |
8284 | ac_status=$? | 8828 | ac_status=$? |
8285 | echo "$as_me:8285: \$? = $ac_status" >&5 | 8829 | echo "$as_me:8829: \$? = $ac_status" >&5 |
8286 | (exit $ac_status); }; }; then | 8830 | (exit $ac_status); }; }; then |
8287 | ac_cv_func_getpgrp_void=yes | 8831 | ac_cv_func_getpgrp_void=yes |
8288 | else | 8832 | else |
@@ -8296,7 +8840,7 @@ fi;; | |||
8296 | esac # $ac_func_getpgrp_0:$ac_func_getpgrp_1 | 8840 | esac # $ac_func_getpgrp_0:$ac_func_getpgrp_1 |
8297 | 8841 | ||
8298 | fi | 8842 | fi |
8299 | echo "$as_me:8299: result: $ac_cv_func_getpgrp_void" >&5 | 8843 | echo "$as_me:8843: result: $ac_cv_func_getpgrp_void" >&5 |
8300 | echo "${ECHO_T}$ac_cv_func_getpgrp_void" >&6 | 8844 | echo "${ECHO_T}$ac_cv_func_getpgrp_void" >&6 |
8301 | if test $ac_cv_func_getpgrp_void = yes; then | 8845 | if test $ac_cv_func_getpgrp_void = yes; then |
8302 | 8846 | ||
@@ -8314,13 +8858,14 @@ if test "${with_pam+set}" = set; then | |||
8314 | withval="$with_pam" | 8858 | withval="$with_pam" |
8315 | 8859 | ||
8316 | if test "x$withval" != "xno" ; then | 8860 | if test "x$withval" != "xno" ; then |
8317 | if test "x$ac_cv_header_security_pam_appl_h" != "xyes" ; then | 8861 | if test "x$ac_cv_header_security_pam_appl_h" != "xyes" && \ |
8318 | { { echo "$as_me:8318: error: PAM headers not found" >&5 | 8862 | test "x$ac_cv_header_pam_pam_appl_h" != "xyes" ; then |
8863 | { { echo "$as_me:8863: error: PAM headers not found" >&5 | ||
8319 | echo "$as_me: error: PAM headers not found" >&2;} | 8864 | echo "$as_me: error: PAM headers not found" >&2;} |
8320 | { (exit 1); exit 1; }; } | 8865 | { (exit 1); exit 1; }; } |
8321 | fi | 8866 | fi |
8322 | 8867 | ||
8323 | echo "$as_me:8323: checking for dlopen in -ldl" >&5 | 8868 | echo "$as_me:8868: checking for dlopen in -ldl" >&5 |
8324 | echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 | 8869 | echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 |
8325 | if test "${ac_cv_lib_dl_dlopen+set}" = set; then | 8870 | if test "${ac_cv_lib_dl_dlopen+set}" = set; then |
8326 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 8871 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -8328,7 +8873,7 @@ else | |||
8328 | ac_check_lib_save_LIBS=$LIBS | 8873 | ac_check_lib_save_LIBS=$LIBS |
8329 | LIBS="-ldl $LIBS" | 8874 | LIBS="-ldl $LIBS" |
8330 | cat >conftest.$ac_ext <<_ACEOF | 8875 | cat >conftest.$ac_ext <<_ACEOF |
8331 | #line 8331 "configure" | 8876 | #line 8876 "configure" |
8332 | #include "confdefs.h" | 8877 | #include "confdefs.h" |
8333 | 8878 | ||
8334 | /* Override any gcc2 internal prototype to avoid an error. */ | 8879 | /* Override any gcc2 internal prototype to avoid an error. */ |
@@ -8347,16 +8892,16 @@ dlopen (); | |||
8347 | } | 8892 | } |
8348 | _ACEOF | 8893 | _ACEOF |
8349 | rm -f conftest.$ac_objext conftest$ac_exeext | 8894 | rm -f conftest.$ac_objext conftest$ac_exeext |
8350 | if { (eval echo "$as_me:8350: \"$ac_link\"") >&5 | 8895 | if { (eval echo "$as_me:8895: \"$ac_link\"") >&5 |
8351 | (eval $ac_link) 2>&5 | 8896 | (eval $ac_link) 2>&5 |
8352 | ac_status=$? | 8897 | ac_status=$? |
8353 | echo "$as_me:8353: \$? = $ac_status" >&5 | 8898 | echo "$as_me:8898: \$? = $ac_status" >&5 |
8354 | (exit $ac_status); } && | 8899 | (exit $ac_status); } && |
8355 | { ac_try='test -s conftest$ac_exeext' | 8900 | { ac_try='test -s conftest$ac_exeext' |
8356 | { (eval echo "$as_me:8356: \"$ac_try\"") >&5 | 8901 | { (eval echo "$as_me:8901: \"$ac_try\"") >&5 |
8357 | (eval $ac_try) 2>&5 | 8902 | (eval $ac_try) 2>&5 |
8358 | ac_status=$? | 8903 | ac_status=$? |
8359 | echo "$as_me:8359: \$? = $ac_status" >&5 | 8904 | echo "$as_me:8904: \$? = $ac_status" >&5 |
8360 | (exit $ac_status); }; }; then | 8905 | (exit $ac_status); }; }; then |
8361 | ac_cv_lib_dl_dlopen=yes | 8906 | ac_cv_lib_dl_dlopen=yes |
8362 | else | 8907 | else |
@@ -8367,7 +8912,7 @@ fi | |||
8367 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 8912 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
8368 | LIBS=$ac_check_lib_save_LIBS | 8913 | LIBS=$ac_check_lib_save_LIBS |
8369 | fi | 8914 | fi |
8370 | echo "$as_me:8370: result: $ac_cv_lib_dl_dlopen" >&5 | 8915 | echo "$as_me:8915: result: $ac_cv_lib_dl_dlopen" >&5 |
8371 | echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 | 8916 | echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 |
8372 | if test $ac_cv_lib_dl_dlopen = yes; then | 8917 | if test $ac_cv_lib_dl_dlopen = yes; then |
8373 | cat >>confdefs.h <<EOF | 8918 | cat >>confdefs.h <<EOF |
@@ -8378,7 +8923,7 @@ EOF | |||
8378 | 8923 | ||
8379 | fi | 8924 | fi |
8380 | 8925 | ||
8381 | echo "$as_me:8381: checking for pam_set_item in -lpam" >&5 | 8926 | echo "$as_me:8926: checking for pam_set_item in -lpam" >&5 |
8382 | echo $ECHO_N "checking for pam_set_item in -lpam... $ECHO_C" >&6 | 8927 | echo $ECHO_N "checking for pam_set_item in -lpam... $ECHO_C" >&6 |
8383 | if test "${ac_cv_lib_pam_pam_set_item+set}" = set; then | 8928 | if test "${ac_cv_lib_pam_pam_set_item+set}" = set; then |
8384 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 8929 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -8386,7 +8931,7 @@ else | |||
8386 | ac_check_lib_save_LIBS=$LIBS | 8931 | ac_check_lib_save_LIBS=$LIBS |
8387 | LIBS="-lpam $LIBS" | 8932 | LIBS="-lpam $LIBS" |
8388 | cat >conftest.$ac_ext <<_ACEOF | 8933 | cat >conftest.$ac_ext <<_ACEOF |
8389 | #line 8389 "configure" | 8934 | #line 8934 "configure" |
8390 | #include "confdefs.h" | 8935 | #include "confdefs.h" |
8391 | 8936 | ||
8392 | /* Override any gcc2 internal prototype to avoid an error. */ | 8937 | /* Override any gcc2 internal prototype to avoid an error. */ |
@@ -8405,16 +8950,16 @@ pam_set_item (); | |||
8405 | } | 8950 | } |
8406 | _ACEOF | 8951 | _ACEOF |
8407 | rm -f conftest.$ac_objext conftest$ac_exeext | 8952 | rm -f conftest.$ac_objext conftest$ac_exeext |
8408 | if { (eval echo "$as_me:8408: \"$ac_link\"") >&5 | 8953 | if { (eval echo "$as_me:8953: \"$ac_link\"") >&5 |
8409 | (eval $ac_link) 2>&5 | 8954 | (eval $ac_link) 2>&5 |
8410 | ac_status=$? | 8955 | ac_status=$? |
8411 | echo "$as_me:8411: \$? = $ac_status" >&5 | 8956 | echo "$as_me:8956: \$? = $ac_status" >&5 |
8412 | (exit $ac_status); } && | 8957 | (exit $ac_status); } && |
8413 | { ac_try='test -s conftest$ac_exeext' | 8958 | { ac_try='test -s conftest$ac_exeext' |
8414 | { (eval echo "$as_me:8414: \"$ac_try\"") >&5 | 8959 | { (eval echo "$as_me:8959: \"$ac_try\"") >&5 |
8415 | (eval $ac_try) 2>&5 | 8960 | (eval $ac_try) 2>&5 |
8416 | ac_status=$? | 8961 | ac_status=$? |
8417 | echo "$as_me:8417: \$? = $ac_status" >&5 | 8962 | echo "$as_me:8962: \$? = $ac_status" >&5 |
8418 | (exit $ac_status); }; }; then | 8963 | (exit $ac_status); }; }; then |
8419 | ac_cv_lib_pam_pam_set_item=yes | 8964 | ac_cv_lib_pam_pam_set_item=yes |
8420 | else | 8965 | else |
@@ -8425,7 +8970,7 @@ fi | |||
8425 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 8970 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
8426 | LIBS=$ac_check_lib_save_LIBS | 8971 | LIBS=$ac_check_lib_save_LIBS |
8427 | fi | 8972 | fi |
8428 | echo "$as_me:8428: result: $ac_cv_lib_pam_pam_set_item" >&5 | 8973 | echo "$as_me:8973: result: $ac_cv_lib_pam_pam_set_item" >&5 |
8429 | echo "${ECHO_T}$ac_cv_lib_pam_pam_set_item" >&6 | 8974 | echo "${ECHO_T}$ac_cv_lib_pam_pam_set_item" >&6 |
8430 | if test $ac_cv_lib_pam_pam_set_item = yes; then | 8975 | if test $ac_cv_lib_pam_pam_set_item = yes; then |
8431 | cat >>confdefs.h <<EOF | 8976 | cat >>confdefs.h <<EOF |
@@ -8435,7 +8980,7 @@ EOF | |||
8435 | LIBS="-lpam $LIBS" | 8980 | LIBS="-lpam $LIBS" |
8436 | 8981 | ||
8437 | else | 8982 | else |
8438 | { { echo "$as_me:8438: error: *** libpam missing" >&5 | 8983 | { { echo "$as_me:8983: error: *** libpam missing" >&5 |
8439 | echo "$as_me: error: *** libpam missing" >&2;} | 8984 | echo "$as_me: error: *** libpam missing" >&2;} |
8440 | { (exit 1); exit 1; }; } | 8985 | { (exit 1); exit 1; }; } |
8441 | fi | 8986 | fi |
@@ -8443,13 +8988,13 @@ fi | |||
8443 | for ac_func in pam_getenvlist | 8988 | for ac_func in pam_getenvlist |
8444 | do | 8989 | do |
8445 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` | 8990 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` |
8446 | echo "$as_me:8446: checking for $ac_func" >&5 | 8991 | echo "$as_me:8991: checking for $ac_func" >&5 |
8447 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 | 8992 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 |
8448 | if eval "test \"\${$as_ac_var+set}\" = set"; then | 8993 | if eval "test \"\${$as_ac_var+set}\" = set"; then |
8449 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 8994 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
8450 | else | 8995 | else |
8451 | cat >conftest.$ac_ext <<_ACEOF | 8996 | cat >conftest.$ac_ext <<_ACEOF |
8452 | #line 8452 "configure" | 8997 | #line 8997 "configure" |
8453 | #include "confdefs.h" | 8998 | #include "confdefs.h" |
8454 | /* System header to define __stub macros and hopefully few prototypes, | 8999 | /* System header to define __stub macros and hopefully few prototypes, |
8455 | which can conflict with char $ac_func (); below. */ | 9000 | which can conflict with char $ac_func (); below. */ |
@@ -8480,16 +9025,16 @@ f = $ac_func; | |||
8480 | } | 9025 | } |
8481 | _ACEOF | 9026 | _ACEOF |
8482 | rm -f conftest.$ac_objext conftest$ac_exeext | 9027 | rm -f conftest.$ac_objext conftest$ac_exeext |
8483 | if { (eval echo "$as_me:8483: \"$ac_link\"") >&5 | 9028 | if { (eval echo "$as_me:9028: \"$ac_link\"") >&5 |
8484 | (eval $ac_link) 2>&5 | 9029 | (eval $ac_link) 2>&5 |
8485 | ac_status=$? | 9030 | ac_status=$? |
8486 | echo "$as_me:8486: \$? = $ac_status" >&5 | 9031 | echo "$as_me:9031: \$? = $ac_status" >&5 |
8487 | (exit $ac_status); } && | 9032 | (exit $ac_status); } && |
8488 | { ac_try='test -s conftest$ac_exeext' | 9033 | { ac_try='test -s conftest$ac_exeext' |
8489 | { (eval echo "$as_me:8489: \"$ac_try\"") >&5 | 9034 | { (eval echo "$as_me:9034: \"$ac_try\"") >&5 |
8490 | (eval $ac_try) 2>&5 | 9035 | (eval $ac_try) 2>&5 |
8491 | ac_status=$? | 9036 | ac_status=$? |
8492 | echo "$as_me:8492: \$? = $ac_status" >&5 | 9037 | echo "$as_me:9037: \$? = $ac_status" >&5 |
8493 | (exit $ac_status); }; }; then | 9038 | (exit $ac_status); }; }; then |
8494 | eval "$as_ac_var=yes" | 9039 | eval "$as_ac_var=yes" |
8495 | else | 9040 | else |
@@ -8499,7 +9044,7 @@ eval "$as_ac_var=no" | |||
8499 | fi | 9044 | fi |
8500 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 9045 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
8501 | fi | 9046 | fi |
8502 | echo "$as_me:8502: result: `eval echo '${'$as_ac_var'}'`" >&5 | 9047 | echo "$as_me:9047: result: `eval echo '${'$as_ac_var'}'`" >&5 |
8503 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 | 9048 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 |
8504 | if test `eval echo '${'$as_ac_var'}'` = yes; then | 9049 | if test `eval echo '${'$as_ac_var'}'` = yes; then |
8505 | cat >>confdefs.h <<EOF | 9050 | cat >>confdefs.h <<EOF |
@@ -8512,13 +9057,13 @@ done | |||
8512 | for ac_func in pam_putenv | 9057 | for ac_func in pam_putenv |
8513 | do | 9058 | do |
8514 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` | 9059 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` |
8515 | echo "$as_me:8515: checking for $ac_func" >&5 | 9060 | echo "$as_me:9060: checking for $ac_func" >&5 |
8516 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 | 9061 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 |
8517 | if eval "test \"\${$as_ac_var+set}\" = set"; then | 9062 | if eval "test \"\${$as_ac_var+set}\" = set"; then |
8518 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 9063 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
8519 | else | 9064 | else |
8520 | cat >conftest.$ac_ext <<_ACEOF | 9065 | cat >conftest.$ac_ext <<_ACEOF |
8521 | #line 8521 "configure" | 9066 | #line 9066 "configure" |
8522 | #include "confdefs.h" | 9067 | #include "confdefs.h" |
8523 | /* System header to define __stub macros and hopefully few prototypes, | 9068 | /* System header to define __stub macros and hopefully few prototypes, |
8524 | which can conflict with char $ac_func (); below. */ | 9069 | which can conflict with char $ac_func (); below. */ |
@@ -8549,16 +9094,16 @@ f = $ac_func; | |||
8549 | } | 9094 | } |
8550 | _ACEOF | 9095 | _ACEOF |
8551 | rm -f conftest.$ac_objext conftest$ac_exeext | 9096 | rm -f conftest.$ac_objext conftest$ac_exeext |
8552 | if { (eval echo "$as_me:8552: \"$ac_link\"") >&5 | 9097 | if { (eval echo "$as_me:9097: \"$ac_link\"") >&5 |
8553 | (eval $ac_link) 2>&5 | 9098 | (eval $ac_link) 2>&5 |
8554 | ac_status=$? | 9099 | ac_status=$? |
8555 | echo "$as_me:8555: \$? = $ac_status" >&5 | 9100 | echo "$as_me:9100: \$? = $ac_status" >&5 |
8556 | (exit $ac_status); } && | 9101 | (exit $ac_status); } && |
8557 | { ac_try='test -s conftest$ac_exeext' | 9102 | { ac_try='test -s conftest$ac_exeext' |
8558 | { (eval echo "$as_me:8558: \"$ac_try\"") >&5 | 9103 | { (eval echo "$as_me:9103: \"$ac_try\"") >&5 |
8559 | (eval $ac_try) 2>&5 | 9104 | (eval $ac_try) 2>&5 |
8560 | ac_status=$? | 9105 | ac_status=$? |
8561 | echo "$as_me:8561: \$? = $ac_status" >&5 | 9106 | echo "$as_me:9106: \$? = $ac_status" >&5 |
8562 | (exit $ac_status); }; }; then | 9107 | (exit $ac_status); }; }; then |
8563 | eval "$as_ac_var=yes" | 9108 | eval "$as_ac_var=yes" |
8564 | else | 9109 | else |
@@ -8568,7 +9113,7 @@ eval "$as_ac_var=no" | |||
8568 | fi | 9113 | fi |
8569 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 9114 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
8570 | fi | 9115 | fi |
8571 | echo "$as_me:8571: result: `eval echo '${'$as_ac_var'}'`" >&5 | 9116 | echo "$as_me:9116: result: `eval echo '${'$as_ac_var'}'`" >&5 |
8572 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 | 9117 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 |
8573 | if test `eval echo '${'$as_ac_var'}'` = yes; then | 9118 | if test `eval echo '${'$as_ac_var'}'` = yes; then |
8574 | cat >>confdefs.h <<EOF | 9119 | cat >>confdefs.h <<EOF |
@@ -8578,7 +9123,6 @@ EOF | |||
8578 | fi | 9123 | fi |
8579 | done | 9124 | done |
8580 | 9125 | ||
8581 | disable_shadow=yes | ||
8582 | PAM_MSG="yes" | 9126 | PAM_MSG="yes" |
8583 | 9127 | ||
8584 | cat >>confdefs.h <<\EOF | 9128 | cat >>confdefs.h <<\EOF |
@@ -8598,14 +9142,18 @@ fi; | |||
8598 | # Check for older PAM | 9142 | # Check for older PAM |
8599 | if test "x$PAM_MSG" = "xyes" ; then | 9143 | if test "x$PAM_MSG" = "xyes" ; then |
8600 | # Check PAM strerror arguments (old PAM) | 9144 | # Check PAM strerror arguments (old PAM) |
8601 | echo "$as_me:8601: checking whether pam_strerror takes only one argument" >&5 | 9145 | echo "$as_me:9145: checking whether pam_strerror takes only one argument" >&5 |
8602 | echo $ECHO_N "checking whether pam_strerror takes only one argument... $ECHO_C" >&6 | 9146 | echo $ECHO_N "checking whether pam_strerror takes only one argument... $ECHO_C" >&6 |
8603 | cat >conftest.$ac_ext <<_ACEOF | 9147 | cat >conftest.$ac_ext <<_ACEOF |
8604 | #line 8604 "configure" | 9148 | #line 9148 "configure" |
8605 | #include "confdefs.h" | 9149 | #include "confdefs.h" |
8606 | 9150 | ||
8607 | #include <stdlib.h> | 9151 | #include <stdlib.h> |
9152 | #if defined(HAVE_SECURITY_PAM_APPL_H) | ||
8608 | #include <security/pam_appl.h> | 9153 | #include <security/pam_appl.h> |
9154 | #elif defined (HAVE_PAM_PAM_APPL_H) | ||
9155 | #include <pam/pam_appl.h> | ||
9156 | #endif | ||
8609 | 9157 | ||
8610 | int | 9158 | int |
8611 | main () | 9159 | main () |
@@ -8616,18 +9164,18 @@ main () | |||
8616 | } | 9164 | } |
8617 | _ACEOF | 9165 | _ACEOF |
8618 | rm -f conftest.$ac_objext | 9166 | rm -f conftest.$ac_objext |
8619 | if { (eval echo "$as_me:8619: \"$ac_compile\"") >&5 | 9167 | if { (eval echo "$as_me:9167: \"$ac_compile\"") >&5 |
8620 | (eval $ac_compile) 2>&5 | 9168 | (eval $ac_compile) 2>&5 |
8621 | ac_status=$? | 9169 | ac_status=$? |
8622 | echo "$as_me:8622: \$? = $ac_status" >&5 | 9170 | echo "$as_me:9170: \$? = $ac_status" >&5 |
8623 | (exit $ac_status); } && | 9171 | (exit $ac_status); } && |
8624 | { ac_try='test -s conftest.$ac_objext' | 9172 | { ac_try='test -s conftest.$ac_objext' |
8625 | { (eval echo "$as_me:8625: \"$ac_try\"") >&5 | 9173 | { (eval echo "$as_me:9173: \"$ac_try\"") >&5 |
8626 | (eval $ac_try) 2>&5 | 9174 | (eval $ac_try) 2>&5 |
8627 | ac_status=$? | 9175 | ac_status=$? |
8628 | echo "$as_me:8628: \$? = $ac_status" >&5 | 9176 | echo "$as_me:9176: \$? = $ac_status" >&5 |
8629 | (exit $ac_status); }; }; then | 9177 | (exit $ac_status); }; }; then |
8630 | echo "$as_me:8630: result: no" >&5 | 9178 | echo "$as_me:9178: result: no" >&5 |
8631 | echo "${ECHO_T}no" >&6 | 9179 | echo "${ECHO_T}no" >&6 |
8632 | else | 9180 | else |
8633 | echo "$as_me: failed program was:" >&5 | 9181 | echo "$as_me: failed program was:" >&5 |
@@ -8637,7 +9185,7 @@ cat conftest.$ac_ext >&5 | |||
8637 | #define HAVE_OLD_PAM 1 | 9185 | #define HAVE_OLD_PAM 1 |
8638 | EOF | 9186 | EOF |
8639 | 9187 | ||
8640 | echo "$as_me:8640: result: yes" >&5 | 9188 | echo "$as_me:9188: result: yes" >&5 |
8641 | echo "${ECHO_T}yes" >&6 | 9189 | echo "${ECHO_T}yes" >&6 |
8642 | PAM_MSG="yes (old library)" | 9190 | PAM_MSG="yes (old library)" |
8643 | 9191 | ||
@@ -8645,70 +9193,6 @@ fi | |||
8645 | rm -f conftest.$ac_objext conftest.$ac_ext | 9193 | rm -f conftest.$ac_objext conftest.$ac_ext |
8646 | fi | 9194 | fi |
8647 | 9195 | ||
8648 | # Some systems want crypt() from libcrypt, *not* the version in OpenSSL, | ||
8649 | # because the system crypt() is more featureful. | ||
8650 | if test "x$check_for_libcrypt_before" = "x1"; then | ||
8651 | |||
8652 | echo "$as_me:8652: checking for crypt in -lcrypt" >&5 | ||
8653 | echo $ECHO_N "checking for crypt in -lcrypt... $ECHO_C" >&6 | ||
8654 | if test "${ac_cv_lib_crypt_crypt+set}" = set; then | ||
8655 | echo $ECHO_N "(cached) $ECHO_C" >&6 | ||
8656 | else | ||
8657 | ac_check_lib_save_LIBS=$LIBS | ||
8658 | LIBS="-lcrypt $LIBS" | ||
8659 | cat >conftest.$ac_ext <<_ACEOF | ||
8660 | #line 8660 "configure" | ||
8661 | #include "confdefs.h" | ||
8662 | |||
8663 | /* Override any gcc2 internal prototype to avoid an error. */ | ||
8664 | #ifdef __cplusplus | ||
8665 | extern "C" | ||
8666 | #endif | ||
8667 | /* We use char because int might match the return type of a gcc2 | ||
8668 | builtin and then its argument prototype would still apply. */ | ||
8669 | char crypt (); | ||
8670 | int | ||
8671 | main () | ||
8672 | { | ||
8673 | crypt (); | ||
8674 | ; | ||
8675 | return 0; | ||
8676 | } | ||
8677 | _ACEOF | ||
8678 | rm -f conftest.$ac_objext conftest$ac_exeext | ||
8679 | if { (eval echo "$as_me:8679: \"$ac_link\"") >&5 | ||
8680 | (eval $ac_link) 2>&5 | ||
8681 | ac_status=$? | ||
8682 | echo "$as_me:8682: \$? = $ac_status" >&5 | ||
8683 | (exit $ac_status); } && | ||
8684 | { ac_try='test -s conftest$ac_exeext' | ||
8685 | { (eval echo "$as_me:8685: \"$ac_try\"") >&5 | ||
8686 | (eval $ac_try) 2>&5 | ||
8687 | ac_status=$? | ||
8688 | echo "$as_me:8688: \$? = $ac_status" >&5 | ||
8689 | (exit $ac_status); }; }; then | ||
8690 | ac_cv_lib_crypt_crypt=yes | ||
8691 | else | ||
8692 | echo "$as_me: failed program was:" >&5 | ||
8693 | cat conftest.$ac_ext >&5 | ||
8694 | ac_cv_lib_crypt_crypt=no | ||
8695 | fi | ||
8696 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | ||
8697 | LIBS=$ac_check_lib_save_LIBS | ||
8698 | fi | ||
8699 | echo "$as_me:8699: result: $ac_cv_lib_crypt_crypt" >&5 | ||
8700 | echo "${ECHO_T}$ac_cv_lib_crypt_crypt" >&6 | ||
8701 | if test $ac_cv_lib_crypt_crypt = yes; then | ||
8702 | cat >>confdefs.h <<EOF | ||
8703 | #define HAVE_LIBCRYPT 1 | ||
8704 | EOF | ||
8705 | |||
8706 | LIBS="-lcrypt $LIBS" | ||
8707 | |||
8708 | fi | ||
8709 | |||
8710 | fi | ||
8711 | |||
8712 | # Search for OpenSSL | 9196 | # Search for OpenSSL |
8713 | saved_CPPFLAGS="$CPPFLAGS" | 9197 | saved_CPPFLAGS="$CPPFLAGS" |
8714 | saved_LDFLAGS="$LDFLAGS" | 9198 | saved_LDFLAGS="$LDFLAGS" |
@@ -8739,9 +9223,9 @@ if test "${with_ssl_dir+set}" = set; then | |||
8739 | fi | 9223 | fi |
8740 | 9224 | ||
8741 | fi; | 9225 | fi; |
8742 | LIBS="$LIBS -lcrypto" | 9226 | LIBS="-lcrypto $LIBS" |
8743 | cat >conftest.$ac_ext <<_ACEOF | 9227 | cat >conftest.$ac_ext <<_ACEOF |
8744 | #line 8744 "configure" | 9228 | #line 9228 "configure" |
8745 | #include "confdefs.h" | 9229 | #include "confdefs.h" |
8746 | 9230 | ||
8747 | /* Override any gcc2 internal prototype to avoid an error. */ | 9231 | /* Override any gcc2 internal prototype to avoid an error. */ |
@@ -8760,16 +9244,16 @@ RAND_add (); | |||
8760 | } | 9244 | } |
8761 | _ACEOF | 9245 | _ACEOF |
8762 | rm -f conftest.$ac_objext conftest$ac_exeext | 9246 | rm -f conftest.$ac_objext conftest$ac_exeext |
8763 | if { (eval echo "$as_me:8763: \"$ac_link\"") >&5 | 9247 | if { (eval echo "$as_me:9247: \"$ac_link\"") >&5 |
8764 | (eval $ac_link) 2>&5 | 9248 | (eval $ac_link) 2>&5 |
8765 | ac_status=$? | 9249 | ac_status=$? |
8766 | echo "$as_me:8766: \$? = $ac_status" >&5 | 9250 | echo "$as_me:9250: \$? = $ac_status" >&5 |
8767 | (exit $ac_status); } && | 9251 | (exit $ac_status); } && |
8768 | { ac_try='test -s conftest$ac_exeext' | 9252 | { ac_try='test -s conftest$ac_exeext' |
8769 | { (eval echo "$as_me:8769: \"$ac_try\"") >&5 | 9253 | { (eval echo "$as_me:9253: \"$ac_try\"") >&5 |
8770 | (eval $ac_try) 2>&5 | 9254 | (eval $ac_try) 2>&5 |
8771 | ac_status=$? | 9255 | ac_status=$? |
8772 | echo "$as_me:8772: \$? = $ac_status" >&5 | 9256 | echo "$as_me:9256: \$? = $ac_status" >&5 |
8773 | (exit $ac_status); }; }; then | 9257 | (exit $ac_status); }; }; then |
8774 | cat >>confdefs.h <<\EOF | 9258 | cat >>confdefs.h <<\EOF |
8775 | #define HAVE_OPENSSL 1 | 9259 | #define HAVE_OPENSSL 1 |
@@ -8786,7 +9270,7 @@ cat conftest.$ac_ext >&5 | |||
8786 | fi | 9270 | fi |
8787 | CPPFLAGS="-I/usr/local/ssl/include ${saved_CPPFLAGS}" | 9271 | CPPFLAGS="-I/usr/local/ssl/include ${saved_CPPFLAGS}" |
8788 | cat >conftest.$ac_ext <<_ACEOF | 9272 | cat >conftest.$ac_ext <<_ACEOF |
8789 | #line 8789 "configure" | 9273 | #line 9273 "configure" |
8790 | #include "confdefs.h" | 9274 | #include "confdefs.h" |
8791 | 9275 | ||
8792 | /* Override any gcc2 internal prototype to avoid an error. */ | 9276 | /* Override any gcc2 internal prototype to avoid an error. */ |
@@ -8805,16 +9289,16 @@ RAND_add (); | |||
8805 | } | 9289 | } |
8806 | _ACEOF | 9290 | _ACEOF |
8807 | rm -f conftest.$ac_objext conftest$ac_exeext | 9291 | rm -f conftest.$ac_objext conftest$ac_exeext |
8808 | if { (eval echo "$as_me:8808: \"$ac_link\"") >&5 | 9292 | if { (eval echo "$as_me:9292: \"$ac_link\"") >&5 |
8809 | (eval $ac_link) 2>&5 | 9293 | (eval $ac_link) 2>&5 |
8810 | ac_status=$? | 9294 | ac_status=$? |
8811 | echo "$as_me:8811: \$? = $ac_status" >&5 | 9295 | echo "$as_me:9295: \$? = $ac_status" >&5 |
8812 | (exit $ac_status); } && | 9296 | (exit $ac_status); } && |
8813 | { ac_try='test -s conftest$ac_exeext' | 9297 | { ac_try='test -s conftest$ac_exeext' |
8814 | { (eval echo "$as_me:8814: \"$ac_try\"") >&5 | 9298 | { (eval echo "$as_me:9298: \"$ac_try\"") >&5 |
8815 | (eval $ac_try) 2>&5 | 9299 | (eval $ac_try) 2>&5 |
8816 | ac_status=$? | 9300 | ac_status=$? |
8817 | echo "$as_me:8817: \$? = $ac_status" >&5 | 9301 | echo "$as_me:9301: \$? = $ac_status" >&5 |
8818 | (exit $ac_status); }; }; then | 9302 | (exit $ac_status); }; }; then |
8819 | cat >>confdefs.h <<\EOF | 9303 | cat >>confdefs.h <<\EOF |
8820 | #define HAVE_OPENSSL 1 | 9304 | #define HAVE_OPENSSL 1 |
@@ -8824,7 +9308,7 @@ else | |||
8824 | echo "$as_me: failed program was:" >&5 | 9308 | echo "$as_me: failed program was:" >&5 |
8825 | cat conftest.$ac_ext >&5 | 9309 | cat conftest.$ac_ext >&5 |
8826 | 9310 | ||
8827 | { { echo "$as_me:8827: error: *** Can't find recent OpenSSL libcrypto (see config.log for details) ***" >&5 | 9311 | { { echo "$as_me:9311: error: *** Can't find recent OpenSSL libcrypto (see config.log for details) ***" >&5 |
8828 | echo "$as_me: error: *** Can't find recent OpenSSL libcrypto (see config.log for details) ***" >&2;} | 9312 | echo "$as_me: error: *** Can't find recent OpenSSL libcrypto (see config.log for details) ***" >&2;} |
8829 | { (exit 1); exit 1; }; } | 9313 | { (exit 1); exit 1; }; } |
8830 | 9314 | ||
@@ -8835,15 +9319,15 @@ fi | |||
8835 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 9319 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
8836 | 9320 | ||
8837 | # Determine OpenSSL header version | 9321 | # Determine OpenSSL header version |
8838 | echo "$as_me:8838: checking OpenSSL header version" >&5 | 9322 | echo "$as_me:9322: checking OpenSSL header version" >&5 |
8839 | echo $ECHO_N "checking OpenSSL header version... $ECHO_C" >&6 | 9323 | echo $ECHO_N "checking OpenSSL header version... $ECHO_C" >&6 |
8840 | if test "$cross_compiling" = yes; then | 9324 | if test "$cross_compiling" = yes; then |
8841 | { { echo "$as_me:8841: error: cannot run test program while cross compiling" >&5 | 9325 | { { echo "$as_me:9325: error: cannot run test program while cross compiling" >&5 |
8842 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} | 9326 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} |
8843 | { (exit 1); exit 1; }; } | 9327 | { (exit 1); exit 1; }; } |
8844 | else | 9328 | else |
8845 | cat >conftest.$ac_ext <<_ACEOF | 9329 | cat >conftest.$ac_ext <<_ACEOF |
8846 | #line 8846 "configure" | 9330 | #line 9330 "configure" |
8847 | #include "confdefs.h" | 9331 | #include "confdefs.h" |
8848 | 9332 | ||
8849 | #include <stdio.h> | 9333 | #include <stdio.h> |
@@ -8851,12 +9335,12 @@ else | |||
8851 | #include <openssl/opensslv.h> | 9335 | #include <openssl/opensslv.h> |
8852 | #define DATA "conftest.sslincver" | 9336 | #define DATA "conftest.sslincver" |
8853 | int main(void) { | 9337 | int main(void) { |
8854 | FILE *fd; | 9338 | FILE *fd; |
8855 | int rc; | 9339 | int rc; |
8856 | 9340 | ||
8857 | fd = fopen(DATA,"w"); | 9341 | fd = fopen(DATA,"w"); |
8858 | if(fd == NULL) | 9342 | if(fd == NULL) |
8859 | exit(1); | 9343 | exit(1); |
8860 | 9344 | ||
8861 | if ((rc = fprintf(fd ,"%x (%s)\n", OPENSSL_VERSION_NUMBER, OPENSSL_VERSION_TEXT)) <0) | 9345 | if ((rc = fprintf(fd ,"%x (%s)\n", OPENSSL_VERSION_NUMBER, OPENSSL_VERSION_TEXT)) <0) |
8862 | exit(1); | 9346 | exit(1); |
@@ -8866,19 +9350,19 @@ int main(void) { | |||
8866 | 9350 | ||
8867 | _ACEOF | 9351 | _ACEOF |
8868 | rm -f conftest$ac_exeext | 9352 | rm -f conftest$ac_exeext |
8869 | if { (eval echo "$as_me:8869: \"$ac_link\"") >&5 | 9353 | if { (eval echo "$as_me:9353: \"$ac_link\"") >&5 |
8870 | (eval $ac_link) 2>&5 | 9354 | (eval $ac_link) 2>&5 |
8871 | ac_status=$? | 9355 | ac_status=$? |
8872 | echo "$as_me:8872: \$? = $ac_status" >&5 | 9356 | echo "$as_me:9356: \$? = $ac_status" >&5 |
8873 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' | 9357 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' |
8874 | { (eval echo "$as_me:8874: \"$ac_try\"") >&5 | 9358 | { (eval echo "$as_me:9358: \"$ac_try\"") >&5 |
8875 | (eval $ac_try) 2>&5 | 9359 | (eval $ac_try) 2>&5 |
8876 | ac_status=$? | 9360 | ac_status=$? |
8877 | echo "$as_me:8877: \$? = $ac_status" >&5 | 9361 | echo "$as_me:9361: \$? = $ac_status" >&5 |
8878 | (exit $ac_status); }; }; then | 9362 | (exit $ac_status); }; }; then |
8879 | 9363 | ||
8880 | ssl_header_ver=`cat conftest.sslincver` | 9364 | ssl_header_ver=`cat conftest.sslincver` |
8881 | echo "$as_me:8881: result: $ssl_header_ver" >&5 | 9365 | echo "$as_me:9365: result: $ssl_header_ver" >&5 |
8882 | echo "${ECHO_T}$ssl_header_ver" >&6 | 9366 | echo "${ECHO_T}$ssl_header_ver" >&6 |
8883 | 9367 | ||
8884 | else | 9368 | else |
@@ -8886,9 +9370,9 @@ else | |||
8886 | echo "$as_me: failed program was:" >&5 | 9370 | echo "$as_me: failed program was:" >&5 |
8887 | cat conftest.$ac_ext >&5 | 9371 | cat conftest.$ac_ext >&5 |
8888 | 9372 | ||
8889 | echo "$as_me:8889: result: not found" >&5 | 9373 | echo "$as_me:9373: result: not found" >&5 |
8890 | echo "${ECHO_T}not found" >&6 | 9374 | echo "${ECHO_T}not found" >&6 |
8891 | { { echo "$as_me:8891: error: OpenSSL version header not found." >&5 | 9375 | { { echo "$as_me:9375: error: OpenSSL version header not found." >&5 |
8892 | echo "$as_me: error: OpenSSL version header not found." >&2;} | 9376 | echo "$as_me: error: OpenSSL version header not found." >&2;} |
8893 | { (exit 1); exit 1; }; } | 9377 | { (exit 1); exit 1; }; } |
8894 | 9378 | ||
@@ -8897,15 +9381,15 @@ rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext | |||
8897 | fi | 9381 | fi |
8898 | 9382 | ||
8899 | # Determine OpenSSL library version | 9383 | # Determine OpenSSL library version |
8900 | echo "$as_me:8900: checking OpenSSL library version" >&5 | 9384 | echo "$as_me:9384: checking OpenSSL library version" >&5 |
8901 | echo $ECHO_N "checking OpenSSL library version... $ECHO_C" >&6 | 9385 | echo $ECHO_N "checking OpenSSL library version... $ECHO_C" >&6 |
8902 | if test "$cross_compiling" = yes; then | 9386 | if test "$cross_compiling" = yes; then |
8903 | { { echo "$as_me:8903: error: cannot run test program while cross compiling" >&5 | 9387 | { { echo "$as_me:9387: error: cannot run test program while cross compiling" >&5 |
8904 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} | 9388 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} |
8905 | { (exit 1); exit 1; }; } | 9389 | { (exit 1); exit 1; }; } |
8906 | else | 9390 | else |
8907 | cat >conftest.$ac_ext <<_ACEOF | 9391 | cat >conftest.$ac_ext <<_ACEOF |
8908 | #line 8908 "configure" | 9392 | #line 9392 "configure" |
8909 | #include "confdefs.h" | 9393 | #include "confdefs.h" |
8910 | 9394 | ||
8911 | #include <stdio.h> | 9395 | #include <stdio.h> |
@@ -8914,12 +9398,12 @@ else | |||
8914 | #include <openssl/crypto.h> | 9398 | #include <openssl/crypto.h> |
8915 | #define DATA "conftest.ssllibver" | 9399 | #define DATA "conftest.ssllibver" |
8916 | int main(void) { | 9400 | int main(void) { |
8917 | FILE *fd; | 9401 | FILE *fd; |
8918 | int rc; | 9402 | int rc; |
8919 | 9403 | ||
8920 | fd = fopen(DATA,"w"); | 9404 | fd = fopen(DATA,"w"); |
8921 | if(fd == NULL) | 9405 | if(fd == NULL) |
8922 | exit(1); | 9406 | exit(1); |
8923 | 9407 | ||
8924 | if ((rc = fprintf(fd ,"%x (%s)\n", SSLeay(), SSLeay_version(SSLEAY_VERSION))) <0) | 9408 | if ((rc = fprintf(fd ,"%x (%s)\n", SSLeay(), SSLeay_version(SSLEAY_VERSION))) <0) |
8925 | exit(1); | 9409 | exit(1); |
@@ -8929,19 +9413,19 @@ int main(void) { | |||
8929 | 9413 | ||
8930 | _ACEOF | 9414 | _ACEOF |
8931 | rm -f conftest$ac_exeext | 9415 | rm -f conftest$ac_exeext |
8932 | if { (eval echo "$as_me:8932: \"$ac_link\"") >&5 | 9416 | if { (eval echo "$as_me:9416: \"$ac_link\"") >&5 |
8933 | (eval $ac_link) 2>&5 | 9417 | (eval $ac_link) 2>&5 |
8934 | ac_status=$? | 9418 | ac_status=$? |
8935 | echo "$as_me:8935: \$? = $ac_status" >&5 | 9419 | echo "$as_me:9419: \$? = $ac_status" >&5 |
8936 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' | 9420 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' |
8937 | { (eval echo "$as_me:8937: \"$ac_try\"") >&5 | 9421 | { (eval echo "$as_me:9421: \"$ac_try\"") >&5 |
8938 | (eval $ac_try) 2>&5 | 9422 | (eval $ac_try) 2>&5 |
8939 | ac_status=$? | 9423 | ac_status=$? |
8940 | echo "$as_me:8940: \$? = $ac_status" >&5 | 9424 | echo "$as_me:9424: \$? = $ac_status" >&5 |
8941 | (exit $ac_status); }; }; then | 9425 | (exit $ac_status); }; }; then |
8942 | 9426 | ||
8943 | ssl_library_ver=`cat conftest.ssllibver` | 9427 | ssl_library_ver=`cat conftest.ssllibver` |
8944 | echo "$as_me:8944: result: $ssl_library_ver" >&5 | 9428 | echo "$as_me:9428: result: $ssl_library_ver" >&5 |
8945 | echo "${ECHO_T}$ssl_library_ver" >&6 | 9429 | echo "${ECHO_T}$ssl_library_ver" >&6 |
8946 | 9430 | ||
8947 | else | 9431 | else |
@@ -8949,9 +9433,9 @@ else | |||
8949 | echo "$as_me: failed program was:" >&5 | 9433 | echo "$as_me: failed program was:" >&5 |
8950 | cat conftest.$ac_ext >&5 | 9434 | cat conftest.$ac_ext >&5 |
8951 | 9435 | ||
8952 | echo "$as_me:8952: result: not found" >&5 | 9436 | echo "$as_me:9436: result: not found" >&5 |
8953 | echo "${ECHO_T}not found" >&6 | 9437 | echo "${ECHO_T}not found" >&6 |
8954 | { { echo "$as_me:8954: error: OpenSSL library not found." >&5 | 9438 | { { echo "$as_me:9438: error: OpenSSL library not found." >&5 |
8955 | echo "$as_me: error: OpenSSL library not found." >&2;} | 9439 | echo "$as_me: error: OpenSSL library not found." >&2;} |
8956 | { (exit 1); exit 1; }; } | 9440 | { (exit 1); exit 1; }; } |
8957 | 9441 | ||
@@ -8960,15 +9444,15 @@ rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext | |||
8960 | fi | 9444 | fi |
8961 | 9445 | ||
8962 | # Sanity check OpenSSL headers | 9446 | # Sanity check OpenSSL headers |
8963 | echo "$as_me:8963: checking whether OpenSSL's headers match the library" >&5 | 9447 | echo "$as_me:9447: checking whether OpenSSL's headers match the library" >&5 |
8964 | echo $ECHO_N "checking whether OpenSSL's headers match the library... $ECHO_C" >&6 | 9448 | echo $ECHO_N "checking whether OpenSSL's headers match the library... $ECHO_C" >&6 |
8965 | if test "$cross_compiling" = yes; then | 9449 | if test "$cross_compiling" = yes; then |
8966 | { { echo "$as_me:8966: error: cannot run test program while cross compiling" >&5 | 9450 | { { echo "$as_me:9450: error: cannot run test program while cross compiling" >&5 |
8967 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} | 9451 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} |
8968 | { (exit 1); exit 1; }; } | 9452 | { (exit 1); exit 1; }; } |
8969 | else | 9453 | else |
8970 | cat >conftest.$ac_ext <<_ACEOF | 9454 | cat >conftest.$ac_ext <<_ACEOF |
8971 | #line 8971 "configure" | 9455 | #line 9455 "configure" |
8972 | #include "confdefs.h" | 9456 | #include "confdefs.h" |
8973 | 9457 | ||
8974 | #include <string.h> | 9458 | #include <string.h> |
@@ -8977,18 +9461,18 @@ int main(void) { exit(SSLeay() == OPENSSL_VERSION_NUMBER ? 0 : 1); } | |||
8977 | 9461 | ||
8978 | _ACEOF | 9462 | _ACEOF |
8979 | rm -f conftest$ac_exeext | 9463 | rm -f conftest$ac_exeext |
8980 | if { (eval echo "$as_me:8980: \"$ac_link\"") >&5 | 9464 | if { (eval echo "$as_me:9464: \"$ac_link\"") >&5 |
8981 | (eval $ac_link) 2>&5 | 9465 | (eval $ac_link) 2>&5 |
8982 | ac_status=$? | 9466 | ac_status=$? |
8983 | echo "$as_me:8983: \$? = $ac_status" >&5 | 9467 | echo "$as_me:9467: \$? = $ac_status" >&5 |
8984 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' | 9468 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' |
8985 | { (eval echo "$as_me:8985: \"$ac_try\"") >&5 | 9469 | { (eval echo "$as_me:9469: \"$ac_try\"") >&5 |
8986 | (eval $ac_try) 2>&5 | 9470 | (eval $ac_try) 2>&5 |
8987 | ac_status=$? | 9471 | ac_status=$? |
8988 | echo "$as_me:8988: \$? = $ac_status" >&5 | 9472 | echo "$as_me:9472: \$? = $ac_status" >&5 |
8989 | (exit $ac_status); }; }; then | 9473 | (exit $ac_status); }; }; then |
8990 | 9474 | ||
8991 | echo "$as_me:8991: result: yes" >&5 | 9475 | echo "$as_me:9475: result: yes" >&5 |
8992 | echo "${ECHO_T}yes" >&6 | 9476 | echo "${ECHO_T}yes" >&6 |
8993 | 9477 | ||
8994 | else | 9478 | else |
@@ -8996,9 +9480,9 @@ else | |||
8996 | echo "$as_me: failed program was:" >&5 | 9480 | echo "$as_me: failed program was:" >&5 |
8997 | cat conftest.$ac_ext >&5 | 9481 | cat conftest.$ac_ext >&5 |
8998 | 9482 | ||
8999 | echo "$as_me:8999: result: no" >&5 | 9483 | echo "$as_me:9483: result: no" >&5 |
9000 | echo "${ECHO_T}no" >&6 | 9484 | echo "${ECHO_T}no" >&6 |
9001 | { { echo "$as_me:9001: error: Your OpenSSL headers do not match your library. | 9485 | { { echo "$as_me:9485: error: Your OpenSSL headers do not match your library. |
9002 | Check config.log for details. | 9486 | Check config.log for details. |
9003 | Also see contrib/findssl.sh for help identifying header/library mismatches." >&5 | 9487 | Also see contrib/findssl.sh for help identifying header/library mismatches." >&5 |
9004 | echo "$as_me: error: Your OpenSSL headers do not match your library. | 9488 | echo "$as_me: error: Your OpenSSL headers do not match your library. |
@@ -9010,10 +9494,74 @@ fi | |||
9010 | rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext | 9494 | rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext |
9011 | fi | 9495 | fi |
9012 | 9496 | ||
9497 | # Some systems want crypt() from libcrypt, *not* the version in OpenSSL, | ||
9498 | # because the system crypt() is more featureful. | ||
9499 | if test "x$check_for_libcrypt_before" = "x1"; then | ||
9500 | |||
9501 | echo "$as_me:9501: checking for crypt in -lcrypt" >&5 | ||
9502 | echo $ECHO_N "checking for crypt in -lcrypt... $ECHO_C" >&6 | ||
9503 | if test "${ac_cv_lib_crypt_crypt+set}" = set; then | ||
9504 | echo $ECHO_N "(cached) $ECHO_C" >&6 | ||
9505 | else | ||
9506 | ac_check_lib_save_LIBS=$LIBS | ||
9507 | LIBS="-lcrypt $LIBS" | ||
9508 | cat >conftest.$ac_ext <<_ACEOF | ||
9509 | #line 9509 "configure" | ||
9510 | #include "confdefs.h" | ||
9511 | |||
9512 | /* Override any gcc2 internal prototype to avoid an error. */ | ||
9513 | #ifdef __cplusplus | ||
9514 | extern "C" | ||
9515 | #endif | ||
9516 | /* We use char because int might match the return type of a gcc2 | ||
9517 | builtin and then its argument prototype would still apply. */ | ||
9518 | char crypt (); | ||
9519 | int | ||
9520 | main () | ||
9521 | { | ||
9522 | crypt (); | ||
9523 | ; | ||
9524 | return 0; | ||
9525 | } | ||
9526 | _ACEOF | ||
9527 | rm -f conftest.$ac_objext conftest$ac_exeext | ||
9528 | if { (eval echo "$as_me:9528: \"$ac_link\"") >&5 | ||
9529 | (eval $ac_link) 2>&5 | ||
9530 | ac_status=$? | ||
9531 | echo "$as_me:9531: \$? = $ac_status" >&5 | ||
9532 | (exit $ac_status); } && | ||
9533 | { ac_try='test -s conftest$ac_exeext' | ||
9534 | { (eval echo "$as_me:9534: \"$ac_try\"") >&5 | ||
9535 | (eval $ac_try) 2>&5 | ||
9536 | ac_status=$? | ||
9537 | echo "$as_me:9537: \$? = $ac_status" >&5 | ||
9538 | (exit $ac_status); }; }; then | ||
9539 | ac_cv_lib_crypt_crypt=yes | ||
9540 | else | ||
9541 | echo "$as_me: failed program was:" >&5 | ||
9542 | cat conftest.$ac_ext >&5 | ||
9543 | ac_cv_lib_crypt_crypt=no | ||
9544 | fi | ||
9545 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | ||
9546 | LIBS=$ac_check_lib_save_LIBS | ||
9547 | fi | ||
9548 | echo "$as_me:9548: result: $ac_cv_lib_crypt_crypt" >&5 | ||
9549 | echo "${ECHO_T}$ac_cv_lib_crypt_crypt" >&6 | ||
9550 | if test $ac_cv_lib_crypt_crypt = yes; then | ||
9551 | cat >>confdefs.h <<EOF | ||
9552 | #define HAVE_LIBCRYPT 1 | ||
9553 | EOF | ||
9554 | |||
9555 | LIBS="-lcrypt $LIBS" | ||
9556 | |||
9557 | fi | ||
9558 | |||
9559 | fi | ||
9560 | |||
9013 | # Some Linux systems (Slackware) need crypt() from libcrypt, *not* the | 9561 | # Some Linux systems (Slackware) need crypt() from libcrypt, *not* the |
9014 | # version in OpenSSL. Skip this for PAM | 9562 | # version in OpenSSL. |
9015 | if test "x$check_for_libcrypt_later" = "x1"; then | 9563 | if test "x$check_for_libcrypt_later" = "x1"; then |
9016 | echo "$as_me:9016: checking for crypt in -lcrypt" >&5 | 9564 | echo "$as_me:9564: checking for crypt in -lcrypt" >&5 |
9017 | echo $ECHO_N "checking for crypt in -lcrypt... $ECHO_C" >&6 | 9565 | echo $ECHO_N "checking for crypt in -lcrypt... $ECHO_C" >&6 |
9018 | if test "${ac_cv_lib_crypt_crypt+set}" = set; then | 9566 | if test "${ac_cv_lib_crypt_crypt+set}" = set; then |
9019 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 9567 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -9021,7 +9569,7 @@ else | |||
9021 | ac_check_lib_save_LIBS=$LIBS | 9569 | ac_check_lib_save_LIBS=$LIBS |
9022 | LIBS="-lcrypt $LIBS" | 9570 | LIBS="-lcrypt $LIBS" |
9023 | cat >conftest.$ac_ext <<_ACEOF | 9571 | cat >conftest.$ac_ext <<_ACEOF |
9024 | #line 9024 "configure" | 9572 | #line 9572 "configure" |
9025 | #include "confdefs.h" | 9573 | #include "confdefs.h" |
9026 | 9574 | ||
9027 | /* Override any gcc2 internal prototype to avoid an error. */ | 9575 | /* Override any gcc2 internal prototype to avoid an error. */ |
@@ -9040,16 +9588,16 @@ crypt (); | |||
9040 | } | 9588 | } |
9041 | _ACEOF | 9589 | _ACEOF |
9042 | rm -f conftest.$ac_objext conftest$ac_exeext | 9590 | rm -f conftest.$ac_objext conftest$ac_exeext |
9043 | if { (eval echo "$as_me:9043: \"$ac_link\"") >&5 | 9591 | if { (eval echo "$as_me:9591: \"$ac_link\"") >&5 |
9044 | (eval $ac_link) 2>&5 | 9592 | (eval $ac_link) 2>&5 |
9045 | ac_status=$? | 9593 | ac_status=$? |
9046 | echo "$as_me:9046: \$? = $ac_status" >&5 | 9594 | echo "$as_me:9594: \$? = $ac_status" >&5 |
9047 | (exit $ac_status); } && | 9595 | (exit $ac_status); } && |
9048 | { ac_try='test -s conftest$ac_exeext' | 9596 | { ac_try='test -s conftest$ac_exeext' |
9049 | { (eval echo "$as_me:9049: \"$ac_try\"") >&5 | 9597 | { (eval echo "$as_me:9597: \"$ac_try\"") >&5 |
9050 | (eval $ac_try) 2>&5 | 9598 | (eval $ac_try) 2>&5 |
9051 | ac_status=$? | 9599 | ac_status=$? |
9052 | echo "$as_me:9052: \$? = $ac_status" >&5 | 9600 | echo "$as_me:9600: \$? = $ac_status" >&5 |
9053 | (exit $ac_status); }; }; then | 9601 | (exit $ac_status); }; }; then |
9054 | ac_cv_lib_crypt_crypt=yes | 9602 | ac_cv_lib_crypt_crypt=yes |
9055 | else | 9603 | else |
@@ -9060,7 +9608,7 @@ fi | |||
9060 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 9608 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
9061 | LIBS=$ac_check_lib_save_LIBS | 9609 | LIBS=$ac_check_lib_save_LIBS |
9062 | fi | 9610 | fi |
9063 | echo "$as_me:9063: result: $ac_cv_lib_crypt_crypt" >&5 | 9611 | echo "$as_me:9611: result: $ac_cv_lib_crypt_crypt" >&5 |
9064 | echo "${ECHO_T}$ac_cv_lib_crypt_crypt" >&6 | 9612 | echo "${ECHO_T}$ac_cv_lib_crypt_crypt" >&6 |
9065 | if test $ac_cv_lib_crypt_crypt = yes; then | 9613 | if test $ac_cv_lib_crypt_crypt = yes; then |
9066 | LIBS="$LIBS -lcrypt" | 9614 | LIBS="$LIBS -lcrypt" |
@@ -9071,15 +9619,15 @@ fi | |||
9071 | ### Configure cryptographic random number support | 9619 | ### Configure cryptographic random number support |
9072 | 9620 | ||
9073 | # Check wheter OpenSSL seeds itself | 9621 | # Check wheter OpenSSL seeds itself |
9074 | echo "$as_me:9074: checking whether OpenSSL's PRNG is internally seeded" >&5 | 9622 | echo "$as_me:9622: checking whether OpenSSL's PRNG is internally seeded" >&5 |
9075 | echo $ECHO_N "checking whether OpenSSL's PRNG is internally seeded... $ECHO_C" >&6 | 9623 | echo $ECHO_N "checking whether OpenSSL's PRNG is internally seeded... $ECHO_C" >&6 |
9076 | if test "$cross_compiling" = yes; then | 9624 | if test "$cross_compiling" = yes; then |
9077 | { { echo "$as_me:9077: error: cannot run test program while cross compiling" >&5 | 9625 | { { echo "$as_me:9625: error: cannot run test program while cross compiling" >&5 |
9078 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} | 9626 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} |
9079 | { (exit 1); exit 1; }; } | 9627 | { (exit 1); exit 1; }; } |
9080 | else | 9628 | else |
9081 | cat >conftest.$ac_ext <<_ACEOF | 9629 | cat >conftest.$ac_ext <<_ACEOF |
9082 | #line 9082 "configure" | 9630 | #line 9630 "configure" |
9083 | #include "confdefs.h" | 9631 | #include "confdefs.h" |
9084 | 9632 | ||
9085 | #include <string.h> | 9633 | #include <string.h> |
@@ -9088,19 +9636,19 @@ int main(void) { exit(RAND_status() == 1 ? 0 : 1); } | |||
9088 | 9636 | ||
9089 | _ACEOF | 9637 | _ACEOF |
9090 | rm -f conftest$ac_exeext | 9638 | rm -f conftest$ac_exeext |
9091 | if { (eval echo "$as_me:9091: \"$ac_link\"") >&5 | 9639 | if { (eval echo "$as_me:9639: \"$ac_link\"") >&5 |
9092 | (eval $ac_link) 2>&5 | 9640 | (eval $ac_link) 2>&5 |
9093 | ac_status=$? | 9641 | ac_status=$? |
9094 | echo "$as_me:9094: \$? = $ac_status" >&5 | 9642 | echo "$as_me:9642: \$? = $ac_status" >&5 |
9095 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' | 9643 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' |
9096 | { (eval echo "$as_me:9096: \"$ac_try\"") >&5 | 9644 | { (eval echo "$as_me:9644: \"$ac_try\"") >&5 |
9097 | (eval $ac_try) 2>&5 | 9645 | (eval $ac_try) 2>&5 |
9098 | ac_status=$? | 9646 | ac_status=$? |
9099 | echo "$as_me:9099: \$? = $ac_status" >&5 | 9647 | echo "$as_me:9647: \$? = $ac_status" >&5 |
9100 | (exit $ac_status); }; }; then | 9648 | (exit $ac_status); }; }; then |
9101 | 9649 | ||
9102 | OPENSSL_SEEDS_ITSELF=yes | 9650 | OPENSSL_SEEDS_ITSELF=yes |
9103 | echo "$as_me:9103: result: yes" >&5 | 9651 | echo "$as_me:9651: result: yes" >&5 |
9104 | echo "${ECHO_T}yes" >&6 | 9652 | echo "${ECHO_T}yes" >&6 |
9105 | 9653 | ||
9106 | else | 9654 | else |
@@ -9108,7 +9656,7 @@ else | |||
9108 | echo "$as_me: failed program was:" >&5 | 9656 | echo "$as_me: failed program was:" >&5 |
9109 | cat conftest.$ac_ext >&5 | 9657 | cat conftest.$ac_ext >&5 |
9110 | 9658 | ||
9111 | echo "$as_me:9111: result: no" >&5 | 9659 | echo "$as_me:9659: result: no" >&5 |
9112 | echo "${ECHO_T}no" >&6 | 9660 | echo "${ECHO_T}no" >&6 |
9113 | # Default to use of the rand helper if OpenSSL doesn't | 9661 | # Default to use of the rand helper if OpenSSL doesn't |
9114 | # seed itself | 9662 | # seed itself |
@@ -9128,7 +9676,7 @@ if test "${with_rand_helper+set}" = set; then | |||
9128 | # Force use of OpenSSL's internal RNG, even if | 9676 | # Force use of OpenSSL's internal RNG, even if |
9129 | # the previous test showed it to be unseeded. | 9677 | # the previous test showed it to be unseeded. |
9130 | if test -z "$OPENSSL_SEEDS_ITSELF" ; then | 9678 | if test -z "$OPENSSL_SEEDS_ITSELF" ; then |
9131 | { echo "$as_me:9131: WARNING: *** Forcing use of OpenSSL's non-self-seeding PRNG" >&5 | 9679 | { echo "$as_me:9679: WARNING: *** Forcing use of OpenSSL's non-self-seeding PRNG" >&5 |
9132 | echo "$as_me: WARNING: *** Forcing use of OpenSSL's non-self-seeding PRNG" >&2;} | 9680 | echo "$as_me: WARNING: *** Forcing use of OpenSSL's non-self-seeding PRNG" >&2;} |
9133 | OPENSSL_SEEDS_ITSELF=yes | 9681 | OPENSSL_SEEDS_ITSELF=yes |
9134 | USE_RAND_HELPER="" | 9682 | USE_RAND_HELPER="" |
@@ -9169,7 +9717,7 @@ if test "${with_prngd_port+set}" = set; then | |||
9169 | [0-9]*) | 9717 | [0-9]*) |
9170 | ;; | 9718 | ;; |
9171 | *) | 9719 | *) |
9172 | { { echo "$as_me:9172: error: You must specify a numeric port number for --with-prngd-port" >&5 | 9720 | { { echo "$as_me:9720: error: You must specify a numeric port number for --with-prngd-port" >&5 |
9173 | echo "$as_me: error: You must specify a numeric port number for --with-prngd-port" >&2;} | 9721 | echo "$as_me: error: You must specify a numeric port number for --with-prngd-port" >&2;} |
9174 | { (exit 1); exit 1; }; } | 9722 | { (exit 1); exit 1; }; } |
9175 | ;; | 9723 | ;; |
@@ -9200,7 +9748,7 @@ if test "${with_prngd_socket+set}" = set; then | |||
9200 | /*) | 9748 | /*) |
9201 | ;; | 9749 | ;; |
9202 | *) | 9750 | *) |
9203 | { { echo "$as_me:9203: error: You must specify an absolute path to the entropy socket" >&5 | 9751 | { { echo "$as_me:9751: error: You must specify an absolute path to the entropy socket" >&5 |
9204 | echo "$as_me: error: You must specify an absolute path to the entropy socket" >&2;} | 9752 | echo "$as_me: error: You must specify an absolute path to the entropy socket" >&2;} |
9205 | { (exit 1); exit 1; }; } | 9753 | { (exit 1); exit 1; }; } |
9206 | ;; | 9754 | ;; |
@@ -9208,12 +9756,12 @@ echo "$as_me: error: You must specify an absolute path to the entropy socket" >& | |||
9208 | 9756 | ||
9209 | if test ! -z "$withval" ; then | 9757 | if test ! -z "$withval" ; then |
9210 | if test ! -z "$PRNGD_PORT" ; then | 9758 | if test ! -z "$PRNGD_PORT" ; then |
9211 | { { echo "$as_me:9211: error: You may not specify both a PRNGD/EGD port and socket" >&5 | 9759 | { { echo "$as_me:9759: error: You may not specify both a PRNGD/EGD port and socket" >&5 |
9212 | echo "$as_me: error: You may not specify both a PRNGD/EGD port and socket" >&2;} | 9760 | echo "$as_me: error: You may not specify both a PRNGD/EGD port and socket" >&2;} |
9213 | { (exit 1); exit 1; }; } | 9761 | { (exit 1); exit 1; }; } |
9214 | fi | 9762 | fi |
9215 | if test ! -r "$withval" ; then | 9763 | if test ! -r "$withval" ; then |
9216 | { echo "$as_me:9216: WARNING: Entropy socket is not readable" >&5 | 9764 | { echo "$as_me:9764: WARNING: Entropy socket is not readable" >&5 |
9217 | echo "$as_me: WARNING: Entropy socket is not readable" >&2;} | 9765 | echo "$as_me: WARNING: Entropy socket is not readable" >&2;} |
9218 | fi | 9766 | fi |
9219 | PRNGD_SOCKET="$withval" | 9767 | PRNGD_SOCKET="$withval" |
@@ -9227,7 +9775,7 @@ else | |||
9227 | 9775 | ||
9228 | # Check for existing socket only if we don't have a random device already | 9776 | # Check for existing socket only if we don't have a random device already |
9229 | if test "$USE_RAND_HELPER" = yes ; then | 9777 | if test "$USE_RAND_HELPER" = yes ; then |
9230 | echo "$as_me:9230: checking for PRNGD/EGD socket" >&5 | 9778 | echo "$as_me:9778: checking for PRNGD/EGD socket" >&5 |
9231 | echo $ECHO_N "checking for PRNGD/EGD socket... $ECHO_C" >&6 | 9779 | echo $ECHO_N "checking for PRNGD/EGD socket... $ECHO_C" >&6 |
9232 | # Insert other locations here | 9780 | # Insert other locations here |
9233 | for sock in /var/run/egd-pool /dev/egd-pool /etc/entropy; do | 9781 | for sock in /var/run/egd-pool /dev/egd-pool /etc/entropy; do |
@@ -9241,10 +9789,10 @@ EOF | |||
9241 | fi | 9789 | fi |
9242 | done | 9790 | done |
9243 | if test ! -z "$PRNGD_SOCKET" ; then | 9791 | if test ! -z "$PRNGD_SOCKET" ; then |
9244 | echo "$as_me:9244: result: $PRNGD_SOCKET" >&5 | 9792 | echo "$as_me:9792: result: $PRNGD_SOCKET" >&5 |
9245 | echo "${ECHO_T}$PRNGD_SOCKET" >&6 | 9793 | echo "${ECHO_T}$PRNGD_SOCKET" >&6 |
9246 | else | 9794 | else |
9247 | echo "$as_me:9247: result: not found" >&5 | 9795 | echo "$as_me:9795: result: not found" >&5 |
9248 | echo "${ECHO_T}not found" >&6 | 9796 | echo "${ECHO_T}not found" >&6 |
9249 | fi | 9797 | fi |
9250 | fi | 9798 | fi |
@@ -9300,7 +9848,7 @@ PATH=$PATH:/etc:$OPATH | |||
9300 | 9848 | ||
9301 | # Extract the first word of "ls", so it can be a program name with args. | 9849 | # Extract the first word of "ls", so it can be a program name with args. |
9302 | set dummy ls; ac_word=$2 | 9850 | set dummy ls; ac_word=$2 |
9303 | echo "$as_me:9303: checking for $ac_word" >&5 | 9851 | echo "$as_me:9851: checking for $ac_word" >&5 |
9304 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 | 9852 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 |
9305 | if test "${ac_cv_path_PROG_LS+set}" = set; then | 9853 | if test "${ac_cv_path_PROG_LS+set}" = set; then |
9306 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 9854 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -9317,7 +9865,7 @@ for ac_dir in $ac_dummy; do | |||
9317 | test -z "$ac_dir" && ac_dir=. | 9865 | test -z "$ac_dir" && ac_dir=. |
9318 | if $as_executable_p "$ac_dir/$ac_word"; then | 9866 | if $as_executable_p "$ac_dir/$ac_word"; then |
9319 | ac_cv_path_PROG_LS="$ac_dir/$ac_word" | 9867 | ac_cv_path_PROG_LS="$ac_dir/$ac_word" |
9320 | echo "$as_me:9320: found $ac_dir/$ac_word" >&5 | 9868 | echo "$as_me:9868: found $ac_dir/$ac_word" >&5 |
9321 | break | 9869 | break |
9322 | fi | 9870 | fi |
9323 | done | 9871 | done |
@@ -9328,10 +9876,10 @@ fi | |||
9328 | PROG_LS=$ac_cv_path_PROG_LS | 9876 | PROG_LS=$ac_cv_path_PROG_LS |
9329 | 9877 | ||
9330 | if test -n "$PROG_LS"; then | 9878 | if test -n "$PROG_LS"; then |
9331 | echo "$as_me:9331: result: $PROG_LS" >&5 | 9879 | echo "$as_me:9879: result: $PROG_LS" >&5 |
9332 | echo "${ECHO_T}$PROG_LS" >&6 | 9880 | echo "${ECHO_T}$PROG_LS" >&6 |
9333 | else | 9881 | else |
9334 | echo "$as_me:9334: result: no" >&5 | 9882 | echo "$as_me:9882: result: no" >&5 |
9335 | echo "${ECHO_T}no" >&6 | 9883 | echo "${ECHO_T}no" >&6 |
9336 | fi | 9884 | fi |
9337 | 9885 | ||
@@ -9341,7 +9889,7 @@ fi | |||
9341 | 9889 | ||
9342 | # Extract the first word of "netstat", so it can be a program name with args. | 9890 | # Extract the first word of "netstat", so it can be a program name with args. |
9343 | set dummy netstat; ac_word=$2 | 9891 | set dummy netstat; ac_word=$2 |
9344 | echo "$as_me:9344: checking for $ac_word" >&5 | 9892 | echo "$as_me:9892: checking for $ac_word" >&5 |
9345 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 | 9893 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 |
9346 | if test "${ac_cv_path_PROG_NETSTAT+set}" = set; then | 9894 | if test "${ac_cv_path_PROG_NETSTAT+set}" = set; then |
9347 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 9895 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -9358,7 +9906,7 @@ for ac_dir in $ac_dummy; do | |||
9358 | test -z "$ac_dir" && ac_dir=. | 9906 | test -z "$ac_dir" && ac_dir=. |
9359 | if $as_executable_p "$ac_dir/$ac_word"; then | 9907 | if $as_executable_p "$ac_dir/$ac_word"; then |
9360 | ac_cv_path_PROG_NETSTAT="$ac_dir/$ac_word" | 9908 | ac_cv_path_PROG_NETSTAT="$ac_dir/$ac_word" |
9361 | echo "$as_me:9361: found $ac_dir/$ac_word" >&5 | 9909 | echo "$as_me:9909: found $ac_dir/$ac_word" >&5 |
9362 | break | 9910 | break |
9363 | fi | 9911 | fi |
9364 | done | 9912 | done |
@@ -9369,10 +9917,10 @@ fi | |||
9369 | PROG_NETSTAT=$ac_cv_path_PROG_NETSTAT | 9917 | PROG_NETSTAT=$ac_cv_path_PROG_NETSTAT |
9370 | 9918 | ||
9371 | if test -n "$PROG_NETSTAT"; then | 9919 | if test -n "$PROG_NETSTAT"; then |
9372 | echo "$as_me:9372: result: $PROG_NETSTAT" >&5 | 9920 | echo "$as_me:9920: result: $PROG_NETSTAT" >&5 |
9373 | echo "${ECHO_T}$PROG_NETSTAT" >&6 | 9921 | echo "${ECHO_T}$PROG_NETSTAT" >&6 |
9374 | else | 9922 | else |
9375 | echo "$as_me:9375: result: no" >&5 | 9923 | echo "$as_me:9923: result: no" >&5 |
9376 | echo "${ECHO_T}no" >&6 | 9924 | echo "${ECHO_T}no" >&6 |
9377 | fi | 9925 | fi |
9378 | 9926 | ||
@@ -9382,7 +9930,7 @@ fi | |||
9382 | 9930 | ||
9383 | # Extract the first word of "arp", so it can be a program name with args. | 9931 | # Extract the first word of "arp", so it can be a program name with args. |
9384 | set dummy arp; ac_word=$2 | 9932 | set dummy arp; ac_word=$2 |
9385 | echo "$as_me:9385: checking for $ac_word" >&5 | 9933 | echo "$as_me:9933: checking for $ac_word" >&5 |
9386 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 | 9934 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 |
9387 | if test "${ac_cv_path_PROG_ARP+set}" = set; then | 9935 | if test "${ac_cv_path_PROG_ARP+set}" = set; then |
9388 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 9936 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -9399,7 +9947,7 @@ for ac_dir in $ac_dummy; do | |||
9399 | test -z "$ac_dir" && ac_dir=. | 9947 | test -z "$ac_dir" && ac_dir=. |
9400 | if $as_executable_p "$ac_dir/$ac_word"; then | 9948 | if $as_executable_p "$ac_dir/$ac_word"; then |
9401 | ac_cv_path_PROG_ARP="$ac_dir/$ac_word" | 9949 | ac_cv_path_PROG_ARP="$ac_dir/$ac_word" |
9402 | echo "$as_me:9402: found $ac_dir/$ac_word" >&5 | 9950 | echo "$as_me:9950: found $ac_dir/$ac_word" >&5 |
9403 | break | 9951 | break |
9404 | fi | 9952 | fi |
9405 | done | 9953 | done |
@@ -9410,10 +9958,10 @@ fi | |||
9410 | PROG_ARP=$ac_cv_path_PROG_ARP | 9958 | PROG_ARP=$ac_cv_path_PROG_ARP |
9411 | 9959 | ||
9412 | if test -n "$PROG_ARP"; then | 9960 | if test -n "$PROG_ARP"; then |
9413 | echo "$as_me:9413: result: $PROG_ARP" >&5 | 9961 | echo "$as_me:9961: result: $PROG_ARP" >&5 |
9414 | echo "${ECHO_T}$PROG_ARP" >&6 | 9962 | echo "${ECHO_T}$PROG_ARP" >&6 |
9415 | else | 9963 | else |
9416 | echo "$as_me:9416: result: no" >&5 | 9964 | echo "$as_me:9964: result: no" >&5 |
9417 | echo "${ECHO_T}no" >&6 | 9965 | echo "${ECHO_T}no" >&6 |
9418 | fi | 9966 | fi |
9419 | 9967 | ||
@@ -9423,7 +9971,7 @@ fi | |||
9423 | 9971 | ||
9424 | # Extract the first word of "ifconfig", so it can be a program name with args. | 9972 | # Extract the first word of "ifconfig", so it can be a program name with args. |
9425 | set dummy ifconfig; ac_word=$2 | 9973 | set dummy ifconfig; ac_word=$2 |
9426 | echo "$as_me:9426: checking for $ac_word" >&5 | 9974 | echo "$as_me:9974: checking for $ac_word" >&5 |
9427 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 | 9975 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 |
9428 | if test "${ac_cv_path_PROG_IFCONFIG+set}" = set; then | 9976 | if test "${ac_cv_path_PROG_IFCONFIG+set}" = set; then |
9429 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 9977 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -9440,7 +9988,7 @@ for ac_dir in $ac_dummy; do | |||
9440 | test -z "$ac_dir" && ac_dir=. | 9988 | test -z "$ac_dir" && ac_dir=. |
9441 | if $as_executable_p "$ac_dir/$ac_word"; then | 9989 | if $as_executable_p "$ac_dir/$ac_word"; then |
9442 | ac_cv_path_PROG_IFCONFIG="$ac_dir/$ac_word" | 9990 | ac_cv_path_PROG_IFCONFIG="$ac_dir/$ac_word" |
9443 | echo "$as_me:9443: found $ac_dir/$ac_word" >&5 | 9991 | echo "$as_me:9991: found $ac_dir/$ac_word" >&5 |
9444 | break | 9992 | break |
9445 | fi | 9993 | fi |
9446 | done | 9994 | done |
@@ -9451,10 +9999,10 @@ fi | |||
9451 | PROG_IFCONFIG=$ac_cv_path_PROG_IFCONFIG | 9999 | PROG_IFCONFIG=$ac_cv_path_PROG_IFCONFIG |
9452 | 10000 | ||
9453 | if test -n "$PROG_IFCONFIG"; then | 10001 | if test -n "$PROG_IFCONFIG"; then |
9454 | echo "$as_me:9454: result: $PROG_IFCONFIG" >&5 | 10002 | echo "$as_me:10002: result: $PROG_IFCONFIG" >&5 |
9455 | echo "${ECHO_T}$PROG_IFCONFIG" >&6 | 10003 | echo "${ECHO_T}$PROG_IFCONFIG" >&6 |
9456 | else | 10004 | else |
9457 | echo "$as_me:9457: result: no" >&5 | 10005 | echo "$as_me:10005: result: no" >&5 |
9458 | echo "${ECHO_T}no" >&6 | 10006 | echo "${ECHO_T}no" >&6 |
9459 | fi | 10007 | fi |
9460 | 10008 | ||
@@ -9464,7 +10012,7 @@ fi | |||
9464 | 10012 | ||
9465 | # Extract the first word of "jstat", so it can be a program name with args. | 10013 | # Extract the first word of "jstat", so it can be a program name with args. |
9466 | set dummy jstat; ac_word=$2 | 10014 | set dummy jstat; ac_word=$2 |
9467 | echo "$as_me:9467: checking for $ac_word" >&5 | 10015 | echo "$as_me:10015: checking for $ac_word" >&5 |
9468 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 | 10016 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 |
9469 | if test "${ac_cv_path_PROG_JSTAT+set}" = set; then | 10017 | if test "${ac_cv_path_PROG_JSTAT+set}" = set; then |
9470 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 10018 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -9481,7 +10029,7 @@ for ac_dir in $ac_dummy; do | |||
9481 | test -z "$ac_dir" && ac_dir=. | 10029 | test -z "$ac_dir" && ac_dir=. |
9482 | if $as_executable_p "$ac_dir/$ac_word"; then | 10030 | if $as_executable_p "$ac_dir/$ac_word"; then |
9483 | ac_cv_path_PROG_JSTAT="$ac_dir/$ac_word" | 10031 | ac_cv_path_PROG_JSTAT="$ac_dir/$ac_word" |
9484 | echo "$as_me:9484: found $ac_dir/$ac_word" >&5 | 10032 | echo "$as_me:10032: found $ac_dir/$ac_word" >&5 |
9485 | break | 10033 | break |
9486 | fi | 10034 | fi |
9487 | done | 10035 | done |
@@ -9492,10 +10040,10 @@ fi | |||
9492 | PROG_JSTAT=$ac_cv_path_PROG_JSTAT | 10040 | PROG_JSTAT=$ac_cv_path_PROG_JSTAT |
9493 | 10041 | ||
9494 | if test -n "$PROG_JSTAT"; then | 10042 | if test -n "$PROG_JSTAT"; then |
9495 | echo "$as_me:9495: result: $PROG_JSTAT" >&5 | 10043 | echo "$as_me:10043: result: $PROG_JSTAT" >&5 |
9496 | echo "${ECHO_T}$PROG_JSTAT" >&6 | 10044 | echo "${ECHO_T}$PROG_JSTAT" >&6 |
9497 | else | 10045 | else |
9498 | echo "$as_me:9498: result: no" >&5 | 10046 | echo "$as_me:10046: result: no" >&5 |
9499 | echo "${ECHO_T}no" >&6 | 10047 | echo "${ECHO_T}no" >&6 |
9500 | fi | 10048 | fi |
9501 | 10049 | ||
@@ -9505,7 +10053,7 @@ fi | |||
9505 | 10053 | ||
9506 | # Extract the first word of "ps", so it can be a program name with args. | 10054 | # Extract the first word of "ps", so it can be a program name with args. |
9507 | set dummy ps; ac_word=$2 | 10055 | set dummy ps; ac_word=$2 |
9508 | echo "$as_me:9508: checking for $ac_word" >&5 | 10056 | echo "$as_me:10056: checking for $ac_word" >&5 |
9509 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 | 10057 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 |
9510 | if test "${ac_cv_path_PROG_PS+set}" = set; then | 10058 | if test "${ac_cv_path_PROG_PS+set}" = set; then |
9511 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 10059 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -9522,7 +10070,7 @@ for ac_dir in $ac_dummy; do | |||
9522 | test -z "$ac_dir" && ac_dir=. | 10070 | test -z "$ac_dir" && ac_dir=. |
9523 | if $as_executable_p "$ac_dir/$ac_word"; then | 10071 | if $as_executable_p "$ac_dir/$ac_word"; then |
9524 | ac_cv_path_PROG_PS="$ac_dir/$ac_word" | 10072 | ac_cv_path_PROG_PS="$ac_dir/$ac_word" |
9525 | echo "$as_me:9525: found $ac_dir/$ac_word" >&5 | 10073 | echo "$as_me:10073: found $ac_dir/$ac_word" >&5 |
9526 | break | 10074 | break |
9527 | fi | 10075 | fi |
9528 | done | 10076 | done |
@@ -9533,10 +10081,10 @@ fi | |||
9533 | PROG_PS=$ac_cv_path_PROG_PS | 10081 | PROG_PS=$ac_cv_path_PROG_PS |
9534 | 10082 | ||
9535 | if test -n "$PROG_PS"; then | 10083 | if test -n "$PROG_PS"; then |
9536 | echo "$as_me:9536: result: $PROG_PS" >&5 | 10084 | echo "$as_me:10084: result: $PROG_PS" >&5 |
9537 | echo "${ECHO_T}$PROG_PS" >&6 | 10085 | echo "${ECHO_T}$PROG_PS" >&6 |
9538 | else | 10086 | else |
9539 | echo "$as_me:9539: result: no" >&5 | 10087 | echo "$as_me:10087: result: no" >&5 |
9540 | echo "${ECHO_T}no" >&6 | 10088 | echo "${ECHO_T}no" >&6 |
9541 | fi | 10089 | fi |
9542 | 10090 | ||
@@ -9546,7 +10094,7 @@ fi | |||
9546 | 10094 | ||
9547 | # Extract the first word of "sar", so it can be a program name with args. | 10095 | # Extract the first word of "sar", so it can be a program name with args. |
9548 | set dummy sar; ac_word=$2 | 10096 | set dummy sar; ac_word=$2 |
9549 | echo "$as_me:9549: checking for $ac_word" >&5 | 10097 | echo "$as_me:10097: checking for $ac_word" >&5 |
9550 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 | 10098 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 |
9551 | if test "${ac_cv_path_PROG_SAR+set}" = set; then | 10099 | if test "${ac_cv_path_PROG_SAR+set}" = set; then |
9552 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 10100 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -9563,7 +10111,7 @@ for ac_dir in $ac_dummy; do | |||
9563 | test -z "$ac_dir" && ac_dir=. | 10111 | test -z "$ac_dir" && ac_dir=. |
9564 | if $as_executable_p "$ac_dir/$ac_word"; then | 10112 | if $as_executable_p "$ac_dir/$ac_word"; then |
9565 | ac_cv_path_PROG_SAR="$ac_dir/$ac_word" | 10113 | ac_cv_path_PROG_SAR="$ac_dir/$ac_word" |
9566 | echo "$as_me:9566: found $ac_dir/$ac_word" >&5 | 10114 | echo "$as_me:10114: found $ac_dir/$ac_word" >&5 |
9567 | break | 10115 | break |
9568 | fi | 10116 | fi |
9569 | done | 10117 | done |
@@ -9574,10 +10122,10 @@ fi | |||
9574 | PROG_SAR=$ac_cv_path_PROG_SAR | 10122 | PROG_SAR=$ac_cv_path_PROG_SAR |
9575 | 10123 | ||
9576 | if test -n "$PROG_SAR"; then | 10124 | if test -n "$PROG_SAR"; then |
9577 | echo "$as_me:9577: result: $PROG_SAR" >&5 | 10125 | echo "$as_me:10125: result: $PROG_SAR" >&5 |
9578 | echo "${ECHO_T}$PROG_SAR" >&6 | 10126 | echo "${ECHO_T}$PROG_SAR" >&6 |
9579 | else | 10127 | else |
9580 | echo "$as_me:9580: result: no" >&5 | 10128 | echo "$as_me:10128: result: no" >&5 |
9581 | echo "${ECHO_T}no" >&6 | 10129 | echo "${ECHO_T}no" >&6 |
9582 | fi | 10130 | fi |
9583 | 10131 | ||
@@ -9587,7 +10135,7 @@ fi | |||
9587 | 10135 | ||
9588 | # Extract the first word of "w", so it can be a program name with args. | 10136 | # Extract the first word of "w", so it can be a program name with args. |
9589 | set dummy w; ac_word=$2 | 10137 | set dummy w; ac_word=$2 |
9590 | echo "$as_me:9590: checking for $ac_word" >&5 | 10138 | echo "$as_me:10138: checking for $ac_word" >&5 |
9591 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 | 10139 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 |
9592 | if test "${ac_cv_path_PROG_W+set}" = set; then | 10140 | if test "${ac_cv_path_PROG_W+set}" = set; then |
9593 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 10141 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -9604,7 +10152,7 @@ for ac_dir in $ac_dummy; do | |||
9604 | test -z "$ac_dir" && ac_dir=. | 10152 | test -z "$ac_dir" && ac_dir=. |
9605 | if $as_executable_p "$ac_dir/$ac_word"; then | 10153 | if $as_executable_p "$ac_dir/$ac_word"; then |
9606 | ac_cv_path_PROG_W="$ac_dir/$ac_word" | 10154 | ac_cv_path_PROG_W="$ac_dir/$ac_word" |
9607 | echo "$as_me:9607: found $ac_dir/$ac_word" >&5 | 10155 | echo "$as_me:10155: found $ac_dir/$ac_word" >&5 |
9608 | break | 10156 | break |
9609 | fi | 10157 | fi |
9610 | done | 10158 | done |
@@ -9615,10 +10163,10 @@ fi | |||
9615 | PROG_W=$ac_cv_path_PROG_W | 10163 | PROG_W=$ac_cv_path_PROG_W |
9616 | 10164 | ||
9617 | if test -n "$PROG_W"; then | 10165 | if test -n "$PROG_W"; then |
9618 | echo "$as_me:9618: result: $PROG_W" >&5 | 10166 | echo "$as_me:10166: result: $PROG_W" >&5 |
9619 | echo "${ECHO_T}$PROG_W" >&6 | 10167 | echo "${ECHO_T}$PROG_W" >&6 |
9620 | else | 10168 | else |
9621 | echo "$as_me:9621: result: no" >&5 | 10169 | echo "$as_me:10169: result: no" >&5 |
9622 | echo "${ECHO_T}no" >&6 | 10170 | echo "${ECHO_T}no" >&6 |
9623 | fi | 10171 | fi |
9624 | 10172 | ||
@@ -9628,7 +10176,7 @@ fi | |||
9628 | 10176 | ||
9629 | # Extract the first word of "who", so it can be a program name with args. | 10177 | # Extract the first word of "who", so it can be a program name with args. |
9630 | set dummy who; ac_word=$2 | 10178 | set dummy who; ac_word=$2 |
9631 | echo "$as_me:9631: checking for $ac_word" >&5 | 10179 | echo "$as_me:10179: checking for $ac_word" >&5 |
9632 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 | 10180 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 |
9633 | if test "${ac_cv_path_PROG_WHO+set}" = set; then | 10181 | if test "${ac_cv_path_PROG_WHO+set}" = set; then |
9634 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 10182 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -9645,7 +10193,7 @@ for ac_dir in $ac_dummy; do | |||
9645 | test -z "$ac_dir" && ac_dir=. | 10193 | test -z "$ac_dir" && ac_dir=. |
9646 | if $as_executable_p "$ac_dir/$ac_word"; then | 10194 | if $as_executable_p "$ac_dir/$ac_word"; then |
9647 | ac_cv_path_PROG_WHO="$ac_dir/$ac_word" | 10195 | ac_cv_path_PROG_WHO="$ac_dir/$ac_word" |
9648 | echo "$as_me:9648: found $ac_dir/$ac_word" >&5 | 10196 | echo "$as_me:10196: found $ac_dir/$ac_word" >&5 |
9649 | break | 10197 | break |
9650 | fi | 10198 | fi |
9651 | done | 10199 | done |
@@ -9656,10 +10204,10 @@ fi | |||
9656 | PROG_WHO=$ac_cv_path_PROG_WHO | 10204 | PROG_WHO=$ac_cv_path_PROG_WHO |
9657 | 10205 | ||
9658 | if test -n "$PROG_WHO"; then | 10206 | if test -n "$PROG_WHO"; then |
9659 | echo "$as_me:9659: result: $PROG_WHO" >&5 | 10207 | echo "$as_me:10207: result: $PROG_WHO" >&5 |
9660 | echo "${ECHO_T}$PROG_WHO" >&6 | 10208 | echo "${ECHO_T}$PROG_WHO" >&6 |
9661 | else | 10209 | else |
9662 | echo "$as_me:9662: result: no" >&5 | 10210 | echo "$as_me:10210: result: no" >&5 |
9663 | echo "${ECHO_T}no" >&6 | 10211 | echo "${ECHO_T}no" >&6 |
9664 | fi | 10212 | fi |
9665 | 10213 | ||
@@ -9669,7 +10217,7 @@ fi | |||
9669 | 10217 | ||
9670 | # Extract the first word of "last", so it can be a program name with args. | 10218 | # Extract the first word of "last", so it can be a program name with args. |
9671 | set dummy last; ac_word=$2 | 10219 | set dummy last; ac_word=$2 |
9672 | echo "$as_me:9672: checking for $ac_word" >&5 | 10220 | echo "$as_me:10220: checking for $ac_word" >&5 |
9673 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 | 10221 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 |
9674 | if test "${ac_cv_path_PROG_LAST+set}" = set; then | 10222 | if test "${ac_cv_path_PROG_LAST+set}" = set; then |
9675 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 10223 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -9686,7 +10234,7 @@ for ac_dir in $ac_dummy; do | |||
9686 | test -z "$ac_dir" && ac_dir=. | 10234 | test -z "$ac_dir" && ac_dir=. |
9687 | if $as_executable_p "$ac_dir/$ac_word"; then | 10235 | if $as_executable_p "$ac_dir/$ac_word"; then |
9688 | ac_cv_path_PROG_LAST="$ac_dir/$ac_word" | 10236 | ac_cv_path_PROG_LAST="$ac_dir/$ac_word" |
9689 | echo "$as_me:9689: found $ac_dir/$ac_word" >&5 | 10237 | echo "$as_me:10237: found $ac_dir/$ac_word" >&5 |
9690 | break | 10238 | break |
9691 | fi | 10239 | fi |
9692 | done | 10240 | done |
@@ -9697,10 +10245,10 @@ fi | |||
9697 | PROG_LAST=$ac_cv_path_PROG_LAST | 10245 | PROG_LAST=$ac_cv_path_PROG_LAST |
9698 | 10246 | ||
9699 | if test -n "$PROG_LAST"; then | 10247 | if test -n "$PROG_LAST"; then |
9700 | echo "$as_me:9700: result: $PROG_LAST" >&5 | 10248 | echo "$as_me:10248: result: $PROG_LAST" >&5 |
9701 | echo "${ECHO_T}$PROG_LAST" >&6 | 10249 | echo "${ECHO_T}$PROG_LAST" >&6 |
9702 | else | 10250 | else |
9703 | echo "$as_me:9703: result: no" >&5 | 10251 | echo "$as_me:10251: result: no" >&5 |
9704 | echo "${ECHO_T}no" >&6 | 10252 | echo "${ECHO_T}no" >&6 |
9705 | fi | 10253 | fi |
9706 | 10254 | ||
@@ -9710,7 +10258,7 @@ fi | |||
9710 | 10258 | ||
9711 | # Extract the first word of "lastlog", so it can be a program name with args. | 10259 | # Extract the first word of "lastlog", so it can be a program name with args. |
9712 | set dummy lastlog; ac_word=$2 | 10260 | set dummy lastlog; ac_word=$2 |
9713 | echo "$as_me:9713: checking for $ac_word" >&5 | 10261 | echo "$as_me:10261: checking for $ac_word" >&5 |
9714 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 | 10262 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 |
9715 | if test "${ac_cv_path_PROG_LASTLOG+set}" = set; then | 10263 | if test "${ac_cv_path_PROG_LASTLOG+set}" = set; then |
9716 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 10264 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -9727,7 +10275,7 @@ for ac_dir in $ac_dummy; do | |||
9727 | test -z "$ac_dir" && ac_dir=. | 10275 | test -z "$ac_dir" && ac_dir=. |
9728 | if $as_executable_p "$ac_dir/$ac_word"; then | 10276 | if $as_executable_p "$ac_dir/$ac_word"; then |
9729 | ac_cv_path_PROG_LASTLOG="$ac_dir/$ac_word" | 10277 | ac_cv_path_PROG_LASTLOG="$ac_dir/$ac_word" |
9730 | echo "$as_me:9730: found $ac_dir/$ac_word" >&5 | 10278 | echo "$as_me:10278: found $ac_dir/$ac_word" >&5 |
9731 | break | 10279 | break |
9732 | fi | 10280 | fi |
9733 | done | 10281 | done |
@@ -9738,10 +10286,10 @@ fi | |||
9738 | PROG_LASTLOG=$ac_cv_path_PROG_LASTLOG | 10286 | PROG_LASTLOG=$ac_cv_path_PROG_LASTLOG |
9739 | 10287 | ||
9740 | if test -n "$PROG_LASTLOG"; then | 10288 | if test -n "$PROG_LASTLOG"; then |
9741 | echo "$as_me:9741: result: $PROG_LASTLOG" >&5 | 10289 | echo "$as_me:10289: result: $PROG_LASTLOG" >&5 |
9742 | echo "${ECHO_T}$PROG_LASTLOG" >&6 | 10290 | echo "${ECHO_T}$PROG_LASTLOG" >&6 |
9743 | else | 10291 | else |
9744 | echo "$as_me:9744: result: no" >&5 | 10292 | echo "$as_me:10292: result: no" >&5 |
9745 | echo "${ECHO_T}no" >&6 | 10293 | echo "${ECHO_T}no" >&6 |
9746 | fi | 10294 | fi |
9747 | 10295 | ||
@@ -9751,7 +10299,7 @@ fi | |||
9751 | 10299 | ||
9752 | # Extract the first word of "df", so it can be a program name with args. | 10300 | # Extract the first word of "df", so it can be a program name with args. |
9753 | set dummy df; ac_word=$2 | 10301 | set dummy df; ac_word=$2 |
9754 | echo "$as_me:9754: checking for $ac_word" >&5 | 10302 | echo "$as_me:10302: checking for $ac_word" >&5 |
9755 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 | 10303 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 |
9756 | if test "${ac_cv_path_PROG_DF+set}" = set; then | 10304 | if test "${ac_cv_path_PROG_DF+set}" = set; then |
9757 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 10305 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -9768,7 +10316,7 @@ for ac_dir in $ac_dummy; do | |||
9768 | test -z "$ac_dir" && ac_dir=. | 10316 | test -z "$ac_dir" && ac_dir=. |
9769 | if $as_executable_p "$ac_dir/$ac_word"; then | 10317 | if $as_executable_p "$ac_dir/$ac_word"; then |
9770 | ac_cv_path_PROG_DF="$ac_dir/$ac_word" | 10318 | ac_cv_path_PROG_DF="$ac_dir/$ac_word" |
9771 | echo "$as_me:9771: found $ac_dir/$ac_word" >&5 | 10319 | echo "$as_me:10319: found $ac_dir/$ac_word" >&5 |
9772 | break | 10320 | break |
9773 | fi | 10321 | fi |
9774 | done | 10322 | done |
@@ -9779,10 +10327,10 @@ fi | |||
9779 | PROG_DF=$ac_cv_path_PROG_DF | 10327 | PROG_DF=$ac_cv_path_PROG_DF |
9780 | 10328 | ||
9781 | if test -n "$PROG_DF"; then | 10329 | if test -n "$PROG_DF"; then |
9782 | echo "$as_me:9782: result: $PROG_DF" >&5 | 10330 | echo "$as_me:10330: result: $PROG_DF" >&5 |
9783 | echo "${ECHO_T}$PROG_DF" >&6 | 10331 | echo "${ECHO_T}$PROG_DF" >&6 |
9784 | else | 10332 | else |
9785 | echo "$as_me:9785: result: no" >&5 | 10333 | echo "$as_me:10333: result: no" >&5 |
9786 | echo "${ECHO_T}no" >&6 | 10334 | echo "${ECHO_T}no" >&6 |
9787 | fi | 10335 | fi |
9788 | 10336 | ||
@@ -9792,7 +10340,7 @@ fi | |||
9792 | 10340 | ||
9793 | # Extract the first word of "vmstat", so it can be a program name with args. | 10341 | # Extract the first word of "vmstat", so it can be a program name with args. |
9794 | set dummy vmstat; ac_word=$2 | 10342 | set dummy vmstat; ac_word=$2 |
9795 | echo "$as_me:9795: checking for $ac_word" >&5 | 10343 | echo "$as_me:10343: checking for $ac_word" >&5 |
9796 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 | 10344 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 |
9797 | if test "${ac_cv_path_PROG_VMSTAT+set}" = set; then | 10345 | if test "${ac_cv_path_PROG_VMSTAT+set}" = set; then |
9798 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 10346 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -9809,7 +10357,7 @@ for ac_dir in $ac_dummy; do | |||
9809 | test -z "$ac_dir" && ac_dir=. | 10357 | test -z "$ac_dir" && ac_dir=. |
9810 | if $as_executable_p "$ac_dir/$ac_word"; then | 10358 | if $as_executable_p "$ac_dir/$ac_word"; then |
9811 | ac_cv_path_PROG_VMSTAT="$ac_dir/$ac_word" | 10359 | ac_cv_path_PROG_VMSTAT="$ac_dir/$ac_word" |
9812 | echo "$as_me:9812: found $ac_dir/$ac_word" >&5 | 10360 | echo "$as_me:10360: found $ac_dir/$ac_word" >&5 |
9813 | break | 10361 | break |
9814 | fi | 10362 | fi |
9815 | done | 10363 | done |
@@ -9820,10 +10368,10 @@ fi | |||
9820 | PROG_VMSTAT=$ac_cv_path_PROG_VMSTAT | 10368 | PROG_VMSTAT=$ac_cv_path_PROG_VMSTAT |
9821 | 10369 | ||
9822 | if test -n "$PROG_VMSTAT"; then | 10370 | if test -n "$PROG_VMSTAT"; then |
9823 | echo "$as_me:9823: result: $PROG_VMSTAT" >&5 | 10371 | echo "$as_me:10371: result: $PROG_VMSTAT" >&5 |
9824 | echo "${ECHO_T}$PROG_VMSTAT" >&6 | 10372 | echo "${ECHO_T}$PROG_VMSTAT" >&6 |
9825 | else | 10373 | else |
9826 | echo "$as_me:9826: result: no" >&5 | 10374 | echo "$as_me:10374: result: no" >&5 |
9827 | echo "${ECHO_T}no" >&6 | 10375 | echo "${ECHO_T}no" >&6 |
9828 | fi | 10376 | fi |
9829 | 10377 | ||
@@ -9833,7 +10381,7 @@ fi | |||
9833 | 10381 | ||
9834 | # Extract the first word of "uptime", so it can be a program name with args. | 10382 | # Extract the first word of "uptime", so it can be a program name with args. |
9835 | set dummy uptime; ac_word=$2 | 10383 | set dummy uptime; ac_word=$2 |
9836 | echo "$as_me:9836: checking for $ac_word" >&5 | 10384 | echo "$as_me:10384: checking for $ac_word" >&5 |
9837 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 | 10385 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 |
9838 | if test "${ac_cv_path_PROG_UPTIME+set}" = set; then | 10386 | if test "${ac_cv_path_PROG_UPTIME+set}" = set; then |
9839 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 10387 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -9850,7 +10398,7 @@ for ac_dir in $ac_dummy; do | |||
9850 | test -z "$ac_dir" && ac_dir=. | 10398 | test -z "$ac_dir" && ac_dir=. |
9851 | if $as_executable_p "$ac_dir/$ac_word"; then | 10399 | if $as_executable_p "$ac_dir/$ac_word"; then |
9852 | ac_cv_path_PROG_UPTIME="$ac_dir/$ac_word" | 10400 | ac_cv_path_PROG_UPTIME="$ac_dir/$ac_word" |
9853 | echo "$as_me:9853: found $ac_dir/$ac_word" >&5 | 10401 | echo "$as_me:10401: found $ac_dir/$ac_word" >&5 |
9854 | break | 10402 | break |
9855 | fi | 10403 | fi |
9856 | done | 10404 | done |
@@ -9861,10 +10409,10 @@ fi | |||
9861 | PROG_UPTIME=$ac_cv_path_PROG_UPTIME | 10409 | PROG_UPTIME=$ac_cv_path_PROG_UPTIME |
9862 | 10410 | ||
9863 | if test -n "$PROG_UPTIME"; then | 10411 | if test -n "$PROG_UPTIME"; then |
9864 | echo "$as_me:9864: result: $PROG_UPTIME" >&5 | 10412 | echo "$as_me:10412: result: $PROG_UPTIME" >&5 |
9865 | echo "${ECHO_T}$PROG_UPTIME" >&6 | 10413 | echo "${ECHO_T}$PROG_UPTIME" >&6 |
9866 | else | 10414 | else |
9867 | echo "$as_me:9867: result: no" >&5 | 10415 | echo "$as_me:10415: result: no" >&5 |
9868 | echo "${ECHO_T}no" >&6 | 10416 | echo "${ECHO_T}no" >&6 |
9869 | fi | 10417 | fi |
9870 | 10418 | ||
@@ -9874,7 +10422,7 @@ fi | |||
9874 | 10422 | ||
9875 | # Extract the first word of "ipcs", so it can be a program name with args. | 10423 | # Extract the first word of "ipcs", so it can be a program name with args. |
9876 | set dummy ipcs; ac_word=$2 | 10424 | set dummy ipcs; ac_word=$2 |
9877 | echo "$as_me:9877: checking for $ac_word" >&5 | 10425 | echo "$as_me:10425: checking for $ac_word" >&5 |
9878 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 | 10426 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 |
9879 | if test "${ac_cv_path_PROG_IPCS+set}" = set; then | 10427 | if test "${ac_cv_path_PROG_IPCS+set}" = set; then |
9880 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 10428 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -9891,7 +10439,7 @@ for ac_dir in $ac_dummy; do | |||
9891 | test -z "$ac_dir" && ac_dir=. | 10439 | test -z "$ac_dir" && ac_dir=. |
9892 | if $as_executable_p "$ac_dir/$ac_word"; then | 10440 | if $as_executable_p "$ac_dir/$ac_word"; then |
9893 | ac_cv_path_PROG_IPCS="$ac_dir/$ac_word" | 10441 | ac_cv_path_PROG_IPCS="$ac_dir/$ac_word" |
9894 | echo "$as_me:9894: found $ac_dir/$ac_word" >&5 | 10442 | echo "$as_me:10442: found $ac_dir/$ac_word" >&5 |
9895 | break | 10443 | break |
9896 | fi | 10444 | fi |
9897 | done | 10445 | done |
@@ -9902,10 +10450,10 @@ fi | |||
9902 | PROG_IPCS=$ac_cv_path_PROG_IPCS | 10450 | PROG_IPCS=$ac_cv_path_PROG_IPCS |
9903 | 10451 | ||
9904 | if test -n "$PROG_IPCS"; then | 10452 | if test -n "$PROG_IPCS"; then |
9905 | echo "$as_me:9905: result: $PROG_IPCS" >&5 | 10453 | echo "$as_me:10453: result: $PROG_IPCS" >&5 |
9906 | echo "${ECHO_T}$PROG_IPCS" >&6 | 10454 | echo "${ECHO_T}$PROG_IPCS" >&6 |
9907 | else | 10455 | else |
9908 | echo "$as_me:9908: result: no" >&5 | 10456 | echo "$as_me:10456: result: no" >&5 |
9909 | echo "${ECHO_T}no" >&6 | 10457 | echo "${ECHO_T}no" >&6 |
9910 | fi | 10458 | fi |
9911 | 10459 | ||
@@ -9915,7 +10463,7 @@ fi | |||
9915 | 10463 | ||
9916 | # Extract the first word of "tail", so it can be a program name with args. | 10464 | # Extract the first word of "tail", so it can be a program name with args. |
9917 | set dummy tail; ac_word=$2 | 10465 | set dummy tail; ac_word=$2 |
9918 | echo "$as_me:9918: checking for $ac_word" >&5 | 10466 | echo "$as_me:10466: checking for $ac_word" >&5 |
9919 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 | 10467 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 |
9920 | if test "${ac_cv_path_PROG_TAIL+set}" = set; then | 10468 | if test "${ac_cv_path_PROG_TAIL+set}" = set; then |
9921 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 10469 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -9932,7 +10480,7 @@ for ac_dir in $ac_dummy; do | |||
9932 | test -z "$ac_dir" && ac_dir=. | 10480 | test -z "$ac_dir" && ac_dir=. |
9933 | if $as_executable_p "$ac_dir/$ac_word"; then | 10481 | if $as_executable_p "$ac_dir/$ac_word"; then |
9934 | ac_cv_path_PROG_TAIL="$ac_dir/$ac_word" | 10482 | ac_cv_path_PROG_TAIL="$ac_dir/$ac_word" |
9935 | echo "$as_me:9935: found $ac_dir/$ac_word" >&5 | 10483 | echo "$as_me:10483: found $ac_dir/$ac_word" >&5 |
9936 | break | 10484 | break |
9937 | fi | 10485 | fi |
9938 | done | 10486 | done |
@@ -9943,10 +10491,10 @@ fi | |||
9943 | PROG_TAIL=$ac_cv_path_PROG_TAIL | 10491 | PROG_TAIL=$ac_cv_path_PROG_TAIL |
9944 | 10492 | ||
9945 | if test -n "$PROG_TAIL"; then | 10493 | if test -n "$PROG_TAIL"; then |
9946 | echo "$as_me:9946: result: $PROG_TAIL" >&5 | 10494 | echo "$as_me:10494: result: $PROG_TAIL" >&5 |
9947 | echo "${ECHO_T}$PROG_TAIL" >&6 | 10495 | echo "${ECHO_T}$PROG_TAIL" >&6 |
9948 | else | 10496 | else |
9949 | echo "$as_me:9949: result: no" >&5 | 10497 | echo "$as_me:10497: result: no" >&5 |
9950 | echo "${ECHO_T}no" >&6 | 10498 | echo "${ECHO_T}no" >&6 |
9951 | fi | 10499 | fi |
9952 | 10500 | ||
@@ -9977,13 +10525,13 @@ if test ! -z "$SONY" ; then | |||
9977 | fi | 10525 | fi |
9978 | 10526 | ||
9979 | # Checks for data types | 10527 | # Checks for data types |
9980 | echo "$as_me:9980: checking for char" >&5 | 10528 | echo "$as_me:10528: checking for char" >&5 |
9981 | echo $ECHO_N "checking for char... $ECHO_C" >&6 | 10529 | echo $ECHO_N "checking for char... $ECHO_C" >&6 |
9982 | if test "${ac_cv_type_char+set}" = set; then | 10530 | if test "${ac_cv_type_char+set}" = set; then |
9983 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 10531 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
9984 | else | 10532 | else |
9985 | cat >conftest.$ac_ext <<_ACEOF | 10533 | cat >conftest.$ac_ext <<_ACEOF |
9986 | #line 9986 "configure" | 10534 | #line 10534 "configure" |
9987 | #include "confdefs.h" | 10535 | #include "confdefs.h" |
9988 | $ac_includes_default | 10536 | $ac_includes_default |
9989 | int | 10537 | int |
@@ -9998,16 +10546,16 @@ if (sizeof (char)) | |||
9998 | } | 10546 | } |
9999 | _ACEOF | 10547 | _ACEOF |
10000 | rm -f conftest.$ac_objext | 10548 | rm -f conftest.$ac_objext |
10001 | if { (eval echo "$as_me:10001: \"$ac_compile\"") >&5 | 10549 | if { (eval echo "$as_me:10549: \"$ac_compile\"") >&5 |
10002 | (eval $ac_compile) 2>&5 | 10550 | (eval $ac_compile) 2>&5 |
10003 | ac_status=$? | 10551 | ac_status=$? |
10004 | echo "$as_me:10004: \$? = $ac_status" >&5 | 10552 | echo "$as_me:10552: \$? = $ac_status" >&5 |
10005 | (exit $ac_status); } && | 10553 | (exit $ac_status); } && |
10006 | { ac_try='test -s conftest.$ac_objext' | 10554 | { ac_try='test -s conftest.$ac_objext' |
10007 | { (eval echo "$as_me:10007: \"$ac_try\"") >&5 | 10555 | { (eval echo "$as_me:10555: \"$ac_try\"") >&5 |
10008 | (eval $ac_try) 2>&5 | 10556 | (eval $ac_try) 2>&5 |
10009 | ac_status=$? | 10557 | ac_status=$? |
10010 | echo "$as_me:10010: \$? = $ac_status" >&5 | 10558 | echo "$as_me:10558: \$? = $ac_status" >&5 |
10011 | (exit $ac_status); }; }; then | 10559 | (exit $ac_status); }; }; then |
10012 | ac_cv_type_char=yes | 10560 | ac_cv_type_char=yes |
10013 | else | 10561 | else |
@@ -10017,10 +10565,10 @@ ac_cv_type_char=no | |||
10017 | fi | 10565 | fi |
10018 | rm -f conftest.$ac_objext conftest.$ac_ext | 10566 | rm -f conftest.$ac_objext conftest.$ac_ext |
10019 | fi | 10567 | fi |
10020 | echo "$as_me:10020: result: $ac_cv_type_char" >&5 | 10568 | echo "$as_me:10568: result: $ac_cv_type_char" >&5 |
10021 | echo "${ECHO_T}$ac_cv_type_char" >&6 | 10569 | echo "${ECHO_T}$ac_cv_type_char" >&6 |
10022 | 10570 | ||
10023 | echo "$as_me:10023: checking size of char" >&5 | 10571 | echo "$as_me:10571: checking size of char" >&5 |
10024 | echo $ECHO_N "checking size of char... $ECHO_C" >&6 | 10572 | echo $ECHO_N "checking size of char... $ECHO_C" >&6 |
10025 | if test "${ac_cv_sizeof_char+set}" = set; then | 10573 | if test "${ac_cv_sizeof_char+set}" = set; then |
10026 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 10574 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -10029,7 +10577,7 @@ else | |||
10029 | if test "$cross_compiling" = yes; then | 10577 | if test "$cross_compiling" = yes; then |
10030 | # Depending upon the size, compute the lo and hi bounds. | 10578 | # Depending upon the size, compute the lo and hi bounds. |
10031 | cat >conftest.$ac_ext <<_ACEOF | 10579 | cat >conftest.$ac_ext <<_ACEOF |
10032 | #line 10032 "configure" | 10580 | #line 10580 "configure" |
10033 | #include "confdefs.h" | 10581 | #include "confdefs.h" |
10034 | $ac_includes_default | 10582 | $ac_includes_default |
10035 | int | 10583 | int |
@@ -10041,21 +10589,21 @@ int _array_ [1 - 2 * !((sizeof (char)) >= 0)] | |||
10041 | } | 10589 | } |
10042 | _ACEOF | 10590 | _ACEOF |
10043 | rm -f conftest.$ac_objext | 10591 | rm -f conftest.$ac_objext |
10044 | if { (eval echo "$as_me:10044: \"$ac_compile\"") >&5 | 10592 | if { (eval echo "$as_me:10592: \"$ac_compile\"") >&5 |
10045 | (eval $ac_compile) 2>&5 | 10593 | (eval $ac_compile) 2>&5 |
10046 | ac_status=$? | 10594 | ac_status=$? |
10047 | echo "$as_me:10047: \$? = $ac_status" >&5 | 10595 | echo "$as_me:10595: \$? = $ac_status" >&5 |
10048 | (exit $ac_status); } && | 10596 | (exit $ac_status); } && |
10049 | { ac_try='test -s conftest.$ac_objext' | 10597 | { ac_try='test -s conftest.$ac_objext' |
10050 | { (eval echo "$as_me:10050: \"$ac_try\"") >&5 | 10598 | { (eval echo "$as_me:10598: \"$ac_try\"") >&5 |
10051 | (eval $ac_try) 2>&5 | 10599 | (eval $ac_try) 2>&5 |
10052 | ac_status=$? | 10600 | ac_status=$? |
10053 | echo "$as_me:10053: \$? = $ac_status" >&5 | 10601 | echo "$as_me:10601: \$? = $ac_status" >&5 |
10054 | (exit $ac_status); }; }; then | 10602 | (exit $ac_status); }; }; then |
10055 | ac_lo=0 ac_mid=0 | 10603 | ac_lo=0 ac_mid=0 |
10056 | while :; do | 10604 | while :; do |
10057 | cat >conftest.$ac_ext <<_ACEOF | 10605 | cat >conftest.$ac_ext <<_ACEOF |
10058 | #line 10058 "configure" | 10606 | #line 10606 "configure" |
10059 | #include "confdefs.h" | 10607 | #include "confdefs.h" |
10060 | $ac_includes_default | 10608 | $ac_includes_default |
10061 | int | 10609 | int |
@@ -10067,16 +10615,16 @@ int _array_ [1 - 2 * !((sizeof (char)) <= $ac_mid)] | |||
10067 | } | 10615 | } |
10068 | _ACEOF | 10616 | _ACEOF |
10069 | rm -f conftest.$ac_objext | 10617 | rm -f conftest.$ac_objext |
10070 | if { (eval echo "$as_me:10070: \"$ac_compile\"") >&5 | 10618 | if { (eval echo "$as_me:10618: \"$ac_compile\"") >&5 |
10071 | (eval $ac_compile) 2>&5 | 10619 | (eval $ac_compile) 2>&5 |
10072 | ac_status=$? | 10620 | ac_status=$? |
10073 | echo "$as_me:10073: \$? = $ac_status" >&5 | 10621 | echo "$as_me:10621: \$? = $ac_status" >&5 |
10074 | (exit $ac_status); } && | 10622 | (exit $ac_status); } && |
10075 | { ac_try='test -s conftest.$ac_objext' | 10623 | { ac_try='test -s conftest.$ac_objext' |
10076 | { (eval echo "$as_me:10076: \"$ac_try\"") >&5 | 10624 | { (eval echo "$as_me:10624: \"$ac_try\"") >&5 |
10077 | (eval $ac_try) 2>&5 | 10625 | (eval $ac_try) 2>&5 |
10078 | ac_status=$? | 10626 | ac_status=$? |
10079 | echo "$as_me:10079: \$? = $ac_status" >&5 | 10627 | echo "$as_me:10627: \$? = $ac_status" >&5 |
10080 | (exit $ac_status); }; }; then | 10628 | (exit $ac_status); }; }; then |
10081 | ac_hi=$ac_mid; break | 10629 | ac_hi=$ac_mid; break |
10082 | else | 10630 | else |
@@ -10092,7 +10640,7 @@ cat conftest.$ac_ext >&5 | |||
10092 | ac_hi=-1 ac_mid=-1 | 10640 | ac_hi=-1 ac_mid=-1 |
10093 | while :; do | 10641 | while :; do |
10094 | cat >conftest.$ac_ext <<_ACEOF | 10642 | cat >conftest.$ac_ext <<_ACEOF |
10095 | #line 10095 "configure" | 10643 | #line 10643 "configure" |
10096 | #include "confdefs.h" | 10644 | #include "confdefs.h" |
10097 | $ac_includes_default | 10645 | $ac_includes_default |
10098 | int | 10646 | int |
@@ -10104,16 +10652,16 @@ int _array_ [1 - 2 * !((sizeof (char)) >= $ac_mid)] | |||
10104 | } | 10652 | } |
10105 | _ACEOF | 10653 | _ACEOF |
10106 | rm -f conftest.$ac_objext | 10654 | rm -f conftest.$ac_objext |
10107 | if { (eval echo "$as_me:10107: \"$ac_compile\"") >&5 | 10655 | if { (eval echo "$as_me:10655: \"$ac_compile\"") >&5 |
10108 | (eval $ac_compile) 2>&5 | 10656 | (eval $ac_compile) 2>&5 |
10109 | ac_status=$? | 10657 | ac_status=$? |
10110 | echo "$as_me:10110: \$? = $ac_status" >&5 | 10658 | echo "$as_me:10658: \$? = $ac_status" >&5 |
10111 | (exit $ac_status); } && | 10659 | (exit $ac_status); } && |
10112 | { ac_try='test -s conftest.$ac_objext' | 10660 | { ac_try='test -s conftest.$ac_objext' |
10113 | { (eval echo "$as_me:10113: \"$ac_try\"") >&5 | 10661 | { (eval echo "$as_me:10661: \"$ac_try\"") >&5 |
10114 | (eval $ac_try) 2>&5 | 10662 | (eval $ac_try) 2>&5 |
10115 | ac_status=$? | 10663 | ac_status=$? |
10116 | echo "$as_me:10116: \$? = $ac_status" >&5 | 10664 | echo "$as_me:10664: \$? = $ac_status" >&5 |
10117 | (exit $ac_status); }; }; then | 10665 | (exit $ac_status); }; }; then |
10118 | ac_lo=$ac_mid; break | 10666 | ac_lo=$ac_mid; break |
10119 | else | 10667 | else |
@@ -10129,7 +10677,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext | |||
10129 | while test "x$ac_lo" != "x$ac_hi"; do | 10677 | while test "x$ac_lo" != "x$ac_hi"; do |
10130 | ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` | 10678 | ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` |
10131 | cat >conftest.$ac_ext <<_ACEOF | 10679 | cat >conftest.$ac_ext <<_ACEOF |
10132 | #line 10132 "configure" | 10680 | #line 10680 "configure" |
10133 | #include "confdefs.h" | 10681 | #include "confdefs.h" |
10134 | $ac_includes_default | 10682 | $ac_includes_default |
10135 | int | 10683 | int |
@@ -10141,16 +10689,16 @@ int _array_ [1 - 2 * !((sizeof (char)) <= $ac_mid)] | |||
10141 | } | 10689 | } |
10142 | _ACEOF | 10690 | _ACEOF |
10143 | rm -f conftest.$ac_objext | 10691 | rm -f conftest.$ac_objext |
10144 | if { (eval echo "$as_me:10144: \"$ac_compile\"") >&5 | 10692 | if { (eval echo "$as_me:10692: \"$ac_compile\"") >&5 |
10145 | (eval $ac_compile) 2>&5 | 10693 | (eval $ac_compile) 2>&5 |
10146 | ac_status=$? | 10694 | ac_status=$? |
10147 | echo "$as_me:10147: \$? = $ac_status" >&5 | 10695 | echo "$as_me:10695: \$? = $ac_status" >&5 |
10148 | (exit $ac_status); } && | 10696 | (exit $ac_status); } && |
10149 | { ac_try='test -s conftest.$ac_objext' | 10697 | { ac_try='test -s conftest.$ac_objext' |
10150 | { (eval echo "$as_me:10150: \"$ac_try\"") >&5 | 10698 | { (eval echo "$as_me:10698: \"$ac_try\"") >&5 |
10151 | (eval $ac_try) 2>&5 | 10699 | (eval $ac_try) 2>&5 |
10152 | ac_status=$? | 10700 | ac_status=$? |
10153 | echo "$as_me:10153: \$? = $ac_status" >&5 | 10701 | echo "$as_me:10701: \$? = $ac_status" >&5 |
10154 | (exit $ac_status); }; }; then | 10702 | (exit $ac_status); }; }; then |
10155 | ac_hi=$ac_mid | 10703 | ac_hi=$ac_mid |
10156 | else | 10704 | else |
@@ -10163,12 +10711,12 @@ done | |||
10163 | ac_cv_sizeof_char=$ac_lo | 10711 | ac_cv_sizeof_char=$ac_lo |
10164 | else | 10712 | else |
10165 | if test "$cross_compiling" = yes; then | 10713 | if test "$cross_compiling" = yes; then |
10166 | { { echo "$as_me:10166: error: cannot run test program while cross compiling" >&5 | 10714 | { { echo "$as_me:10714: error: cannot run test program while cross compiling" >&5 |
10167 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} | 10715 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} |
10168 | { (exit 1); exit 1; }; } | 10716 | { (exit 1); exit 1; }; } |
10169 | else | 10717 | else |
10170 | cat >conftest.$ac_ext <<_ACEOF | 10718 | cat >conftest.$ac_ext <<_ACEOF |
10171 | #line 10171 "configure" | 10719 | #line 10719 "configure" |
10172 | #include "confdefs.h" | 10720 | #include "confdefs.h" |
10173 | $ac_includes_default | 10721 | $ac_includes_default |
10174 | int | 10722 | int |
@@ -10184,15 +10732,15 @@ fclose (f); | |||
10184 | } | 10732 | } |
10185 | _ACEOF | 10733 | _ACEOF |
10186 | rm -f conftest$ac_exeext | 10734 | rm -f conftest$ac_exeext |
10187 | if { (eval echo "$as_me:10187: \"$ac_link\"") >&5 | 10735 | if { (eval echo "$as_me:10735: \"$ac_link\"") >&5 |
10188 | (eval $ac_link) 2>&5 | 10736 | (eval $ac_link) 2>&5 |
10189 | ac_status=$? | 10737 | ac_status=$? |
10190 | echo "$as_me:10190: \$? = $ac_status" >&5 | 10738 | echo "$as_me:10738: \$? = $ac_status" >&5 |
10191 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' | 10739 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' |
10192 | { (eval echo "$as_me:10192: \"$ac_try\"") >&5 | 10740 | { (eval echo "$as_me:10740: \"$ac_try\"") >&5 |
10193 | (eval $ac_try) 2>&5 | 10741 | (eval $ac_try) 2>&5 |
10194 | ac_status=$? | 10742 | ac_status=$? |
10195 | echo "$as_me:10195: \$? = $ac_status" >&5 | 10743 | echo "$as_me:10743: \$? = $ac_status" >&5 |
10196 | (exit $ac_status); }; }; then | 10744 | (exit $ac_status); }; }; then |
10197 | ac_cv_sizeof_char=`cat conftest.val` | 10745 | ac_cv_sizeof_char=`cat conftest.val` |
10198 | else | 10746 | else |
@@ -10208,19 +10756,19 @@ else | |||
10208 | ac_cv_sizeof_char=0 | 10756 | ac_cv_sizeof_char=0 |
10209 | fi | 10757 | fi |
10210 | fi | 10758 | fi |
10211 | echo "$as_me:10211: result: $ac_cv_sizeof_char" >&5 | 10759 | echo "$as_me:10759: result: $ac_cv_sizeof_char" >&5 |
10212 | echo "${ECHO_T}$ac_cv_sizeof_char" >&6 | 10760 | echo "${ECHO_T}$ac_cv_sizeof_char" >&6 |
10213 | cat >>confdefs.h <<EOF | 10761 | cat >>confdefs.h <<EOF |
10214 | #define SIZEOF_CHAR $ac_cv_sizeof_char | 10762 | #define SIZEOF_CHAR $ac_cv_sizeof_char |
10215 | EOF | 10763 | EOF |
10216 | 10764 | ||
10217 | echo "$as_me:10217: checking for short int" >&5 | 10765 | echo "$as_me:10765: checking for short int" >&5 |
10218 | echo $ECHO_N "checking for short int... $ECHO_C" >&6 | 10766 | echo $ECHO_N "checking for short int... $ECHO_C" >&6 |
10219 | if test "${ac_cv_type_short_int+set}" = set; then | 10767 | if test "${ac_cv_type_short_int+set}" = set; then |
10220 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 10768 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
10221 | else | 10769 | else |
10222 | cat >conftest.$ac_ext <<_ACEOF | 10770 | cat >conftest.$ac_ext <<_ACEOF |
10223 | #line 10223 "configure" | 10771 | #line 10771 "configure" |
10224 | #include "confdefs.h" | 10772 | #include "confdefs.h" |
10225 | $ac_includes_default | 10773 | $ac_includes_default |
10226 | int | 10774 | int |
@@ -10235,16 +10783,16 @@ if (sizeof (short int)) | |||
10235 | } | 10783 | } |
10236 | _ACEOF | 10784 | _ACEOF |
10237 | rm -f conftest.$ac_objext | 10785 | rm -f conftest.$ac_objext |
10238 | if { (eval echo "$as_me:10238: \"$ac_compile\"") >&5 | 10786 | if { (eval echo "$as_me:10786: \"$ac_compile\"") >&5 |
10239 | (eval $ac_compile) 2>&5 | 10787 | (eval $ac_compile) 2>&5 |
10240 | ac_status=$? | 10788 | ac_status=$? |
10241 | echo "$as_me:10241: \$? = $ac_status" >&5 | 10789 | echo "$as_me:10789: \$? = $ac_status" >&5 |
10242 | (exit $ac_status); } && | 10790 | (exit $ac_status); } && |
10243 | { ac_try='test -s conftest.$ac_objext' | 10791 | { ac_try='test -s conftest.$ac_objext' |
10244 | { (eval echo "$as_me:10244: \"$ac_try\"") >&5 | 10792 | { (eval echo "$as_me:10792: \"$ac_try\"") >&5 |
10245 | (eval $ac_try) 2>&5 | 10793 | (eval $ac_try) 2>&5 |
10246 | ac_status=$? | 10794 | ac_status=$? |
10247 | echo "$as_me:10247: \$? = $ac_status" >&5 | 10795 | echo "$as_me:10795: \$? = $ac_status" >&5 |
10248 | (exit $ac_status); }; }; then | 10796 | (exit $ac_status); }; }; then |
10249 | ac_cv_type_short_int=yes | 10797 | ac_cv_type_short_int=yes |
10250 | else | 10798 | else |
@@ -10254,10 +10802,10 @@ ac_cv_type_short_int=no | |||
10254 | fi | 10802 | fi |
10255 | rm -f conftest.$ac_objext conftest.$ac_ext | 10803 | rm -f conftest.$ac_objext conftest.$ac_ext |
10256 | fi | 10804 | fi |
10257 | echo "$as_me:10257: result: $ac_cv_type_short_int" >&5 | 10805 | echo "$as_me:10805: result: $ac_cv_type_short_int" >&5 |
10258 | echo "${ECHO_T}$ac_cv_type_short_int" >&6 | 10806 | echo "${ECHO_T}$ac_cv_type_short_int" >&6 |
10259 | 10807 | ||
10260 | echo "$as_me:10260: checking size of short int" >&5 | 10808 | echo "$as_me:10808: checking size of short int" >&5 |
10261 | echo $ECHO_N "checking size of short int... $ECHO_C" >&6 | 10809 | echo $ECHO_N "checking size of short int... $ECHO_C" >&6 |
10262 | if test "${ac_cv_sizeof_short_int+set}" = set; then | 10810 | if test "${ac_cv_sizeof_short_int+set}" = set; then |
10263 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 10811 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -10266,7 +10814,7 @@ else | |||
10266 | if test "$cross_compiling" = yes; then | 10814 | if test "$cross_compiling" = yes; then |
10267 | # Depending upon the size, compute the lo and hi bounds. | 10815 | # Depending upon the size, compute the lo and hi bounds. |
10268 | cat >conftest.$ac_ext <<_ACEOF | 10816 | cat >conftest.$ac_ext <<_ACEOF |
10269 | #line 10269 "configure" | 10817 | #line 10817 "configure" |
10270 | #include "confdefs.h" | 10818 | #include "confdefs.h" |
10271 | $ac_includes_default | 10819 | $ac_includes_default |
10272 | int | 10820 | int |
@@ -10278,21 +10826,21 @@ int _array_ [1 - 2 * !((sizeof (short int)) >= 0)] | |||
10278 | } | 10826 | } |
10279 | _ACEOF | 10827 | _ACEOF |
10280 | rm -f conftest.$ac_objext | 10828 | rm -f conftest.$ac_objext |
10281 | if { (eval echo "$as_me:10281: \"$ac_compile\"") >&5 | 10829 | if { (eval echo "$as_me:10829: \"$ac_compile\"") >&5 |
10282 | (eval $ac_compile) 2>&5 | 10830 | (eval $ac_compile) 2>&5 |
10283 | ac_status=$? | 10831 | ac_status=$? |
10284 | echo "$as_me:10284: \$? = $ac_status" >&5 | 10832 | echo "$as_me:10832: \$? = $ac_status" >&5 |
10285 | (exit $ac_status); } && | 10833 | (exit $ac_status); } && |
10286 | { ac_try='test -s conftest.$ac_objext' | 10834 | { ac_try='test -s conftest.$ac_objext' |
10287 | { (eval echo "$as_me:10287: \"$ac_try\"") >&5 | 10835 | { (eval echo "$as_me:10835: \"$ac_try\"") >&5 |
10288 | (eval $ac_try) 2>&5 | 10836 | (eval $ac_try) 2>&5 |
10289 | ac_status=$? | 10837 | ac_status=$? |
10290 | echo "$as_me:10290: \$? = $ac_status" >&5 | 10838 | echo "$as_me:10838: \$? = $ac_status" >&5 |
10291 | (exit $ac_status); }; }; then | 10839 | (exit $ac_status); }; }; then |
10292 | ac_lo=0 ac_mid=0 | 10840 | ac_lo=0 ac_mid=0 |
10293 | while :; do | 10841 | while :; do |
10294 | cat >conftest.$ac_ext <<_ACEOF | 10842 | cat >conftest.$ac_ext <<_ACEOF |
10295 | #line 10295 "configure" | 10843 | #line 10843 "configure" |
10296 | #include "confdefs.h" | 10844 | #include "confdefs.h" |
10297 | $ac_includes_default | 10845 | $ac_includes_default |
10298 | int | 10846 | int |
@@ -10304,16 +10852,16 @@ int _array_ [1 - 2 * !((sizeof (short int)) <= $ac_mid)] | |||
10304 | } | 10852 | } |
10305 | _ACEOF | 10853 | _ACEOF |
10306 | rm -f conftest.$ac_objext | 10854 | rm -f conftest.$ac_objext |
10307 | if { (eval echo "$as_me:10307: \"$ac_compile\"") >&5 | 10855 | if { (eval echo "$as_me:10855: \"$ac_compile\"") >&5 |
10308 | (eval $ac_compile) 2>&5 | 10856 | (eval $ac_compile) 2>&5 |
10309 | ac_status=$? | 10857 | ac_status=$? |
10310 | echo "$as_me:10310: \$? = $ac_status" >&5 | 10858 | echo "$as_me:10858: \$? = $ac_status" >&5 |
10311 | (exit $ac_status); } && | 10859 | (exit $ac_status); } && |
10312 | { ac_try='test -s conftest.$ac_objext' | 10860 | { ac_try='test -s conftest.$ac_objext' |
10313 | { (eval echo "$as_me:10313: \"$ac_try\"") >&5 | 10861 | { (eval echo "$as_me:10861: \"$ac_try\"") >&5 |
10314 | (eval $ac_try) 2>&5 | 10862 | (eval $ac_try) 2>&5 |
10315 | ac_status=$? | 10863 | ac_status=$? |
10316 | echo "$as_me:10316: \$? = $ac_status" >&5 | 10864 | echo "$as_me:10864: \$? = $ac_status" >&5 |
10317 | (exit $ac_status); }; }; then | 10865 | (exit $ac_status); }; }; then |
10318 | ac_hi=$ac_mid; break | 10866 | ac_hi=$ac_mid; break |
10319 | else | 10867 | else |
@@ -10329,7 +10877,7 @@ cat conftest.$ac_ext >&5 | |||
10329 | ac_hi=-1 ac_mid=-1 | 10877 | ac_hi=-1 ac_mid=-1 |
10330 | while :; do | 10878 | while :; do |
10331 | cat >conftest.$ac_ext <<_ACEOF | 10879 | cat >conftest.$ac_ext <<_ACEOF |
10332 | #line 10332 "configure" | 10880 | #line 10880 "configure" |
10333 | #include "confdefs.h" | 10881 | #include "confdefs.h" |
10334 | $ac_includes_default | 10882 | $ac_includes_default |
10335 | int | 10883 | int |
@@ -10341,16 +10889,16 @@ int _array_ [1 - 2 * !((sizeof (short int)) >= $ac_mid)] | |||
10341 | } | 10889 | } |
10342 | _ACEOF | 10890 | _ACEOF |
10343 | rm -f conftest.$ac_objext | 10891 | rm -f conftest.$ac_objext |
10344 | if { (eval echo "$as_me:10344: \"$ac_compile\"") >&5 | 10892 | if { (eval echo "$as_me:10892: \"$ac_compile\"") >&5 |
10345 | (eval $ac_compile) 2>&5 | 10893 | (eval $ac_compile) 2>&5 |
10346 | ac_status=$? | 10894 | ac_status=$? |
10347 | echo "$as_me:10347: \$? = $ac_status" >&5 | 10895 | echo "$as_me:10895: \$? = $ac_status" >&5 |
10348 | (exit $ac_status); } && | 10896 | (exit $ac_status); } && |
10349 | { ac_try='test -s conftest.$ac_objext' | 10897 | { ac_try='test -s conftest.$ac_objext' |
10350 | { (eval echo "$as_me:10350: \"$ac_try\"") >&5 | 10898 | { (eval echo "$as_me:10898: \"$ac_try\"") >&5 |
10351 | (eval $ac_try) 2>&5 | 10899 | (eval $ac_try) 2>&5 |
10352 | ac_status=$? | 10900 | ac_status=$? |
10353 | echo "$as_me:10353: \$? = $ac_status" >&5 | 10901 | echo "$as_me:10901: \$? = $ac_status" >&5 |
10354 | (exit $ac_status); }; }; then | 10902 | (exit $ac_status); }; }; then |
10355 | ac_lo=$ac_mid; break | 10903 | ac_lo=$ac_mid; break |
10356 | else | 10904 | else |
@@ -10366,7 +10914,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext | |||
10366 | while test "x$ac_lo" != "x$ac_hi"; do | 10914 | while test "x$ac_lo" != "x$ac_hi"; do |
10367 | ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` | 10915 | ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` |
10368 | cat >conftest.$ac_ext <<_ACEOF | 10916 | cat >conftest.$ac_ext <<_ACEOF |
10369 | #line 10369 "configure" | 10917 | #line 10917 "configure" |
10370 | #include "confdefs.h" | 10918 | #include "confdefs.h" |
10371 | $ac_includes_default | 10919 | $ac_includes_default |
10372 | int | 10920 | int |
@@ -10378,16 +10926,16 @@ int _array_ [1 - 2 * !((sizeof (short int)) <= $ac_mid)] | |||
10378 | } | 10926 | } |
10379 | _ACEOF | 10927 | _ACEOF |
10380 | rm -f conftest.$ac_objext | 10928 | rm -f conftest.$ac_objext |
10381 | if { (eval echo "$as_me:10381: \"$ac_compile\"") >&5 | 10929 | if { (eval echo "$as_me:10929: \"$ac_compile\"") >&5 |
10382 | (eval $ac_compile) 2>&5 | 10930 | (eval $ac_compile) 2>&5 |
10383 | ac_status=$? | 10931 | ac_status=$? |
10384 | echo "$as_me:10384: \$? = $ac_status" >&5 | 10932 | echo "$as_me:10932: \$? = $ac_status" >&5 |
10385 | (exit $ac_status); } && | 10933 | (exit $ac_status); } && |
10386 | { ac_try='test -s conftest.$ac_objext' | 10934 | { ac_try='test -s conftest.$ac_objext' |
10387 | { (eval echo "$as_me:10387: \"$ac_try\"") >&5 | 10935 | { (eval echo "$as_me:10935: \"$ac_try\"") >&5 |
10388 | (eval $ac_try) 2>&5 | 10936 | (eval $ac_try) 2>&5 |
10389 | ac_status=$? | 10937 | ac_status=$? |
10390 | echo "$as_me:10390: \$? = $ac_status" >&5 | 10938 | echo "$as_me:10938: \$? = $ac_status" >&5 |
10391 | (exit $ac_status); }; }; then | 10939 | (exit $ac_status); }; }; then |
10392 | ac_hi=$ac_mid | 10940 | ac_hi=$ac_mid |
10393 | else | 10941 | else |
@@ -10400,12 +10948,12 @@ done | |||
10400 | ac_cv_sizeof_short_int=$ac_lo | 10948 | ac_cv_sizeof_short_int=$ac_lo |
10401 | else | 10949 | else |
10402 | if test "$cross_compiling" = yes; then | 10950 | if test "$cross_compiling" = yes; then |
10403 | { { echo "$as_me:10403: error: cannot run test program while cross compiling" >&5 | 10951 | { { echo "$as_me:10951: error: cannot run test program while cross compiling" >&5 |
10404 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} | 10952 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} |
10405 | { (exit 1); exit 1; }; } | 10953 | { (exit 1); exit 1; }; } |
10406 | else | 10954 | else |
10407 | cat >conftest.$ac_ext <<_ACEOF | 10955 | cat >conftest.$ac_ext <<_ACEOF |
10408 | #line 10408 "configure" | 10956 | #line 10956 "configure" |
10409 | #include "confdefs.h" | 10957 | #include "confdefs.h" |
10410 | $ac_includes_default | 10958 | $ac_includes_default |
10411 | int | 10959 | int |
@@ -10421,15 +10969,15 @@ fclose (f); | |||
10421 | } | 10969 | } |
10422 | _ACEOF | 10970 | _ACEOF |
10423 | rm -f conftest$ac_exeext | 10971 | rm -f conftest$ac_exeext |
10424 | if { (eval echo "$as_me:10424: \"$ac_link\"") >&5 | 10972 | if { (eval echo "$as_me:10972: \"$ac_link\"") >&5 |
10425 | (eval $ac_link) 2>&5 | 10973 | (eval $ac_link) 2>&5 |
10426 | ac_status=$? | 10974 | ac_status=$? |
10427 | echo "$as_me:10427: \$? = $ac_status" >&5 | 10975 | echo "$as_me:10975: \$? = $ac_status" >&5 |
10428 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' | 10976 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' |
10429 | { (eval echo "$as_me:10429: \"$ac_try\"") >&5 | 10977 | { (eval echo "$as_me:10977: \"$ac_try\"") >&5 |
10430 | (eval $ac_try) 2>&5 | 10978 | (eval $ac_try) 2>&5 |
10431 | ac_status=$? | 10979 | ac_status=$? |
10432 | echo "$as_me:10432: \$? = $ac_status" >&5 | 10980 | echo "$as_me:10980: \$? = $ac_status" >&5 |
10433 | (exit $ac_status); }; }; then | 10981 | (exit $ac_status); }; }; then |
10434 | ac_cv_sizeof_short_int=`cat conftest.val` | 10982 | ac_cv_sizeof_short_int=`cat conftest.val` |
10435 | else | 10983 | else |
@@ -10445,19 +10993,19 @@ else | |||
10445 | ac_cv_sizeof_short_int=0 | 10993 | ac_cv_sizeof_short_int=0 |
10446 | fi | 10994 | fi |
10447 | fi | 10995 | fi |
10448 | echo "$as_me:10448: result: $ac_cv_sizeof_short_int" >&5 | 10996 | echo "$as_me:10996: result: $ac_cv_sizeof_short_int" >&5 |
10449 | echo "${ECHO_T}$ac_cv_sizeof_short_int" >&6 | 10997 | echo "${ECHO_T}$ac_cv_sizeof_short_int" >&6 |
10450 | cat >>confdefs.h <<EOF | 10998 | cat >>confdefs.h <<EOF |
10451 | #define SIZEOF_SHORT_INT $ac_cv_sizeof_short_int | 10999 | #define SIZEOF_SHORT_INT $ac_cv_sizeof_short_int |
10452 | EOF | 11000 | EOF |
10453 | 11001 | ||
10454 | echo "$as_me:10454: checking for int" >&5 | 11002 | echo "$as_me:11002: checking for int" >&5 |
10455 | echo $ECHO_N "checking for int... $ECHO_C" >&6 | 11003 | echo $ECHO_N "checking for int... $ECHO_C" >&6 |
10456 | if test "${ac_cv_type_int+set}" = set; then | 11004 | if test "${ac_cv_type_int+set}" = set; then |
10457 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 11005 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
10458 | else | 11006 | else |
10459 | cat >conftest.$ac_ext <<_ACEOF | 11007 | cat >conftest.$ac_ext <<_ACEOF |
10460 | #line 10460 "configure" | 11008 | #line 11008 "configure" |
10461 | #include "confdefs.h" | 11009 | #include "confdefs.h" |
10462 | $ac_includes_default | 11010 | $ac_includes_default |
10463 | int | 11011 | int |
@@ -10472,16 +11020,16 @@ if (sizeof (int)) | |||
10472 | } | 11020 | } |
10473 | _ACEOF | 11021 | _ACEOF |
10474 | rm -f conftest.$ac_objext | 11022 | rm -f conftest.$ac_objext |
10475 | if { (eval echo "$as_me:10475: \"$ac_compile\"") >&5 | 11023 | if { (eval echo "$as_me:11023: \"$ac_compile\"") >&5 |
10476 | (eval $ac_compile) 2>&5 | 11024 | (eval $ac_compile) 2>&5 |
10477 | ac_status=$? | 11025 | ac_status=$? |
10478 | echo "$as_me:10478: \$? = $ac_status" >&5 | 11026 | echo "$as_me:11026: \$? = $ac_status" >&5 |
10479 | (exit $ac_status); } && | 11027 | (exit $ac_status); } && |
10480 | { ac_try='test -s conftest.$ac_objext' | 11028 | { ac_try='test -s conftest.$ac_objext' |
10481 | { (eval echo "$as_me:10481: \"$ac_try\"") >&5 | 11029 | { (eval echo "$as_me:11029: \"$ac_try\"") >&5 |
10482 | (eval $ac_try) 2>&5 | 11030 | (eval $ac_try) 2>&5 |
10483 | ac_status=$? | 11031 | ac_status=$? |
10484 | echo "$as_me:10484: \$? = $ac_status" >&5 | 11032 | echo "$as_me:11032: \$? = $ac_status" >&5 |
10485 | (exit $ac_status); }; }; then | 11033 | (exit $ac_status); }; }; then |
10486 | ac_cv_type_int=yes | 11034 | ac_cv_type_int=yes |
10487 | else | 11035 | else |
@@ -10491,10 +11039,10 @@ ac_cv_type_int=no | |||
10491 | fi | 11039 | fi |
10492 | rm -f conftest.$ac_objext conftest.$ac_ext | 11040 | rm -f conftest.$ac_objext conftest.$ac_ext |
10493 | fi | 11041 | fi |
10494 | echo "$as_me:10494: result: $ac_cv_type_int" >&5 | 11042 | echo "$as_me:11042: result: $ac_cv_type_int" >&5 |
10495 | echo "${ECHO_T}$ac_cv_type_int" >&6 | 11043 | echo "${ECHO_T}$ac_cv_type_int" >&6 |
10496 | 11044 | ||
10497 | echo "$as_me:10497: checking size of int" >&5 | 11045 | echo "$as_me:11045: checking size of int" >&5 |
10498 | echo $ECHO_N "checking size of int... $ECHO_C" >&6 | 11046 | echo $ECHO_N "checking size of int... $ECHO_C" >&6 |
10499 | if test "${ac_cv_sizeof_int+set}" = set; then | 11047 | if test "${ac_cv_sizeof_int+set}" = set; then |
10500 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 11048 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -10503,7 +11051,7 @@ else | |||
10503 | if test "$cross_compiling" = yes; then | 11051 | if test "$cross_compiling" = yes; then |
10504 | # Depending upon the size, compute the lo and hi bounds. | 11052 | # Depending upon the size, compute the lo and hi bounds. |
10505 | cat >conftest.$ac_ext <<_ACEOF | 11053 | cat >conftest.$ac_ext <<_ACEOF |
10506 | #line 10506 "configure" | 11054 | #line 11054 "configure" |
10507 | #include "confdefs.h" | 11055 | #include "confdefs.h" |
10508 | $ac_includes_default | 11056 | $ac_includes_default |
10509 | int | 11057 | int |
@@ -10515,21 +11063,21 @@ int _array_ [1 - 2 * !((sizeof (int)) >= 0)] | |||
10515 | } | 11063 | } |
10516 | _ACEOF | 11064 | _ACEOF |
10517 | rm -f conftest.$ac_objext | 11065 | rm -f conftest.$ac_objext |
10518 | if { (eval echo "$as_me:10518: \"$ac_compile\"") >&5 | 11066 | if { (eval echo "$as_me:11066: \"$ac_compile\"") >&5 |
10519 | (eval $ac_compile) 2>&5 | 11067 | (eval $ac_compile) 2>&5 |
10520 | ac_status=$? | 11068 | ac_status=$? |
10521 | echo "$as_me:10521: \$? = $ac_status" >&5 | 11069 | echo "$as_me:11069: \$? = $ac_status" >&5 |
10522 | (exit $ac_status); } && | 11070 | (exit $ac_status); } && |
10523 | { ac_try='test -s conftest.$ac_objext' | 11071 | { ac_try='test -s conftest.$ac_objext' |
10524 | { (eval echo "$as_me:10524: \"$ac_try\"") >&5 | 11072 | { (eval echo "$as_me:11072: \"$ac_try\"") >&5 |
10525 | (eval $ac_try) 2>&5 | 11073 | (eval $ac_try) 2>&5 |
10526 | ac_status=$? | 11074 | ac_status=$? |
10527 | echo "$as_me:10527: \$? = $ac_status" >&5 | 11075 | echo "$as_me:11075: \$? = $ac_status" >&5 |
10528 | (exit $ac_status); }; }; then | 11076 | (exit $ac_status); }; }; then |
10529 | ac_lo=0 ac_mid=0 | 11077 | ac_lo=0 ac_mid=0 |
10530 | while :; do | 11078 | while :; do |
10531 | cat >conftest.$ac_ext <<_ACEOF | 11079 | cat >conftest.$ac_ext <<_ACEOF |
10532 | #line 10532 "configure" | 11080 | #line 11080 "configure" |
10533 | #include "confdefs.h" | 11081 | #include "confdefs.h" |
10534 | $ac_includes_default | 11082 | $ac_includes_default |
10535 | int | 11083 | int |
@@ -10541,16 +11089,16 @@ int _array_ [1 - 2 * !((sizeof (int)) <= $ac_mid)] | |||
10541 | } | 11089 | } |
10542 | _ACEOF | 11090 | _ACEOF |
10543 | rm -f conftest.$ac_objext | 11091 | rm -f conftest.$ac_objext |
10544 | if { (eval echo "$as_me:10544: \"$ac_compile\"") >&5 | 11092 | if { (eval echo "$as_me:11092: \"$ac_compile\"") >&5 |
10545 | (eval $ac_compile) 2>&5 | 11093 | (eval $ac_compile) 2>&5 |
10546 | ac_status=$? | 11094 | ac_status=$? |
10547 | echo "$as_me:10547: \$? = $ac_status" >&5 | 11095 | echo "$as_me:11095: \$? = $ac_status" >&5 |
10548 | (exit $ac_status); } && | 11096 | (exit $ac_status); } && |
10549 | { ac_try='test -s conftest.$ac_objext' | 11097 | { ac_try='test -s conftest.$ac_objext' |
10550 | { (eval echo "$as_me:10550: \"$ac_try\"") >&5 | 11098 | { (eval echo "$as_me:11098: \"$ac_try\"") >&5 |
10551 | (eval $ac_try) 2>&5 | 11099 | (eval $ac_try) 2>&5 |
10552 | ac_status=$? | 11100 | ac_status=$? |
10553 | echo "$as_me:10553: \$? = $ac_status" >&5 | 11101 | echo "$as_me:11101: \$? = $ac_status" >&5 |
10554 | (exit $ac_status); }; }; then | 11102 | (exit $ac_status); }; }; then |
10555 | ac_hi=$ac_mid; break | 11103 | ac_hi=$ac_mid; break |
10556 | else | 11104 | else |
@@ -10566,7 +11114,7 @@ cat conftest.$ac_ext >&5 | |||
10566 | ac_hi=-1 ac_mid=-1 | 11114 | ac_hi=-1 ac_mid=-1 |
10567 | while :; do | 11115 | while :; do |
10568 | cat >conftest.$ac_ext <<_ACEOF | 11116 | cat >conftest.$ac_ext <<_ACEOF |
10569 | #line 10569 "configure" | 11117 | #line 11117 "configure" |
10570 | #include "confdefs.h" | 11118 | #include "confdefs.h" |
10571 | $ac_includes_default | 11119 | $ac_includes_default |
10572 | int | 11120 | int |
@@ -10578,16 +11126,16 @@ int _array_ [1 - 2 * !((sizeof (int)) >= $ac_mid)] | |||
10578 | } | 11126 | } |
10579 | _ACEOF | 11127 | _ACEOF |
10580 | rm -f conftest.$ac_objext | 11128 | rm -f conftest.$ac_objext |
10581 | if { (eval echo "$as_me:10581: \"$ac_compile\"") >&5 | 11129 | if { (eval echo "$as_me:11129: \"$ac_compile\"") >&5 |
10582 | (eval $ac_compile) 2>&5 | 11130 | (eval $ac_compile) 2>&5 |
10583 | ac_status=$? | 11131 | ac_status=$? |
10584 | echo "$as_me:10584: \$? = $ac_status" >&5 | 11132 | echo "$as_me:11132: \$? = $ac_status" >&5 |
10585 | (exit $ac_status); } && | 11133 | (exit $ac_status); } && |
10586 | { ac_try='test -s conftest.$ac_objext' | 11134 | { ac_try='test -s conftest.$ac_objext' |
10587 | { (eval echo "$as_me:10587: \"$ac_try\"") >&5 | 11135 | { (eval echo "$as_me:11135: \"$ac_try\"") >&5 |
10588 | (eval $ac_try) 2>&5 | 11136 | (eval $ac_try) 2>&5 |
10589 | ac_status=$? | 11137 | ac_status=$? |
10590 | echo "$as_me:10590: \$? = $ac_status" >&5 | 11138 | echo "$as_me:11138: \$? = $ac_status" >&5 |
10591 | (exit $ac_status); }; }; then | 11139 | (exit $ac_status); }; }; then |
10592 | ac_lo=$ac_mid; break | 11140 | ac_lo=$ac_mid; break |
10593 | else | 11141 | else |
@@ -10603,7 +11151,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext | |||
10603 | while test "x$ac_lo" != "x$ac_hi"; do | 11151 | while test "x$ac_lo" != "x$ac_hi"; do |
10604 | ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` | 11152 | ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` |
10605 | cat >conftest.$ac_ext <<_ACEOF | 11153 | cat >conftest.$ac_ext <<_ACEOF |
10606 | #line 10606 "configure" | 11154 | #line 11154 "configure" |
10607 | #include "confdefs.h" | 11155 | #include "confdefs.h" |
10608 | $ac_includes_default | 11156 | $ac_includes_default |
10609 | int | 11157 | int |
@@ -10615,16 +11163,16 @@ int _array_ [1 - 2 * !((sizeof (int)) <= $ac_mid)] | |||
10615 | } | 11163 | } |
10616 | _ACEOF | 11164 | _ACEOF |
10617 | rm -f conftest.$ac_objext | 11165 | rm -f conftest.$ac_objext |
10618 | if { (eval echo "$as_me:10618: \"$ac_compile\"") >&5 | 11166 | if { (eval echo "$as_me:11166: \"$ac_compile\"") >&5 |
10619 | (eval $ac_compile) 2>&5 | 11167 | (eval $ac_compile) 2>&5 |
10620 | ac_status=$? | 11168 | ac_status=$? |
10621 | echo "$as_me:10621: \$? = $ac_status" >&5 | 11169 | echo "$as_me:11169: \$? = $ac_status" >&5 |
10622 | (exit $ac_status); } && | 11170 | (exit $ac_status); } && |
10623 | { ac_try='test -s conftest.$ac_objext' | 11171 | { ac_try='test -s conftest.$ac_objext' |
10624 | { (eval echo "$as_me:10624: \"$ac_try\"") >&5 | 11172 | { (eval echo "$as_me:11172: \"$ac_try\"") >&5 |
10625 | (eval $ac_try) 2>&5 | 11173 | (eval $ac_try) 2>&5 |
10626 | ac_status=$? | 11174 | ac_status=$? |
10627 | echo "$as_me:10627: \$? = $ac_status" >&5 | 11175 | echo "$as_me:11175: \$? = $ac_status" >&5 |
10628 | (exit $ac_status); }; }; then | 11176 | (exit $ac_status); }; }; then |
10629 | ac_hi=$ac_mid | 11177 | ac_hi=$ac_mid |
10630 | else | 11178 | else |
@@ -10637,12 +11185,12 @@ done | |||
10637 | ac_cv_sizeof_int=$ac_lo | 11185 | ac_cv_sizeof_int=$ac_lo |
10638 | else | 11186 | else |
10639 | if test "$cross_compiling" = yes; then | 11187 | if test "$cross_compiling" = yes; then |
10640 | { { echo "$as_me:10640: error: cannot run test program while cross compiling" >&5 | 11188 | { { echo "$as_me:11188: error: cannot run test program while cross compiling" >&5 |
10641 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} | 11189 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} |
10642 | { (exit 1); exit 1; }; } | 11190 | { (exit 1); exit 1; }; } |
10643 | else | 11191 | else |
10644 | cat >conftest.$ac_ext <<_ACEOF | 11192 | cat >conftest.$ac_ext <<_ACEOF |
10645 | #line 10645 "configure" | 11193 | #line 11193 "configure" |
10646 | #include "confdefs.h" | 11194 | #include "confdefs.h" |
10647 | $ac_includes_default | 11195 | $ac_includes_default |
10648 | int | 11196 | int |
@@ -10658,15 +11206,15 @@ fclose (f); | |||
10658 | } | 11206 | } |
10659 | _ACEOF | 11207 | _ACEOF |
10660 | rm -f conftest$ac_exeext | 11208 | rm -f conftest$ac_exeext |
10661 | if { (eval echo "$as_me:10661: \"$ac_link\"") >&5 | 11209 | if { (eval echo "$as_me:11209: \"$ac_link\"") >&5 |
10662 | (eval $ac_link) 2>&5 | 11210 | (eval $ac_link) 2>&5 |
10663 | ac_status=$? | 11211 | ac_status=$? |
10664 | echo "$as_me:10664: \$? = $ac_status" >&5 | 11212 | echo "$as_me:11212: \$? = $ac_status" >&5 |
10665 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' | 11213 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' |
10666 | { (eval echo "$as_me:10666: \"$ac_try\"") >&5 | 11214 | { (eval echo "$as_me:11214: \"$ac_try\"") >&5 |
10667 | (eval $ac_try) 2>&5 | 11215 | (eval $ac_try) 2>&5 |
10668 | ac_status=$? | 11216 | ac_status=$? |
10669 | echo "$as_me:10669: \$? = $ac_status" >&5 | 11217 | echo "$as_me:11217: \$? = $ac_status" >&5 |
10670 | (exit $ac_status); }; }; then | 11218 | (exit $ac_status); }; }; then |
10671 | ac_cv_sizeof_int=`cat conftest.val` | 11219 | ac_cv_sizeof_int=`cat conftest.val` |
10672 | else | 11220 | else |
@@ -10682,19 +11230,19 @@ else | |||
10682 | ac_cv_sizeof_int=0 | 11230 | ac_cv_sizeof_int=0 |
10683 | fi | 11231 | fi |
10684 | fi | 11232 | fi |
10685 | echo "$as_me:10685: result: $ac_cv_sizeof_int" >&5 | 11233 | echo "$as_me:11233: result: $ac_cv_sizeof_int" >&5 |
10686 | echo "${ECHO_T}$ac_cv_sizeof_int" >&6 | 11234 | echo "${ECHO_T}$ac_cv_sizeof_int" >&6 |
10687 | cat >>confdefs.h <<EOF | 11235 | cat >>confdefs.h <<EOF |
10688 | #define SIZEOF_INT $ac_cv_sizeof_int | 11236 | #define SIZEOF_INT $ac_cv_sizeof_int |
10689 | EOF | 11237 | EOF |
10690 | 11238 | ||
10691 | echo "$as_me:10691: checking for long int" >&5 | 11239 | echo "$as_me:11239: checking for long int" >&5 |
10692 | echo $ECHO_N "checking for long int... $ECHO_C" >&6 | 11240 | echo $ECHO_N "checking for long int... $ECHO_C" >&6 |
10693 | if test "${ac_cv_type_long_int+set}" = set; then | 11241 | if test "${ac_cv_type_long_int+set}" = set; then |
10694 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 11242 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
10695 | else | 11243 | else |
10696 | cat >conftest.$ac_ext <<_ACEOF | 11244 | cat >conftest.$ac_ext <<_ACEOF |
10697 | #line 10697 "configure" | 11245 | #line 11245 "configure" |
10698 | #include "confdefs.h" | 11246 | #include "confdefs.h" |
10699 | $ac_includes_default | 11247 | $ac_includes_default |
10700 | int | 11248 | int |
@@ -10709,16 +11257,16 @@ if (sizeof (long int)) | |||
10709 | } | 11257 | } |
10710 | _ACEOF | 11258 | _ACEOF |
10711 | rm -f conftest.$ac_objext | 11259 | rm -f conftest.$ac_objext |
10712 | if { (eval echo "$as_me:10712: \"$ac_compile\"") >&5 | 11260 | if { (eval echo "$as_me:11260: \"$ac_compile\"") >&5 |
10713 | (eval $ac_compile) 2>&5 | 11261 | (eval $ac_compile) 2>&5 |
10714 | ac_status=$? | 11262 | ac_status=$? |
10715 | echo "$as_me:10715: \$? = $ac_status" >&5 | 11263 | echo "$as_me:11263: \$? = $ac_status" >&5 |
10716 | (exit $ac_status); } && | 11264 | (exit $ac_status); } && |
10717 | { ac_try='test -s conftest.$ac_objext' | 11265 | { ac_try='test -s conftest.$ac_objext' |
10718 | { (eval echo "$as_me:10718: \"$ac_try\"") >&5 | 11266 | { (eval echo "$as_me:11266: \"$ac_try\"") >&5 |
10719 | (eval $ac_try) 2>&5 | 11267 | (eval $ac_try) 2>&5 |
10720 | ac_status=$? | 11268 | ac_status=$? |
10721 | echo "$as_me:10721: \$? = $ac_status" >&5 | 11269 | echo "$as_me:11269: \$? = $ac_status" >&5 |
10722 | (exit $ac_status); }; }; then | 11270 | (exit $ac_status); }; }; then |
10723 | ac_cv_type_long_int=yes | 11271 | ac_cv_type_long_int=yes |
10724 | else | 11272 | else |
@@ -10728,10 +11276,10 @@ ac_cv_type_long_int=no | |||
10728 | fi | 11276 | fi |
10729 | rm -f conftest.$ac_objext conftest.$ac_ext | 11277 | rm -f conftest.$ac_objext conftest.$ac_ext |
10730 | fi | 11278 | fi |
10731 | echo "$as_me:10731: result: $ac_cv_type_long_int" >&5 | 11279 | echo "$as_me:11279: result: $ac_cv_type_long_int" >&5 |
10732 | echo "${ECHO_T}$ac_cv_type_long_int" >&6 | 11280 | echo "${ECHO_T}$ac_cv_type_long_int" >&6 |
10733 | 11281 | ||
10734 | echo "$as_me:10734: checking size of long int" >&5 | 11282 | echo "$as_me:11282: checking size of long int" >&5 |
10735 | echo $ECHO_N "checking size of long int... $ECHO_C" >&6 | 11283 | echo $ECHO_N "checking size of long int... $ECHO_C" >&6 |
10736 | if test "${ac_cv_sizeof_long_int+set}" = set; then | 11284 | if test "${ac_cv_sizeof_long_int+set}" = set; then |
10737 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 11285 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -10740,7 +11288,7 @@ else | |||
10740 | if test "$cross_compiling" = yes; then | 11288 | if test "$cross_compiling" = yes; then |
10741 | # Depending upon the size, compute the lo and hi bounds. | 11289 | # Depending upon the size, compute the lo and hi bounds. |
10742 | cat >conftest.$ac_ext <<_ACEOF | 11290 | cat >conftest.$ac_ext <<_ACEOF |
10743 | #line 10743 "configure" | 11291 | #line 11291 "configure" |
10744 | #include "confdefs.h" | 11292 | #include "confdefs.h" |
10745 | $ac_includes_default | 11293 | $ac_includes_default |
10746 | int | 11294 | int |
@@ -10752,21 +11300,21 @@ int _array_ [1 - 2 * !((sizeof (long int)) >= 0)] | |||
10752 | } | 11300 | } |
10753 | _ACEOF | 11301 | _ACEOF |
10754 | rm -f conftest.$ac_objext | 11302 | rm -f conftest.$ac_objext |
10755 | if { (eval echo "$as_me:10755: \"$ac_compile\"") >&5 | 11303 | if { (eval echo "$as_me:11303: \"$ac_compile\"") >&5 |
10756 | (eval $ac_compile) 2>&5 | 11304 | (eval $ac_compile) 2>&5 |
10757 | ac_status=$? | 11305 | ac_status=$? |
10758 | echo "$as_me:10758: \$? = $ac_status" >&5 | 11306 | echo "$as_me:11306: \$? = $ac_status" >&5 |
10759 | (exit $ac_status); } && | 11307 | (exit $ac_status); } && |
10760 | { ac_try='test -s conftest.$ac_objext' | 11308 | { ac_try='test -s conftest.$ac_objext' |
10761 | { (eval echo "$as_me:10761: \"$ac_try\"") >&5 | 11309 | { (eval echo "$as_me:11309: \"$ac_try\"") >&5 |
10762 | (eval $ac_try) 2>&5 | 11310 | (eval $ac_try) 2>&5 |
10763 | ac_status=$? | 11311 | ac_status=$? |
10764 | echo "$as_me:10764: \$? = $ac_status" >&5 | 11312 | echo "$as_me:11312: \$? = $ac_status" >&5 |
10765 | (exit $ac_status); }; }; then | 11313 | (exit $ac_status); }; }; then |
10766 | ac_lo=0 ac_mid=0 | 11314 | ac_lo=0 ac_mid=0 |
10767 | while :; do | 11315 | while :; do |
10768 | cat >conftest.$ac_ext <<_ACEOF | 11316 | cat >conftest.$ac_ext <<_ACEOF |
10769 | #line 10769 "configure" | 11317 | #line 11317 "configure" |
10770 | #include "confdefs.h" | 11318 | #include "confdefs.h" |
10771 | $ac_includes_default | 11319 | $ac_includes_default |
10772 | int | 11320 | int |
@@ -10778,16 +11326,16 @@ int _array_ [1 - 2 * !((sizeof (long int)) <= $ac_mid)] | |||
10778 | } | 11326 | } |
10779 | _ACEOF | 11327 | _ACEOF |
10780 | rm -f conftest.$ac_objext | 11328 | rm -f conftest.$ac_objext |
10781 | if { (eval echo "$as_me:10781: \"$ac_compile\"") >&5 | 11329 | if { (eval echo "$as_me:11329: \"$ac_compile\"") >&5 |
10782 | (eval $ac_compile) 2>&5 | 11330 | (eval $ac_compile) 2>&5 |
10783 | ac_status=$? | 11331 | ac_status=$? |
10784 | echo "$as_me:10784: \$? = $ac_status" >&5 | 11332 | echo "$as_me:11332: \$? = $ac_status" >&5 |
10785 | (exit $ac_status); } && | 11333 | (exit $ac_status); } && |
10786 | { ac_try='test -s conftest.$ac_objext' | 11334 | { ac_try='test -s conftest.$ac_objext' |
10787 | { (eval echo "$as_me:10787: \"$ac_try\"") >&5 | 11335 | { (eval echo "$as_me:11335: \"$ac_try\"") >&5 |
10788 | (eval $ac_try) 2>&5 | 11336 | (eval $ac_try) 2>&5 |
10789 | ac_status=$? | 11337 | ac_status=$? |
10790 | echo "$as_me:10790: \$? = $ac_status" >&5 | 11338 | echo "$as_me:11338: \$? = $ac_status" >&5 |
10791 | (exit $ac_status); }; }; then | 11339 | (exit $ac_status); }; }; then |
10792 | ac_hi=$ac_mid; break | 11340 | ac_hi=$ac_mid; break |
10793 | else | 11341 | else |
@@ -10803,7 +11351,7 @@ cat conftest.$ac_ext >&5 | |||
10803 | ac_hi=-1 ac_mid=-1 | 11351 | ac_hi=-1 ac_mid=-1 |
10804 | while :; do | 11352 | while :; do |
10805 | cat >conftest.$ac_ext <<_ACEOF | 11353 | cat >conftest.$ac_ext <<_ACEOF |
10806 | #line 10806 "configure" | 11354 | #line 11354 "configure" |
10807 | #include "confdefs.h" | 11355 | #include "confdefs.h" |
10808 | $ac_includes_default | 11356 | $ac_includes_default |
10809 | int | 11357 | int |
@@ -10815,16 +11363,16 @@ int _array_ [1 - 2 * !((sizeof (long int)) >= $ac_mid)] | |||
10815 | } | 11363 | } |
10816 | _ACEOF | 11364 | _ACEOF |
10817 | rm -f conftest.$ac_objext | 11365 | rm -f conftest.$ac_objext |
10818 | if { (eval echo "$as_me:10818: \"$ac_compile\"") >&5 | 11366 | if { (eval echo "$as_me:11366: \"$ac_compile\"") >&5 |
10819 | (eval $ac_compile) 2>&5 | 11367 | (eval $ac_compile) 2>&5 |
10820 | ac_status=$? | 11368 | ac_status=$? |
10821 | echo "$as_me:10821: \$? = $ac_status" >&5 | 11369 | echo "$as_me:11369: \$? = $ac_status" >&5 |
10822 | (exit $ac_status); } && | 11370 | (exit $ac_status); } && |
10823 | { ac_try='test -s conftest.$ac_objext' | 11371 | { ac_try='test -s conftest.$ac_objext' |
10824 | { (eval echo "$as_me:10824: \"$ac_try\"") >&5 | 11372 | { (eval echo "$as_me:11372: \"$ac_try\"") >&5 |
10825 | (eval $ac_try) 2>&5 | 11373 | (eval $ac_try) 2>&5 |
10826 | ac_status=$? | 11374 | ac_status=$? |
10827 | echo "$as_me:10827: \$? = $ac_status" >&5 | 11375 | echo "$as_me:11375: \$? = $ac_status" >&5 |
10828 | (exit $ac_status); }; }; then | 11376 | (exit $ac_status); }; }; then |
10829 | ac_lo=$ac_mid; break | 11377 | ac_lo=$ac_mid; break |
10830 | else | 11378 | else |
@@ -10840,7 +11388,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext | |||
10840 | while test "x$ac_lo" != "x$ac_hi"; do | 11388 | while test "x$ac_lo" != "x$ac_hi"; do |
10841 | ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` | 11389 | ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` |
10842 | cat >conftest.$ac_ext <<_ACEOF | 11390 | cat >conftest.$ac_ext <<_ACEOF |
10843 | #line 10843 "configure" | 11391 | #line 11391 "configure" |
10844 | #include "confdefs.h" | 11392 | #include "confdefs.h" |
10845 | $ac_includes_default | 11393 | $ac_includes_default |
10846 | int | 11394 | int |
@@ -10852,16 +11400,16 @@ int _array_ [1 - 2 * !((sizeof (long int)) <= $ac_mid)] | |||
10852 | } | 11400 | } |
10853 | _ACEOF | 11401 | _ACEOF |
10854 | rm -f conftest.$ac_objext | 11402 | rm -f conftest.$ac_objext |
10855 | if { (eval echo "$as_me:10855: \"$ac_compile\"") >&5 | 11403 | if { (eval echo "$as_me:11403: \"$ac_compile\"") >&5 |
10856 | (eval $ac_compile) 2>&5 | 11404 | (eval $ac_compile) 2>&5 |
10857 | ac_status=$? | 11405 | ac_status=$? |
10858 | echo "$as_me:10858: \$? = $ac_status" >&5 | 11406 | echo "$as_me:11406: \$? = $ac_status" >&5 |
10859 | (exit $ac_status); } && | 11407 | (exit $ac_status); } && |
10860 | { ac_try='test -s conftest.$ac_objext' | 11408 | { ac_try='test -s conftest.$ac_objext' |
10861 | { (eval echo "$as_me:10861: \"$ac_try\"") >&5 | 11409 | { (eval echo "$as_me:11409: \"$ac_try\"") >&5 |
10862 | (eval $ac_try) 2>&5 | 11410 | (eval $ac_try) 2>&5 |
10863 | ac_status=$? | 11411 | ac_status=$? |
10864 | echo "$as_me:10864: \$? = $ac_status" >&5 | 11412 | echo "$as_me:11412: \$? = $ac_status" >&5 |
10865 | (exit $ac_status); }; }; then | 11413 | (exit $ac_status); }; }; then |
10866 | ac_hi=$ac_mid | 11414 | ac_hi=$ac_mid |
10867 | else | 11415 | else |
@@ -10874,12 +11422,12 @@ done | |||
10874 | ac_cv_sizeof_long_int=$ac_lo | 11422 | ac_cv_sizeof_long_int=$ac_lo |
10875 | else | 11423 | else |
10876 | if test "$cross_compiling" = yes; then | 11424 | if test "$cross_compiling" = yes; then |
10877 | { { echo "$as_me:10877: error: cannot run test program while cross compiling" >&5 | 11425 | { { echo "$as_me:11425: error: cannot run test program while cross compiling" >&5 |
10878 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} | 11426 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} |
10879 | { (exit 1); exit 1; }; } | 11427 | { (exit 1); exit 1; }; } |
10880 | else | 11428 | else |
10881 | cat >conftest.$ac_ext <<_ACEOF | 11429 | cat >conftest.$ac_ext <<_ACEOF |
10882 | #line 10882 "configure" | 11430 | #line 11430 "configure" |
10883 | #include "confdefs.h" | 11431 | #include "confdefs.h" |
10884 | $ac_includes_default | 11432 | $ac_includes_default |
10885 | int | 11433 | int |
@@ -10895,15 +11443,15 @@ fclose (f); | |||
10895 | } | 11443 | } |
10896 | _ACEOF | 11444 | _ACEOF |
10897 | rm -f conftest$ac_exeext | 11445 | rm -f conftest$ac_exeext |
10898 | if { (eval echo "$as_me:10898: \"$ac_link\"") >&5 | 11446 | if { (eval echo "$as_me:11446: \"$ac_link\"") >&5 |
10899 | (eval $ac_link) 2>&5 | 11447 | (eval $ac_link) 2>&5 |
10900 | ac_status=$? | 11448 | ac_status=$? |
10901 | echo "$as_me:10901: \$? = $ac_status" >&5 | 11449 | echo "$as_me:11449: \$? = $ac_status" >&5 |
10902 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' | 11450 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' |
10903 | { (eval echo "$as_me:10903: \"$ac_try\"") >&5 | 11451 | { (eval echo "$as_me:11451: \"$ac_try\"") >&5 |
10904 | (eval $ac_try) 2>&5 | 11452 | (eval $ac_try) 2>&5 |
10905 | ac_status=$? | 11453 | ac_status=$? |
10906 | echo "$as_me:10906: \$? = $ac_status" >&5 | 11454 | echo "$as_me:11454: \$? = $ac_status" >&5 |
10907 | (exit $ac_status); }; }; then | 11455 | (exit $ac_status); }; }; then |
10908 | ac_cv_sizeof_long_int=`cat conftest.val` | 11456 | ac_cv_sizeof_long_int=`cat conftest.val` |
10909 | else | 11457 | else |
@@ -10919,19 +11467,19 @@ else | |||
10919 | ac_cv_sizeof_long_int=0 | 11467 | ac_cv_sizeof_long_int=0 |
10920 | fi | 11468 | fi |
10921 | fi | 11469 | fi |
10922 | echo "$as_me:10922: result: $ac_cv_sizeof_long_int" >&5 | 11470 | echo "$as_me:11470: result: $ac_cv_sizeof_long_int" >&5 |
10923 | echo "${ECHO_T}$ac_cv_sizeof_long_int" >&6 | 11471 | echo "${ECHO_T}$ac_cv_sizeof_long_int" >&6 |
10924 | cat >>confdefs.h <<EOF | 11472 | cat >>confdefs.h <<EOF |
10925 | #define SIZEOF_LONG_INT $ac_cv_sizeof_long_int | 11473 | #define SIZEOF_LONG_INT $ac_cv_sizeof_long_int |
10926 | EOF | 11474 | EOF |
10927 | 11475 | ||
10928 | echo "$as_me:10928: checking for long long int" >&5 | 11476 | echo "$as_me:11476: checking for long long int" >&5 |
10929 | echo $ECHO_N "checking for long long int... $ECHO_C" >&6 | 11477 | echo $ECHO_N "checking for long long int... $ECHO_C" >&6 |
10930 | if test "${ac_cv_type_long_long_int+set}" = set; then | 11478 | if test "${ac_cv_type_long_long_int+set}" = set; then |
10931 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 11479 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
10932 | else | 11480 | else |
10933 | cat >conftest.$ac_ext <<_ACEOF | 11481 | cat >conftest.$ac_ext <<_ACEOF |
10934 | #line 10934 "configure" | 11482 | #line 11482 "configure" |
10935 | #include "confdefs.h" | 11483 | #include "confdefs.h" |
10936 | $ac_includes_default | 11484 | $ac_includes_default |
10937 | int | 11485 | int |
@@ -10946,16 +11494,16 @@ if (sizeof (long long int)) | |||
10946 | } | 11494 | } |
10947 | _ACEOF | 11495 | _ACEOF |
10948 | rm -f conftest.$ac_objext | 11496 | rm -f conftest.$ac_objext |
10949 | if { (eval echo "$as_me:10949: \"$ac_compile\"") >&5 | 11497 | if { (eval echo "$as_me:11497: \"$ac_compile\"") >&5 |
10950 | (eval $ac_compile) 2>&5 | 11498 | (eval $ac_compile) 2>&5 |
10951 | ac_status=$? | 11499 | ac_status=$? |
10952 | echo "$as_me:10952: \$? = $ac_status" >&5 | 11500 | echo "$as_me:11500: \$? = $ac_status" >&5 |
10953 | (exit $ac_status); } && | 11501 | (exit $ac_status); } && |
10954 | { ac_try='test -s conftest.$ac_objext' | 11502 | { ac_try='test -s conftest.$ac_objext' |
10955 | { (eval echo "$as_me:10955: \"$ac_try\"") >&5 | 11503 | { (eval echo "$as_me:11503: \"$ac_try\"") >&5 |
10956 | (eval $ac_try) 2>&5 | 11504 | (eval $ac_try) 2>&5 |
10957 | ac_status=$? | 11505 | ac_status=$? |
10958 | echo "$as_me:10958: \$? = $ac_status" >&5 | 11506 | echo "$as_me:11506: \$? = $ac_status" >&5 |
10959 | (exit $ac_status); }; }; then | 11507 | (exit $ac_status); }; }; then |
10960 | ac_cv_type_long_long_int=yes | 11508 | ac_cv_type_long_long_int=yes |
10961 | else | 11509 | else |
@@ -10965,10 +11513,10 @@ ac_cv_type_long_long_int=no | |||
10965 | fi | 11513 | fi |
10966 | rm -f conftest.$ac_objext conftest.$ac_ext | 11514 | rm -f conftest.$ac_objext conftest.$ac_ext |
10967 | fi | 11515 | fi |
10968 | echo "$as_me:10968: result: $ac_cv_type_long_long_int" >&5 | 11516 | echo "$as_me:11516: result: $ac_cv_type_long_long_int" >&5 |
10969 | echo "${ECHO_T}$ac_cv_type_long_long_int" >&6 | 11517 | echo "${ECHO_T}$ac_cv_type_long_long_int" >&6 |
10970 | 11518 | ||
10971 | echo "$as_me:10971: checking size of long long int" >&5 | 11519 | echo "$as_me:11519: checking size of long long int" >&5 |
10972 | echo $ECHO_N "checking size of long long int... $ECHO_C" >&6 | 11520 | echo $ECHO_N "checking size of long long int... $ECHO_C" >&6 |
10973 | if test "${ac_cv_sizeof_long_long_int+set}" = set; then | 11521 | if test "${ac_cv_sizeof_long_long_int+set}" = set; then |
10974 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 11522 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -10977,7 +11525,7 @@ else | |||
10977 | if test "$cross_compiling" = yes; then | 11525 | if test "$cross_compiling" = yes; then |
10978 | # Depending upon the size, compute the lo and hi bounds. | 11526 | # Depending upon the size, compute the lo and hi bounds. |
10979 | cat >conftest.$ac_ext <<_ACEOF | 11527 | cat >conftest.$ac_ext <<_ACEOF |
10980 | #line 10980 "configure" | 11528 | #line 11528 "configure" |
10981 | #include "confdefs.h" | 11529 | #include "confdefs.h" |
10982 | $ac_includes_default | 11530 | $ac_includes_default |
10983 | int | 11531 | int |
@@ -10989,21 +11537,21 @@ int _array_ [1 - 2 * !((sizeof (long long int)) >= 0)] | |||
10989 | } | 11537 | } |
10990 | _ACEOF | 11538 | _ACEOF |
10991 | rm -f conftest.$ac_objext | 11539 | rm -f conftest.$ac_objext |
10992 | if { (eval echo "$as_me:10992: \"$ac_compile\"") >&5 | 11540 | if { (eval echo "$as_me:11540: \"$ac_compile\"") >&5 |
10993 | (eval $ac_compile) 2>&5 | 11541 | (eval $ac_compile) 2>&5 |
10994 | ac_status=$? | 11542 | ac_status=$? |
10995 | echo "$as_me:10995: \$? = $ac_status" >&5 | 11543 | echo "$as_me:11543: \$? = $ac_status" >&5 |
10996 | (exit $ac_status); } && | 11544 | (exit $ac_status); } && |
10997 | { ac_try='test -s conftest.$ac_objext' | 11545 | { ac_try='test -s conftest.$ac_objext' |
10998 | { (eval echo "$as_me:10998: \"$ac_try\"") >&5 | 11546 | { (eval echo "$as_me:11546: \"$ac_try\"") >&5 |
10999 | (eval $ac_try) 2>&5 | 11547 | (eval $ac_try) 2>&5 |
11000 | ac_status=$? | 11548 | ac_status=$? |
11001 | echo "$as_me:11001: \$? = $ac_status" >&5 | 11549 | echo "$as_me:11549: \$? = $ac_status" >&5 |
11002 | (exit $ac_status); }; }; then | 11550 | (exit $ac_status); }; }; then |
11003 | ac_lo=0 ac_mid=0 | 11551 | ac_lo=0 ac_mid=0 |
11004 | while :; do | 11552 | while :; do |
11005 | cat >conftest.$ac_ext <<_ACEOF | 11553 | cat >conftest.$ac_ext <<_ACEOF |
11006 | #line 11006 "configure" | 11554 | #line 11554 "configure" |
11007 | #include "confdefs.h" | 11555 | #include "confdefs.h" |
11008 | $ac_includes_default | 11556 | $ac_includes_default |
11009 | int | 11557 | int |
@@ -11015,16 +11563,16 @@ int _array_ [1 - 2 * !((sizeof (long long int)) <= $ac_mid)] | |||
11015 | } | 11563 | } |
11016 | _ACEOF | 11564 | _ACEOF |
11017 | rm -f conftest.$ac_objext | 11565 | rm -f conftest.$ac_objext |
11018 | if { (eval echo "$as_me:11018: \"$ac_compile\"") >&5 | 11566 | if { (eval echo "$as_me:11566: \"$ac_compile\"") >&5 |
11019 | (eval $ac_compile) 2>&5 | 11567 | (eval $ac_compile) 2>&5 |
11020 | ac_status=$? | 11568 | ac_status=$? |
11021 | echo "$as_me:11021: \$? = $ac_status" >&5 | 11569 | echo "$as_me:11569: \$? = $ac_status" >&5 |
11022 | (exit $ac_status); } && | 11570 | (exit $ac_status); } && |
11023 | { ac_try='test -s conftest.$ac_objext' | 11571 | { ac_try='test -s conftest.$ac_objext' |
11024 | { (eval echo "$as_me:11024: \"$ac_try\"") >&5 | 11572 | { (eval echo "$as_me:11572: \"$ac_try\"") >&5 |
11025 | (eval $ac_try) 2>&5 | 11573 | (eval $ac_try) 2>&5 |
11026 | ac_status=$? | 11574 | ac_status=$? |
11027 | echo "$as_me:11027: \$? = $ac_status" >&5 | 11575 | echo "$as_me:11575: \$? = $ac_status" >&5 |
11028 | (exit $ac_status); }; }; then | 11576 | (exit $ac_status); }; }; then |
11029 | ac_hi=$ac_mid; break | 11577 | ac_hi=$ac_mid; break |
11030 | else | 11578 | else |
@@ -11040,7 +11588,7 @@ cat conftest.$ac_ext >&5 | |||
11040 | ac_hi=-1 ac_mid=-1 | 11588 | ac_hi=-1 ac_mid=-1 |
11041 | while :; do | 11589 | while :; do |
11042 | cat >conftest.$ac_ext <<_ACEOF | 11590 | cat >conftest.$ac_ext <<_ACEOF |
11043 | #line 11043 "configure" | 11591 | #line 11591 "configure" |
11044 | #include "confdefs.h" | 11592 | #include "confdefs.h" |
11045 | $ac_includes_default | 11593 | $ac_includes_default |
11046 | int | 11594 | int |
@@ -11052,16 +11600,16 @@ int _array_ [1 - 2 * !((sizeof (long long int)) >= $ac_mid)] | |||
11052 | } | 11600 | } |
11053 | _ACEOF | 11601 | _ACEOF |
11054 | rm -f conftest.$ac_objext | 11602 | rm -f conftest.$ac_objext |
11055 | if { (eval echo "$as_me:11055: \"$ac_compile\"") >&5 | 11603 | if { (eval echo "$as_me:11603: \"$ac_compile\"") >&5 |
11056 | (eval $ac_compile) 2>&5 | 11604 | (eval $ac_compile) 2>&5 |
11057 | ac_status=$? | 11605 | ac_status=$? |
11058 | echo "$as_me:11058: \$? = $ac_status" >&5 | 11606 | echo "$as_me:11606: \$? = $ac_status" >&5 |
11059 | (exit $ac_status); } && | 11607 | (exit $ac_status); } && |
11060 | { ac_try='test -s conftest.$ac_objext' | 11608 | { ac_try='test -s conftest.$ac_objext' |
11061 | { (eval echo "$as_me:11061: \"$ac_try\"") >&5 | 11609 | { (eval echo "$as_me:11609: \"$ac_try\"") >&5 |
11062 | (eval $ac_try) 2>&5 | 11610 | (eval $ac_try) 2>&5 |
11063 | ac_status=$? | 11611 | ac_status=$? |
11064 | echo "$as_me:11064: \$? = $ac_status" >&5 | 11612 | echo "$as_me:11612: \$? = $ac_status" >&5 |
11065 | (exit $ac_status); }; }; then | 11613 | (exit $ac_status); }; }; then |
11066 | ac_lo=$ac_mid; break | 11614 | ac_lo=$ac_mid; break |
11067 | else | 11615 | else |
@@ -11077,7 +11625,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext | |||
11077 | while test "x$ac_lo" != "x$ac_hi"; do | 11625 | while test "x$ac_lo" != "x$ac_hi"; do |
11078 | ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` | 11626 | ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` |
11079 | cat >conftest.$ac_ext <<_ACEOF | 11627 | cat >conftest.$ac_ext <<_ACEOF |
11080 | #line 11080 "configure" | 11628 | #line 11628 "configure" |
11081 | #include "confdefs.h" | 11629 | #include "confdefs.h" |
11082 | $ac_includes_default | 11630 | $ac_includes_default |
11083 | int | 11631 | int |
@@ -11089,16 +11637,16 @@ int _array_ [1 - 2 * !((sizeof (long long int)) <= $ac_mid)] | |||
11089 | } | 11637 | } |
11090 | _ACEOF | 11638 | _ACEOF |
11091 | rm -f conftest.$ac_objext | 11639 | rm -f conftest.$ac_objext |
11092 | if { (eval echo "$as_me:11092: \"$ac_compile\"") >&5 | 11640 | if { (eval echo "$as_me:11640: \"$ac_compile\"") >&5 |
11093 | (eval $ac_compile) 2>&5 | 11641 | (eval $ac_compile) 2>&5 |
11094 | ac_status=$? | 11642 | ac_status=$? |
11095 | echo "$as_me:11095: \$? = $ac_status" >&5 | 11643 | echo "$as_me:11643: \$? = $ac_status" >&5 |
11096 | (exit $ac_status); } && | 11644 | (exit $ac_status); } && |
11097 | { ac_try='test -s conftest.$ac_objext' | 11645 | { ac_try='test -s conftest.$ac_objext' |
11098 | { (eval echo "$as_me:11098: \"$ac_try\"") >&5 | 11646 | { (eval echo "$as_me:11646: \"$ac_try\"") >&5 |
11099 | (eval $ac_try) 2>&5 | 11647 | (eval $ac_try) 2>&5 |
11100 | ac_status=$? | 11648 | ac_status=$? |
11101 | echo "$as_me:11101: \$? = $ac_status" >&5 | 11649 | echo "$as_me:11649: \$? = $ac_status" >&5 |
11102 | (exit $ac_status); }; }; then | 11650 | (exit $ac_status); }; }; then |
11103 | ac_hi=$ac_mid | 11651 | ac_hi=$ac_mid |
11104 | else | 11652 | else |
@@ -11111,12 +11659,12 @@ done | |||
11111 | ac_cv_sizeof_long_long_int=$ac_lo | 11659 | ac_cv_sizeof_long_long_int=$ac_lo |
11112 | else | 11660 | else |
11113 | if test "$cross_compiling" = yes; then | 11661 | if test "$cross_compiling" = yes; then |
11114 | { { echo "$as_me:11114: error: cannot run test program while cross compiling" >&5 | 11662 | { { echo "$as_me:11662: error: cannot run test program while cross compiling" >&5 |
11115 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} | 11663 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} |
11116 | { (exit 1); exit 1; }; } | 11664 | { (exit 1); exit 1; }; } |
11117 | else | 11665 | else |
11118 | cat >conftest.$ac_ext <<_ACEOF | 11666 | cat >conftest.$ac_ext <<_ACEOF |
11119 | #line 11119 "configure" | 11667 | #line 11667 "configure" |
11120 | #include "confdefs.h" | 11668 | #include "confdefs.h" |
11121 | $ac_includes_default | 11669 | $ac_includes_default |
11122 | int | 11670 | int |
@@ -11132,15 +11680,15 @@ fclose (f); | |||
11132 | } | 11680 | } |
11133 | _ACEOF | 11681 | _ACEOF |
11134 | rm -f conftest$ac_exeext | 11682 | rm -f conftest$ac_exeext |
11135 | if { (eval echo "$as_me:11135: \"$ac_link\"") >&5 | 11683 | if { (eval echo "$as_me:11683: \"$ac_link\"") >&5 |
11136 | (eval $ac_link) 2>&5 | 11684 | (eval $ac_link) 2>&5 |
11137 | ac_status=$? | 11685 | ac_status=$? |
11138 | echo "$as_me:11138: \$? = $ac_status" >&5 | 11686 | echo "$as_me:11686: \$? = $ac_status" >&5 |
11139 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' | 11687 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' |
11140 | { (eval echo "$as_me:11140: \"$ac_try\"") >&5 | 11688 | { (eval echo "$as_me:11688: \"$ac_try\"") >&5 |
11141 | (eval $ac_try) 2>&5 | 11689 | (eval $ac_try) 2>&5 |
11142 | ac_status=$? | 11690 | ac_status=$? |
11143 | echo "$as_me:11143: \$? = $ac_status" >&5 | 11691 | echo "$as_me:11691: \$? = $ac_status" >&5 |
11144 | (exit $ac_status); }; }; then | 11692 | (exit $ac_status); }; }; then |
11145 | ac_cv_sizeof_long_long_int=`cat conftest.val` | 11693 | ac_cv_sizeof_long_long_int=`cat conftest.val` |
11146 | else | 11694 | else |
@@ -11156,7 +11704,7 @@ else | |||
11156 | ac_cv_sizeof_long_long_int=0 | 11704 | ac_cv_sizeof_long_long_int=0 |
11157 | fi | 11705 | fi |
11158 | fi | 11706 | fi |
11159 | echo "$as_me:11159: result: $ac_cv_sizeof_long_long_int" >&5 | 11707 | echo "$as_me:11707: result: $ac_cv_sizeof_long_long_int" >&5 |
11160 | echo "${ECHO_T}$ac_cv_sizeof_long_long_int" >&6 | 11708 | echo "${ECHO_T}$ac_cv_sizeof_long_long_int" >&6 |
11161 | cat >>confdefs.h <<EOF | 11709 | cat >>confdefs.h <<EOF |
11162 | #define SIZEOF_LONG_LONG_INT $ac_cv_sizeof_long_long_int | 11710 | #define SIZEOF_LONG_LONG_INT $ac_cv_sizeof_long_long_int |
@@ -11168,14 +11716,14 @@ if test "x$ac_cv_sizeof_long_long_int" = "x4" ; then | |||
11168 | fi | 11716 | fi |
11169 | 11717 | ||
11170 | # More checks for data types | 11718 | # More checks for data types |
11171 | echo "$as_me:11171: checking for u_int type" >&5 | 11719 | echo "$as_me:11719: checking for u_int type" >&5 |
11172 | echo $ECHO_N "checking for u_int type... $ECHO_C" >&6 | 11720 | echo $ECHO_N "checking for u_int type... $ECHO_C" >&6 |
11173 | if test "${ac_cv_have_u_int+set}" = set; then | 11721 | if test "${ac_cv_have_u_int+set}" = set; then |
11174 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 11722 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
11175 | else | 11723 | else |
11176 | 11724 | ||
11177 | cat >conftest.$ac_ext <<_ACEOF | 11725 | cat >conftest.$ac_ext <<_ACEOF |
11178 | #line 11178 "configure" | 11726 | #line 11726 "configure" |
11179 | #include "confdefs.h" | 11727 | #include "confdefs.h" |
11180 | #include <sys/types.h> | 11728 | #include <sys/types.h> |
11181 | int | 11729 | int |
@@ -11187,16 +11735,16 @@ main () | |||
11187 | } | 11735 | } |
11188 | _ACEOF | 11736 | _ACEOF |
11189 | rm -f conftest.$ac_objext | 11737 | rm -f conftest.$ac_objext |
11190 | if { (eval echo "$as_me:11190: \"$ac_compile\"") >&5 | 11738 | if { (eval echo "$as_me:11738: \"$ac_compile\"") >&5 |
11191 | (eval $ac_compile) 2>&5 | 11739 | (eval $ac_compile) 2>&5 |
11192 | ac_status=$? | 11740 | ac_status=$? |
11193 | echo "$as_me:11193: \$? = $ac_status" >&5 | 11741 | echo "$as_me:11741: \$? = $ac_status" >&5 |
11194 | (exit $ac_status); } && | 11742 | (exit $ac_status); } && |
11195 | { ac_try='test -s conftest.$ac_objext' | 11743 | { ac_try='test -s conftest.$ac_objext' |
11196 | { (eval echo "$as_me:11196: \"$ac_try\"") >&5 | 11744 | { (eval echo "$as_me:11744: \"$ac_try\"") >&5 |
11197 | (eval $ac_try) 2>&5 | 11745 | (eval $ac_try) 2>&5 |
11198 | ac_status=$? | 11746 | ac_status=$? |
11199 | echo "$as_me:11199: \$? = $ac_status" >&5 | 11747 | echo "$as_me:11747: \$? = $ac_status" >&5 |
11200 | (exit $ac_status); }; }; then | 11748 | (exit $ac_status); }; }; then |
11201 | ac_cv_have_u_int="yes" | 11749 | ac_cv_have_u_int="yes" |
11202 | else | 11750 | else |
@@ -11208,7 +11756,7 @@ fi | |||
11208 | rm -f conftest.$ac_objext conftest.$ac_ext | 11756 | rm -f conftest.$ac_objext conftest.$ac_ext |
11209 | 11757 | ||
11210 | fi | 11758 | fi |
11211 | echo "$as_me:11211: result: $ac_cv_have_u_int" >&5 | 11759 | echo "$as_me:11759: result: $ac_cv_have_u_int" >&5 |
11212 | echo "${ECHO_T}$ac_cv_have_u_int" >&6 | 11760 | echo "${ECHO_T}$ac_cv_have_u_int" >&6 |
11213 | if test "x$ac_cv_have_u_int" = "xyes" ; then | 11761 | if test "x$ac_cv_have_u_int" = "xyes" ; then |
11214 | cat >>confdefs.h <<\EOF | 11762 | cat >>confdefs.h <<\EOF |
@@ -11218,14 +11766,14 @@ EOF | |||
11218 | have_u_int=1 | 11766 | have_u_int=1 |
11219 | fi | 11767 | fi |
11220 | 11768 | ||
11221 | echo "$as_me:11221: checking for intXX_t types" >&5 | 11769 | echo "$as_me:11769: checking for intXX_t types" >&5 |
11222 | echo $ECHO_N "checking for intXX_t types... $ECHO_C" >&6 | 11770 | echo $ECHO_N "checking for intXX_t types... $ECHO_C" >&6 |
11223 | if test "${ac_cv_have_intxx_t+set}" = set; then | 11771 | if test "${ac_cv_have_intxx_t+set}" = set; then |
11224 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 11772 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
11225 | else | 11773 | else |
11226 | 11774 | ||
11227 | cat >conftest.$ac_ext <<_ACEOF | 11775 | cat >conftest.$ac_ext <<_ACEOF |
11228 | #line 11228 "configure" | 11776 | #line 11776 "configure" |
11229 | #include "confdefs.h" | 11777 | #include "confdefs.h" |
11230 | #include <sys/types.h> | 11778 | #include <sys/types.h> |
11231 | int | 11779 | int |
@@ -11237,16 +11785,16 @@ main () | |||
11237 | } | 11785 | } |
11238 | _ACEOF | 11786 | _ACEOF |
11239 | rm -f conftest.$ac_objext | 11787 | rm -f conftest.$ac_objext |
11240 | if { (eval echo "$as_me:11240: \"$ac_compile\"") >&5 | 11788 | if { (eval echo "$as_me:11788: \"$ac_compile\"") >&5 |
11241 | (eval $ac_compile) 2>&5 | 11789 | (eval $ac_compile) 2>&5 |
11242 | ac_status=$? | 11790 | ac_status=$? |
11243 | echo "$as_me:11243: \$? = $ac_status" >&5 | 11791 | echo "$as_me:11791: \$? = $ac_status" >&5 |
11244 | (exit $ac_status); } && | 11792 | (exit $ac_status); } && |
11245 | { ac_try='test -s conftest.$ac_objext' | 11793 | { ac_try='test -s conftest.$ac_objext' |
11246 | { (eval echo "$as_me:11246: \"$ac_try\"") >&5 | 11794 | { (eval echo "$as_me:11794: \"$ac_try\"") >&5 |
11247 | (eval $ac_try) 2>&5 | 11795 | (eval $ac_try) 2>&5 |
11248 | ac_status=$? | 11796 | ac_status=$? |
11249 | echo "$as_me:11249: \$? = $ac_status" >&5 | 11797 | echo "$as_me:11797: \$? = $ac_status" >&5 |
11250 | (exit $ac_status); }; }; then | 11798 | (exit $ac_status); }; }; then |
11251 | ac_cv_have_intxx_t="yes" | 11799 | ac_cv_have_intxx_t="yes" |
11252 | else | 11800 | else |
@@ -11258,7 +11806,7 @@ fi | |||
11258 | rm -f conftest.$ac_objext conftest.$ac_ext | 11806 | rm -f conftest.$ac_objext conftest.$ac_ext |
11259 | 11807 | ||
11260 | fi | 11808 | fi |
11261 | echo "$as_me:11261: result: $ac_cv_have_intxx_t" >&5 | 11809 | echo "$as_me:11809: result: $ac_cv_have_intxx_t" >&5 |
11262 | echo "${ECHO_T}$ac_cv_have_intxx_t" >&6 | 11810 | echo "${ECHO_T}$ac_cv_have_intxx_t" >&6 |
11263 | if test "x$ac_cv_have_intxx_t" = "xyes" ; then | 11811 | if test "x$ac_cv_have_intxx_t" = "xyes" ; then |
11264 | cat >>confdefs.h <<\EOF | 11812 | cat >>confdefs.h <<\EOF |
@@ -11269,12 +11817,12 @@ EOF | |||
11269 | fi | 11817 | fi |
11270 | 11818 | ||
11271 | if (test -z "$have_intxx_t" && \ | 11819 | if (test -z "$have_intxx_t" && \ |
11272 | test "x$ac_cv_header_stdint_h" = "xyes") | 11820 | test "x$ac_cv_header_stdint_h" = "xyes") |
11273 | then | 11821 | then |
11274 | echo "$as_me:11274: checking for intXX_t types in stdint.h" >&5 | 11822 | echo "$as_me:11822: checking for intXX_t types in stdint.h" >&5 |
11275 | echo $ECHO_N "checking for intXX_t types in stdint.h... $ECHO_C" >&6 | 11823 | echo $ECHO_N "checking for intXX_t types in stdint.h... $ECHO_C" >&6 |
11276 | cat >conftest.$ac_ext <<_ACEOF | 11824 | cat >conftest.$ac_ext <<_ACEOF |
11277 | #line 11277 "configure" | 11825 | #line 11825 "configure" |
11278 | #include "confdefs.h" | 11826 | #include "confdefs.h" |
11279 | #include <stdint.h> | 11827 | #include <stdint.h> |
11280 | int | 11828 | int |
@@ -11286,43 +11834,43 @@ main () | |||
11286 | } | 11834 | } |
11287 | _ACEOF | 11835 | _ACEOF |
11288 | rm -f conftest.$ac_objext | 11836 | rm -f conftest.$ac_objext |
11289 | if { (eval echo "$as_me:11289: \"$ac_compile\"") >&5 | 11837 | if { (eval echo "$as_me:11837: \"$ac_compile\"") >&5 |
11290 | (eval $ac_compile) 2>&5 | 11838 | (eval $ac_compile) 2>&5 |
11291 | ac_status=$? | 11839 | ac_status=$? |
11292 | echo "$as_me:11292: \$? = $ac_status" >&5 | 11840 | echo "$as_me:11840: \$? = $ac_status" >&5 |
11293 | (exit $ac_status); } && | 11841 | (exit $ac_status); } && |
11294 | { ac_try='test -s conftest.$ac_objext' | 11842 | { ac_try='test -s conftest.$ac_objext' |
11295 | { (eval echo "$as_me:11295: \"$ac_try\"") >&5 | 11843 | { (eval echo "$as_me:11843: \"$ac_try\"") >&5 |
11296 | (eval $ac_try) 2>&5 | 11844 | (eval $ac_try) 2>&5 |
11297 | ac_status=$? | 11845 | ac_status=$? |
11298 | echo "$as_me:11298: \$? = $ac_status" >&5 | 11846 | echo "$as_me:11846: \$? = $ac_status" >&5 |
11299 | (exit $ac_status); }; }; then | 11847 | (exit $ac_status); }; }; then |
11300 | 11848 | ||
11301 | cat >>confdefs.h <<\EOF | 11849 | cat >>confdefs.h <<\EOF |
11302 | #define HAVE_INTXX_T 1 | 11850 | #define HAVE_INTXX_T 1 |
11303 | EOF | 11851 | EOF |
11304 | 11852 | ||
11305 | echo "$as_me:11305: result: yes" >&5 | 11853 | echo "$as_me:11853: result: yes" >&5 |
11306 | echo "${ECHO_T}yes" >&6 | 11854 | echo "${ECHO_T}yes" >&6 |
11307 | 11855 | ||
11308 | else | 11856 | else |
11309 | echo "$as_me: failed program was:" >&5 | 11857 | echo "$as_me: failed program was:" >&5 |
11310 | cat conftest.$ac_ext >&5 | 11858 | cat conftest.$ac_ext >&5 |
11311 | echo "$as_me:11311: result: no" >&5 | 11859 | echo "$as_me:11859: result: no" >&5 |
11312 | echo "${ECHO_T}no" >&6 | 11860 | echo "${ECHO_T}no" >&6 |
11313 | 11861 | ||
11314 | fi | 11862 | fi |
11315 | rm -f conftest.$ac_objext conftest.$ac_ext | 11863 | rm -f conftest.$ac_objext conftest.$ac_ext |
11316 | fi | 11864 | fi |
11317 | 11865 | ||
11318 | echo "$as_me:11318: checking for int64_t type" >&5 | 11866 | echo "$as_me:11866: checking for int64_t type" >&5 |
11319 | echo $ECHO_N "checking for int64_t type... $ECHO_C" >&6 | 11867 | echo $ECHO_N "checking for int64_t type... $ECHO_C" >&6 |
11320 | if test "${ac_cv_have_int64_t+set}" = set; then | 11868 | if test "${ac_cv_have_int64_t+set}" = set; then |
11321 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 11869 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
11322 | else | 11870 | else |
11323 | 11871 | ||
11324 | cat >conftest.$ac_ext <<_ACEOF | 11872 | cat >conftest.$ac_ext <<_ACEOF |
11325 | #line 11325 "configure" | 11873 | #line 11873 "configure" |
11326 | #include "confdefs.h" | 11874 | #include "confdefs.h" |
11327 | 11875 | ||
11328 | #include <sys/types.h> | 11876 | #include <sys/types.h> |
@@ -11343,16 +11891,16 @@ main () | |||
11343 | } | 11891 | } |
11344 | _ACEOF | 11892 | _ACEOF |
11345 | rm -f conftest.$ac_objext | 11893 | rm -f conftest.$ac_objext |
11346 | if { (eval echo "$as_me:11346: \"$ac_compile\"") >&5 | 11894 | if { (eval echo "$as_me:11894: \"$ac_compile\"") >&5 |
11347 | (eval $ac_compile) 2>&5 | 11895 | (eval $ac_compile) 2>&5 |
11348 | ac_status=$? | 11896 | ac_status=$? |
11349 | echo "$as_me:11349: \$? = $ac_status" >&5 | 11897 | echo "$as_me:11897: \$? = $ac_status" >&5 |
11350 | (exit $ac_status); } && | 11898 | (exit $ac_status); } && |
11351 | { ac_try='test -s conftest.$ac_objext' | 11899 | { ac_try='test -s conftest.$ac_objext' |
11352 | { (eval echo "$as_me:11352: \"$ac_try\"") >&5 | 11900 | { (eval echo "$as_me:11900: \"$ac_try\"") >&5 |
11353 | (eval $ac_try) 2>&5 | 11901 | (eval $ac_try) 2>&5 |
11354 | ac_status=$? | 11902 | ac_status=$? |
11355 | echo "$as_me:11355: \$? = $ac_status" >&5 | 11903 | echo "$as_me:11903: \$? = $ac_status" >&5 |
11356 | (exit $ac_status); }; }; then | 11904 | (exit $ac_status); }; }; then |
11357 | ac_cv_have_int64_t="yes" | 11905 | ac_cv_have_int64_t="yes" |
11358 | else | 11906 | else |
@@ -11364,7 +11912,7 @@ fi | |||
11364 | rm -f conftest.$ac_objext conftest.$ac_ext | 11912 | rm -f conftest.$ac_objext conftest.$ac_ext |
11365 | 11913 | ||
11366 | fi | 11914 | fi |
11367 | echo "$as_me:11367: result: $ac_cv_have_int64_t" >&5 | 11915 | echo "$as_me:11915: result: $ac_cv_have_int64_t" >&5 |
11368 | echo "${ECHO_T}$ac_cv_have_int64_t" >&6 | 11916 | echo "${ECHO_T}$ac_cv_have_int64_t" >&6 |
11369 | if test "x$ac_cv_have_int64_t" = "xyes" ; then | 11917 | if test "x$ac_cv_have_int64_t" = "xyes" ; then |
11370 | cat >>confdefs.h <<\EOF | 11918 | cat >>confdefs.h <<\EOF |
@@ -11373,14 +11921,14 @@ EOF | |||
11373 | 11921 | ||
11374 | fi | 11922 | fi |
11375 | 11923 | ||
11376 | echo "$as_me:11376: checking for u_intXX_t types" >&5 | 11924 | echo "$as_me:11924: checking for u_intXX_t types" >&5 |
11377 | echo $ECHO_N "checking for u_intXX_t types... $ECHO_C" >&6 | 11925 | echo $ECHO_N "checking for u_intXX_t types... $ECHO_C" >&6 |
11378 | if test "${ac_cv_have_u_intxx_t+set}" = set; then | 11926 | if test "${ac_cv_have_u_intxx_t+set}" = set; then |
11379 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 11927 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
11380 | else | 11928 | else |
11381 | 11929 | ||
11382 | cat >conftest.$ac_ext <<_ACEOF | 11930 | cat >conftest.$ac_ext <<_ACEOF |
11383 | #line 11383 "configure" | 11931 | #line 11931 "configure" |
11384 | #include "confdefs.h" | 11932 | #include "confdefs.h" |
11385 | #include <sys/types.h> | 11933 | #include <sys/types.h> |
11386 | int | 11934 | int |
@@ -11392,16 +11940,16 @@ main () | |||
11392 | } | 11940 | } |
11393 | _ACEOF | 11941 | _ACEOF |
11394 | rm -f conftest.$ac_objext | 11942 | rm -f conftest.$ac_objext |
11395 | if { (eval echo "$as_me:11395: \"$ac_compile\"") >&5 | 11943 | if { (eval echo "$as_me:11943: \"$ac_compile\"") >&5 |
11396 | (eval $ac_compile) 2>&5 | 11944 | (eval $ac_compile) 2>&5 |
11397 | ac_status=$? | 11945 | ac_status=$? |
11398 | echo "$as_me:11398: \$? = $ac_status" >&5 | 11946 | echo "$as_me:11946: \$? = $ac_status" >&5 |
11399 | (exit $ac_status); } && | 11947 | (exit $ac_status); } && |
11400 | { ac_try='test -s conftest.$ac_objext' | 11948 | { ac_try='test -s conftest.$ac_objext' |
11401 | { (eval echo "$as_me:11401: \"$ac_try\"") >&5 | 11949 | { (eval echo "$as_me:11949: \"$ac_try\"") >&5 |
11402 | (eval $ac_try) 2>&5 | 11950 | (eval $ac_try) 2>&5 |
11403 | ac_status=$? | 11951 | ac_status=$? |
11404 | echo "$as_me:11404: \$? = $ac_status" >&5 | 11952 | echo "$as_me:11952: \$? = $ac_status" >&5 |
11405 | (exit $ac_status); }; }; then | 11953 | (exit $ac_status); }; }; then |
11406 | ac_cv_have_u_intxx_t="yes" | 11954 | ac_cv_have_u_intxx_t="yes" |
11407 | else | 11955 | else |
@@ -11413,7 +11961,7 @@ fi | |||
11413 | rm -f conftest.$ac_objext conftest.$ac_ext | 11961 | rm -f conftest.$ac_objext conftest.$ac_ext |
11414 | 11962 | ||
11415 | fi | 11963 | fi |
11416 | echo "$as_me:11416: result: $ac_cv_have_u_intxx_t" >&5 | 11964 | echo "$as_me:11964: result: $ac_cv_have_u_intxx_t" >&5 |
11417 | echo "${ECHO_T}$ac_cv_have_u_intxx_t" >&6 | 11965 | echo "${ECHO_T}$ac_cv_have_u_intxx_t" >&6 |
11418 | if test "x$ac_cv_have_u_intxx_t" = "xyes" ; then | 11966 | if test "x$ac_cv_have_u_intxx_t" = "xyes" ; then |
11419 | cat >>confdefs.h <<\EOF | 11967 | cat >>confdefs.h <<\EOF |
@@ -11424,10 +11972,10 @@ EOF | |||
11424 | fi | 11972 | fi |
11425 | 11973 | ||
11426 | if test -z "$have_u_intxx_t" ; then | 11974 | if test -z "$have_u_intxx_t" ; then |
11427 | echo "$as_me:11427: checking for u_intXX_t types in sys/socket.h" >&5 | 11975 | echo "$as_me:11975: checking for u_intXX_t types in sys/socket.h" >&5 |
11428 | echo $ECHO_N "checking for u_intXX_t types in sys/socket.h... $ECHO_C" >&6 | 11976 | echo $ECHO_N "checking for u_intXX_t types in sys/socket.h... $ECHO_C" >&6 |
11429 | cat >conftest.$ac_ext <<_ACEOF | 11977 | cat >conftest.$ac_ext <<_ACEOF |
11430 | #line 11430 "configure" | 11978 | #line 11978 "configure" |
11431 | #include "confdefs.h" | 11979 | #include "confdefs.h" |
11432 | #include <sys/socket.h> | 11980 | #include <sys/socket.h> |
11433 | int | 11981 | int |
@@ -11439,43 +11987,43 @@ main () | |||
11439 | } | 11987 | } |
11440 | _ACEOF | 11988 | _ACEOF |
11441 | rm -f conftest.$ac_objext | 11989 | rm -f conftest.$ac_objext |
11442 | if { (eval echo "$as_me:11442: \"$ac_compile\"") >&5 | 11990 | if { (eval echo "$as_me:11990: \"$ac_compile\"") >&5 |
11443 | (eval $ac_compile) 2>&5 | 11991 | (eval $ac_compile) 2>&5 |
11444 | ac_status=$? | 11992 | ac_status=$? |
11445 | echo "$as_me:11445: \$? = $ac_status" >&5 | 11993 | echo "$as_me:11993: \$? = $ac_status" >&5 |
11446 | (exit $ac_status); } && | 11994 | (exit $ac_status); } && |
11447 | { ac_try='test -s conftest.$ac_objext' | 11995 | { ac_try='test -s conftest.$ac_objext' |
11448 | { (eval echo "$as_me:11448: \"$ac_try\"") >&5 | 11996 | { (eval echo "$as_me:11996: \"$ac_try\"") >&5 |
11449 | (eval $ac_try) 2>&5 | 11997 | (eval $ac_try) 2>&5 |
11450 | ac_status=$? | 11998 | ac_status=$? |
11451 | echo "$as_me:11451: \$? = $ac_status" >&5 | 11999 | echo "$as_me:11999: \$? = $ac_status" >&5 |
11452 | (exit $ac_status); }; }; then | 12000 | (exit $ac_status); }; }; then |
11453 | 12001 | ||
11454 | cat >>confdefs.h <<\EOF | 12002 | cat >>confdefs.h <<\EOF |
11455 | #define HAVE_U_INTXX_T 1 | 12003 | #define HAVE_U_INTXX_T 1 |
11456 | EOF | 12004 | EOF |
11457 | 12005 | ||
11458 | echo "$as_me:11458: result: yes" >&5 | 12006 | echo "$as_me:12006: result: yes" >&5 |
11459 | echo "${ECHO_T}yes" >&6 | 12007 | echo "${ECHO_T}yes" >&6 |
11460 | 12008 | ||
11461 | else | 12009 | else |
11462 | echo "$as_me: failed program was:" >&5 | 12010 | echo "$as_me: failed program was:" >&5 |
11463 | cat conftest.$ac_ext >&5 | 12011 | cat conftest.$ac_ext >&5 |
11464 | echo "$as_me:11464: result: no" >&5 | 12012 | echo "$as_me:12012: result: no" >&5 |
11465 | echo "${ECHO_T}no" >&6 | 12013 | echo "${ECHO_T}no" >&6 |
11466 | 12014 | ||
11467 | fi | 12015 | fi |
11468 | rm -f conftest.$ac_objext conftest.$ac_ext | 12016 | rm -f conftest.$ac_objext conftest.$ac_ext |
11469 | fi | 12017 | fi |
11470 | 12018 | ||
11471 | echo "$as_me:11471: checking for u_int64_t types" >&5 | 12019 | echo "$as_me:12019: checking for u_int64_t types" >&5 |
11472 | echo $ECHO_N "checking for u_int64_t types... $ECHO_C" >&6 | 12020 | echo $ECHO_N "checking for u_int64_t types... $ECHO_C" >&6 |
11473 | if test "${ac_cv_have_u_int64_t+set}" = set; then | 12021 | if test "${ac_cv_have_u_int64_t+set}" = set; then |
11474 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 12022 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
11475 | else | 12023 | else |
11476 | 12024 | ||
11477 | cat >conftest.$ac_ext <<_ACEOF | 12025 | cat >conftest.$ac_ext <<_ACEOF |
11478 | #line 11478 "configure" | 12026 | #line 12026 "configure" |
11479 | #include "confdefs.h" | 12027 | #include "confdefs.h" |
11480 | #include <sys/types.h> | 12028 | #include <sys/types.h> |
11481 | int | 12029 | int |
@@ -11487,16 +12035,16 @@ main () | |||
11487 | } | 12035 | } |
11488 | _ACEOF | 12036 | _ACEOF |
11489 | rm -f conftest.$ac_objext | 12037 | rm -f conftest.$ac_objext |
11490 | if { (eval echo "$as_me:11490: \"$ac_compile\"") >&5 | 12038 | if { (eval echo "$as_me:12038: \"$ac_compile\"") >&5 |
11491 | (eval $ac_compile) 2>&5 | 12039 | (eval $ac_compile) 2>&5 |
11492 | ac_status=$? | 12040 | ac_status=$? |
11493 | echo "$as_me:11493: \$? = $ac_status" >&5 | 12041 | echo "$as_me:12041: \$? = $ac_status" >&5 |
11494 | (exit $ac_status); } && | 12042 | (exit $ac_status); } && |
11495 | { ac_try='test -s conftest.$ac_objext' | 12043 | { ac_try='test -s conftest.$ac_objext' |
11496 | { (eval echo "$as_me:11496: \"$ac_try\"") >&5 | 12044 | { (eval echo "$as_me:12044: \"$ac_try\"") >&5 |
11497 | (eval $ac_try) 2>&5 | 12045 | (eval $ac_try) 2>&5 |
11498 | ac_status=$? | 12046 | ac_status=$? |
11499 | echo "$as_me:11499: \$? = $ac_status" >&5 | 12047 | echo "$as_me:12047: \$? = $ac_status" >&5 |
11500 | (exit $ac_status); }; }; then | 12048 | (exit $ac_status); }; }; then |
11501 | ac_cv_have_u_int64_t="yes" | 12049 | ac_cv_have_u_int64_t="yes" |
11502 | else | 12050 | else |
@@ -11508,7 +12056,7 @@ fi | |||
11508 | rm -f conftest.$ac_objext conftest.$ac_ext | 12056 | rm -f conftest.$ac_objext conftest.$ac_ext |
11509 | 12057 | ||
11510 | fi | 12058 | fi |
11511 | echo "$as_me:11511: result: $ac_cv_have_u_int64_t" >&5 | 12059 | echo "$as_me:12059: result: $ac_cv_have_u_int64_t" >&5 |
11512 | echo "${ECHO_T}$ac_cv_have_u_int64_t" >&6 | 12060 | echo "${ECHO_T}$ac_cv_have_u_int64_t" >&6 |
11513 | if test "x$ac_cv_have_u_int64_t" = "xyes" ; then | 12061 | if test "x$ac_cv_have_u_int64_t" = "xyes" ; then |
11514 | cat >>confdefs.h <<\EOF | 12062 | cat >>confdefs.h <<\EOF |
@@ -11519,10 +12067,10 @@ EOF | |||
11519 | fi | 12067 | fi |
11520 | 12068 | ||
11521 | if test -z "$have_u_int64_t" ; then | 12069 | if test -z "$have_u_int64_t" ; then |
11522 | echo "$as_me:11522: checking for u_int64_t type in sys/bitypes.h" >&5 | 12070 | echo "$as_me:12070: checking for u_int64_t type in sys/bitypes.h" >&5 |
11523 | echo $ECHO_N "checking for u_int64_t type in sys/bitypes.h... $ECHO_C" >&6 | 12071 | echo $ECHO_N "checking for u_int64_t type in sys/bitypes.h... $ECHO_C" >&6 |
11524 | cat >conftest.$ac_ext <<_ACEOF | 12072 | cat >conftest.$ac_ext <<_ACEOF |
11525 | #line 11525 "configure" | 12073 | #line 12073 "configure" |
11526 | #include "confdefs.h" | 12074 | #include "confdefs.h" |
11527 | #include <sys/bitypes.h> | 12075 | #include <sys/bitypes.h> |
11528 | int | 12076 | int |
@@ -11534,29 +12082,29 @@ main () | |||
11534 | } | 12082 | } |
11535 | _ACEOF | 12083 | _ACEOF |
11536 | rm -f conftest.$ac_objext | 12084 | rm -f conftest.$ac_objext |
11537 | if { (eval echo "$as_me:11537: \"$ac_compile\"") >&5 | 12085 | if { (eval echo "$as_me:12085: \"$ac_compile\"") >&5 |
11538 | (eval $ac_compile) 2>&5 | 12086 | (eval $ac_compile) 2>&5 |
11539 | ac_status=$? | 12087 | ac_status=$? |
11540 | echo "$as_me:11540: \$? = $ac_status" >&5 | 12088 | echo "$as_me:12088: \$? = $ac_status" >&5 |
11541 | (exit $ac_status); } && | 12089 | (exit $ac_status); } && |
11542 | { ac_try='test -s conftest.$ac_objext' | 12090 | { ac_try='test -s conftest.$ac_objext' |
11543 | { (eval echo "$as_me:11543: \"$ac_try\"") >&5 | 12091 | { (eval echo "$as_me:12091: \"$ac_try\"") >&5 |
11544 | (eval $ac_try) 2>&5 | 12092 | (eval $ac_try) 2>&5 |
11545 | ac_status=$? | 12093 | ac_status=$? |
11546 | echo "$as_me:11546: \$? = $ac_status" >&5 | 12094 | echo "$as_me:12094: \$? = $ac_status" >&5 |
11547 | (exit $ac_status); }; }; then | 12095 | (exit $ac_status); }; }; then |
11548 | 12096 | ||
11549 | cat >>confdefs.h <<\EOF | 12097 | cat >>confdefs.h <<\EOF |
11550 | #define HAVE_U_INT64_T 1 | 12098 | #define HAVE_U_INT64_T 1 |
11551 | EOF | 12099 | EOF |
11552 | 12100 | ||
11553 | echo "$as_me:11553: result: yes" >&5 | 12101 | echo "$as_me:12101: result: yes" >&5 |
11554 | echo "${ECHO_T}yes" >&6 | 12102 | echo "${ECHO_T}yes" >&6 |
11555 | 12103 | ||
11556 | else | 12104 | else |
11557 | echo "$as_me: failed program was:" >&5 | 12105 | echo "$as_me: failed program was:" >&5 |
11558 | cat conftest.$ac_ext >&5 | 12106 | cat conftest.$ac_ext >&5 |
11559 | echo "$as_me:11559: result: no" >&5 | 12107 | echo "$as_me:12107: result: no" >&5 |
11560 | echo "${ECHO_T}no" >&6 | 12108 | echo "${ECHO_T}no" >&6 |
11561 | 12109 | ||
11562 | fi | 12110 | fi |
@@ -11564,14 +12112,14 @@ rm -f conftest.$ac_objext conftest.$ac_ext | |||
11564 | fi | 12112 | fi |
11565 | 12113 | ||
11566 | if test -z "$have_u_intxx_t" ; then | 12114 | if test -z "$have_u_intxx_t" ; then |
11567 | echo "$as_me:11567: checking for uintXX_t types" >&5 | 12115 | echo "$as_me:12115: checking for uintXX_t types" >&5 |
11568 | echo $ECHO_N "checking for uintXX_t types... $ECHO_C" >&6 | 12116 | echo $ECHO_N "checking for uintXX_t types... $ECHO_C" >&6 |
11569 | if test "${ac_cv_have_uintxx_t+set}" = set; then | 12117 | if test "${ac_cv_have_uintxx_t+set}" = set; then |
11570 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 12118 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
11571 | else | 12119 | else |
11572 | 12120 | ||
11573 | cat >conftest.$ac_ext <<_ACEOF | 12121 | cat >conftest.$ac_ext <<_ACEOF |
11574 | #line 11574 "configure" | 12122 | #line 12122 "configure" |
11575 | #include "confdefs.h" | 12123 | #include "confdefs.h" |
11576 | 12124 | ||
11577 | #include <sys/types.h> | 12125 | #include <sys/types.h> |
@@ -11585,16 +12133,16 @@ main () | |||
11585 | } | 12133 | } |
11586 | _ACEOF | 12134 | _ACEOF |
11587 | rm -f conftest.$ac_objext | 12135 | rm -f conftest.$ac_objext |
11588 | if { (eval echo "$as_me:11588: \"$ac_compile\"") >&5 | 12136 | if { (eval echo "$as_me:12136: \"$ac_compile\"") >&5 |
11589 | (eval $ac_compile) 2>&5 | 12137 | (eval $ac_compile) 2>&5 |
11590 | ac_status=$? | 12138 | ac_status=$? |
11591 | echo "$as_me:11591: \$? = $ac_status" >&5 | 12139 | echo "$as_me:12139: \$? = $ac_status" >&5 |
11592 | (exit $ac_status); } && | 12140 | (exit $ac_status); } && |
11593 | { ac_try='test -s conftest.$ac_objext' | 12141 | { ac_try='test -s conftest.$ac_objext' |
11594 | { (eval echo "$as_me:11594: \"$ac_try\"") >&5 | 12142 | { (eval echo "$as_me:12142: \"$ac_try\"") >&5 |
11595 | (eval $ac_try) 2>&5 | 12143 | (eval $ac_try) 2>&5 |
11596 | ac_status=$? | 12144 | ac_status=$? |
11597 | echo "$as_me:11597: \$? = $ac_status" >&5 | 12145 | echo "$as_me:12145: \$? = $ac_status" >&5 |
11598 | (exit $ac_status); }; }; then | 12146 | (exit $ac_status); }; }; then |
11599 | ac_cv_have_uintxx_t="yes" | 12147 | ac_cv_have_uintxx_t="yes" |
11600 | else | 12148 | else |
@@ -11606,7 +12154,7 @@ fi | |||
11606 | rm -f conftest.$ac_objext conftest.$ac_ext | 12154 | rm -f conftest.$ac_objext conftest.$ac_ext |
11607 | 12155 | ||
11608 | fi | 12156 | fi |
11609 | echo "$as_me:11609: result: $ac_cv_have_uintxx_t" >&5 | 12157 | echo "$as_me:12157: result: $ac_cv_have_uintxx_t" >&5 |
11610 | echo "${ECHO_T}$ac_cv_have_uintxx_t" >&6 | 12158 | echo "${ECHO_T}$ac_cv_have_uintxx_t" >&6 |
11611 | if test "x$ac_cv_have_uintxx_t" = "xyes" ; then | 12159 | if test "x$ac_cv_have_uintxx_t" = "xyes" ; then |
11612 | cat >>confdefs.h <<\EOF | 12160 | cat >>confdefs.h <<\EOF |
@@ -11617,10 +12165,10 @@ EOF | |||
11617 | fi | 12165 | fi |
11618 | 12166 | ||
11619 | if test -z "$have_uintxx_t" ; then | 12167 | if test -z "$have_uintxx_t" ; then |
11620 | echo "$as_me:11620: checking for uintXX_t types in stdint.h" >&5 | 12168 | echo "$as_me:12168: checking for uintXX_t types in stdint.h" >&5 |
11621 | echo $ECHO_N "checking for uintXX_t types in stdint.h... $ECHO_C" >&6 | 12169 | echo $ECHO_N "checking for uintXX_t types in stdint.h... $ECHO_C" >&6 |
11622 | cat >conftest.$ac_ext <<_ACEOF | 12170 | cat >conftest.$ac_ext <<_ACEOF |
11623 | #line 11623 "configure" | 12171 | #line 12171 "configure" |
11624 | #include "confdefs.h" | 12172 | #include "confdefs.h" |
11625 | #include <stdint.h> | 12173 | #include <stdint.h> |
11626 | int | 12174 | int |
@@ -11632,29 +12180,29 @@ main () | |||
11632 | } | 12180 | } |
11633 | _ACEOF | 12181 | _ACEOF |
11634 | rm -f conftest.$ac_objext | 12182 | rm -f conftest.$ac_objext |
11635 | if { (eval echo "$as_me:11635: \"$ac_compile\"") >&5 | 12183 | if { (eval echo "$as_me:12183: \"$ac_compile\"") >&5 |
11636 | (eval $ac_compile) 2>&5 | 12184 | (eval $ac_compile) 2>&5 |
11637 | ac_status=$? | 12185 | ac_status=$? |
11638 | echo "$as_me:11638: \$? = $ac_status" >&5 | 12186 | echo "$as_me:12186: \$? = $ac_status" >&5 |
11639 | (exit $ac_status); } && | 12187 | (exit $ac_status); } && |
11640 | { ac_try='test -s conftest.$ac_objext' | 12188 | { ac_try='test -s conftest.$ac_objext' |
11641 | { (eval echo "$as_me:11641: \"$ac_try\"") >&5 | 12189 | { (eval echo "$as_me:12189: \"$ac_try\"") >&5 |
11642 | (eval $ac_try) 2>&5 | 12190 | (eval $ac_try) 2>&5 |
11643 | ac_status=$? | 12191 | ac_status=$? |
11644 | echo "$as_me:11644: \$? = $ac_status" >&5 | 12192 | echo "$as_me:12192: \$? = $ac_status" >&5 |
11645 | (exit $ac_status); }; }; then | 12193 | (exit $ac_status); }; }; then |
11646 | 12194 | ||
11647 | cat >>confdefs.h <<\EOF | 12195 | cat >>confdefs.h <<\EOF |
11648 | #define HAVE_UINTXX_T 1 | 12196 | #define HAVE_UINTXX_T 1 |
11649 | EOF | 12197 | EOF |
11650 | 12198 | ||
11651 | echo "$as_me:11651: result: yes" >&5 | 12199 | echo "$as_me:12199: result: yes" >&5 |
11652 | echo "${ECHO_T}yes" >&6 | 12200 | echo "${ECHO_T}yes" >&6 |
11653 | 12201 | ||
11654 | else | 12202 | else |
11655 | echo "$as_me: failed program was:" >&5 | 12203 | echo "$as_me: failed program was:" >&5 |
11656 | cat conftest.$ac_ext >&5 | 12204 | cat conftest.$ac_ext >&5 |
11657 | echo "$as_me:11657: result: no" >&5 | 12205 | echo "$as_me:12205: result: no" >&5 |
11658 | echo "${ECHO_T}no" >&6 | 12206 | echo "${ECHO_T}no" >&6 |
11659 | 12207 | ||
11660 | fi | 12208 | fi |
@@ -11662,12 +12210,12 @@ rm -f conftest.$ac_objext conftest.$ac_ext | |||
11662 | fi | 12210 | fi |
11663 | 12211 | ||
11664 | if (test -z "$have_u_intxx_t" || test -z "$have_intxx_t" && \ | 12212 | if (test -z "$have_u_intxx_t" || test -z "$have_intxx_t" && \ |
11665 | test "x$ac_cv_header_sys_bitypes_h" = "xyes") | 12213 | test "x$ac_cv_header_sys_bitypes_h" = "xyes") |
11666 | then | 12214 | then |
11667 | echo "$as_me:11667: checking for intXX_t and u_intXX_t types in sys/bitypes.h" >&5 | 12215 | echo "$as_me:12215: checking for intXX_t and u_intXX_t types in sys/bitypes.h" >&5 |
11668 | echo $ECHO_N "checking for intXX_t and u_intXX_t types in sys/bitypes.h... $ECHO_C" >&6 | 12216 | echo $ECHO_N "checking for intXX_t and u_intXX_t types in sys/bitypes.h... $ECHO_C" >&6 |
11669 | cat >conftest.$ac_ext <<_ACEOF | 12217 | cat >conftest.$ac_ext <<_ACEOF |
11670 | #line 11670 "configure" | 12218 | #line 12218 "configure" |
11671 | #include "confdefs.h" | 12219 | #include "confdefs.h" |
11672 | 12220 | ||
11673 | #include <sys/bitypes.h> | 12221 | #include <sys/bitypes.h> |
@@ -11685,16 +12233,16 @@ main () | |||
11685 | } | 12233 | } |
11686 | _ACEOF | 12234 | _ACEOF |
11687 | rm -f conftest.$ac_objext | 12235 | rm -f conftest.$ac_objext |
11688 | if { (eval echo "$as_me:11688: \"$ac_compile\"") >&5 | 12236 | if { (eval echo "$as_me:12236: \"$ac_compile\"") >&5 |
11689 | (eval $ac_compile) 2>&5 | 12237 | (eval $ac_compile) 2>&5 |
11690 | ac_status=$? | 12238 | ac_status=$? |
11691 | echo "$as_me:11691: \$? = $ac_status" >&5 | 12239 | echo "$as_me:12239: \$? = $ac_status" >&5 |
11692 | (exit $ac_status); } && | 12240 | (exit $ac_status); } && |
11693 | { ac_try='test -s conftest.$ac_objext' | 12241 | { ac_try='test -s conftest.$ac_objext' |
11694 | { (eval echo "$as_me:11694: \"$ac_try\"") >&5 | 12242 | { (eval echo "$as_me:12242: \"$ac_try\"") >&5 |
11695 | (eval $ac_try) 2>&5 | 12243 | (eval $ac_try) 2>&5 |
11696 | ac_status=$? | 12244 | ac_status=$? |
11697 | echo "$as_me:11697: \$? = $ac_status" >&5 | 12245 | echo "$as_me:12245: \$? = $ac_status" >&5 |
11698 | (exit $ac_status); }; }; then | 12246 | (exit $ac_status); }; }; then |
11699 | 12247 | ||
11700 | cat >>confdefs.h <<\EOF | 12248 | cat >>confdefs.h <<\EOF |
@@ -11705,27 +12253,27 @@ EOF | |||
11705 | #define HAVE_INTXX_T 1 | 12253 | #define HAVE_INTXX_T 1 |
11706 | EOF | 12254 | EOF |
11707 | 12255 | ||
11708 | echo "$as_me:11708: result: yes" >&5 | 12256 | echo "$as_me:12256: result: yes" >&5 |
11709 | echo "${ECHO_T}yes" >&6 | 12257 | echo "${ECHO_T}yes" >&6 |
11710 | 12258 | ||
11711 | else | 12259 | else |
11712 | echo "$as_me: failed program was:" >&5 | 12260 | echo "$as_me: failed program was:" >&5 |
11713 | cat conftest.$ac_ext >&5 | 12261 | cat conftest.$ac_ext >&5 |
11714 | echo "$as_me:11714: result: no" >&5 | 12262 | echo "$as_me:12262: result: no" >&5 |
11715 | echo "${ECHO_T}no" >&6 | 12263 | echo "${ECHO_T}no" >&6 |
11716 | 12264 | ||
11717 | fi | 12265 | fi |
11718 | rm -f conftest.$ac_objext conftest.$ac_ext | 12266 | rm -f conftest.$ac_objext conftest.$ac_ext |
11719 | fi | 12267 | fi |
11720 | 12268 | ||
11721 | echo "$as_me:11721: checking for u_char" >&5 | 12269 | echo "$as_me:12269: checking for u_char" >&5 |
11722 | echo $ECHO_N "checking for u_char... $ECHO_C" >&6 | 12270 | echo $ECHO_N "checking for u_char... $ECHO_C" >&6 |
11723 | if test "${ac_cv_have_u_char+set}" = set; then | 12271 | if test "${ac_cv_have_u_char+set}" = set; then |
11724 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 12272 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
11725 | else | 12273 | else |
11726 | 12274 | ||
11727 | cat >conftest.$ac_ext <<_ACEOF | 12275 | cat >conftest.$ac_ext <<_ACEOF |
11728 | #line 11728 "configure" | 12276 | #line 12276 "configure" |
11729 | #include "confdefs.h" | 12277 | #include "confdefs.h" |
11730 | 12278 | ||
11731 | #include <sys/types.h> | 12279 | #include <sys/types.h> |
@@ -11739,16 +12287,16 @@ main () | |||
11739 | } | 12287 | } |
11740 | _ACEOF | 12288 | _ACEOF |
11741 | rm -f conftest.$ac_objext | 12289 | rm -f conftest.$ac_objext |
11742 | if { (eval echo "$as_me:11742: \"$ac_compile\"") >&5 | 12290 | if { (eval echo "$as_me:12290: \"$ac_compile\"") >&5 |
11743 | (eval $ac_compile) 2>&5 | 12291 | (eval $ac_compile) 2>&5 |
11744 | ac_status=$? | 12292 | ac_status=$? |
11745 | echo "$as_me:11745: \$? = $ac_status" >&5 | 12293 | echo "$as_me:12293: \$? = $ac_status" >&5 |
11746 | (exit $ac_status); } && | 12294 | (exit $ac_status); } && |
11747 | { ac_try='test -s conftest.$ac_objext' | 12295 | { ac_try='test -s conftest.$ac_objext' |
11748 | { (eval echo "$as_me:11748: \"$ac_try\"") >&5 | 12296 | { (eval echo "$as_me:12296: \"$ac_try\"") >&5 |
11749 | (eval $ac_try) 2>&5 | 12297 | (eval $ac_try) 2>&5 |
11750 | ac_status=$? | 12298 | ac_status=$? |
11751 | echo "$as_me:11751: \$? = $ac_status" >&5 | 12299 | echo "$as_me:12299: \$? = $ac_status" >&5 |
11752 | (exit $ac_status); }; }; then | 12300 | (exit $ac_status); }; }; then |
11753 | ac_cv_have_u_char="yes" | 12301 | ac_cv_have_u_char="yes" |
11754 | else | 12302 | else |
@@ -11760,7 +12308,7 @@ fi | |||
11760 | rm -f conftest.$ac_objext conftest.$ac_ext | 12308 | rm -f conftest.$ac_objext conftest.$ac_ext |
11761 | 12309 | ||
11762 | fi | 12310 | fi |
11763 | echo "$as_me:11763: result: $ac_cv_have_u_char" >&5 | 12311 | echo "$as_me:12311: result: $ac_cv_have_u_char" >&5 |
11764 | echo "${ECHO_T}$ac_cv_have_u_char" >&6 | 12312 | echo "${ECHO_T}$ac_cv_have_u_char" >&6 |
11765 | if test "x$ac_cv_have_u_char" = "xyes" ; then | 12313 | if test "x$ac_cv_have_u_char" = "xyes" ; then |
11766 | cat >>confdefs.h <<\EOF | 12314 | cat >>confdefs.h <<\EOF |
@@ -11769,13 +12317,13 @@ EOF | |||
11769 | 12317 | ||
11770 | fi | 12318 | fi |
11771 | 12319 | ||
11772 | echo "$as_me:11772: checking for socklen_t" >&5 | 12320 | echo "$as_me:12320: checking for socklen_t" >&5 |
11773 | echo $ECHO_N "checking for socklen_t... $ECHO_C" >&6 | 12321 | echo $ECHO_N "checking for socklen_t... $ECHO_C" >&6 |
11774 | if test "${ac_cv_type_socklen_t+set}" = set; then | 12322 | if test "${ac_cv_type_socklen_t+set}" = set; then |
11775 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 12323 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
11776 | else | 12324 | else |
11777 | cat >conftest.$ac_ext <<_ACEOF | 12325 | cat >conftest.$ac_ext <<_ACEOF |
11778 | #line 11778 "configure" | 12326 | #line 12326 "configure" |
11779 | #include "confdefs.h" | 12327 | #include "confdefs.h" |
11780 | #include <sys/types.h> | 12328 | #include <sys/types.h> |
11781 | #include <sys/socket.h> | 12329 | #include <sys/socket.h> |
@@ -11792,16 +12340,16 @@ if (sizeof (socklen_t)) | |||
11792 | } | 12340 | } |
11793 | _ACEOF | 12341 | _ACEOF |
11794 | rm -f conftest.$ac_objext | 12342 | rm -f conftest.$ac_objext |
11795 | if { (eval echo "$as_me:11795: \"$ac_compile\"") >&5 | 12343 | if { (eval echo "$as_me:12343: \"$ac_compile\"") >&5 |
11796 | (eval $ac_compile) 2>&5 | 12344 | (eval $ac_compile) 2>&5 |
11797 | ac_status=$? | 12345 | ac_status=$? |
11798 | echo "$as_me:11798: \$? = $ac_status" >&5 | 12346 | echo "$as_me:12346: \$? = $ac_status" >&5 |
11799 | (exit $ac_status); } && | 12347 | (exit $ac_status); } && |
11800 | { ac_try='test -s conftest.$ac_objext' | 12348 | { ac_try='test -s conftest.$ac_objext' |
11801 | { (eval echo "$as_me:11801: \"$ac_try\"") >&5 | 12349 | { (eval echo "$as_me:12349: \"$ac_try\"") >&5 |
11802 | (eval $ac_try) 2>&5 | 12350 | (eval $ac_try) 2>&5 |
11803 | ac_status=$? | 12351 | ac_status=$? |
11804 | echo "$as_me:11804: \$? = $ac_status" >&5 | 12352 | echo "$as_me:12352: \$? = $ac_status" >&5 |
11805 | (exit $ac_status); }; }; then | 12353 | (exit $ac_status); }; }; then |
11806 | ac_cv_type_socklen_t=yes | 12354 | ac_cv_type_socklen_t=yes |
11807 | else | 12355 | else |
@@ -11811,13 +12359,13 @@ ac_cv_type_socklen_t=no | |||
11811 | fi | 12359 | fi |
11812 | rm -f conftest.$ac_objext conftest.$ac_ext | 12360 | rm -f conftest.$ac_objext conftest.$ac_ext |
11813 | fi | 12361 | fi |
11814 | echo "$as_me:11814: result: $ac_cv_type_socklen_t" >&5 | 12362 | echo "$as_me:12362: result: $ac_cv_type_socklen_t" >&5 |
11815 | echo "${ECHO_T}$ac_cv_type_socklen_t" >&6 | 12363 | echo "${ECHO_T}$ac_cv_type_socklen_t" >&6 |
11816 | if test $ac_cv_type_socklen_t = yes; then | 12364 | if test $ac_cv_type_socklen_t = yes; then |
11817 | : | 12365 | : |
11818 | else | 12366 | else |
11819 | 12367 | ||
11820 | echo "$as_me:11820: checking for socklen_t equivalent" >&5 | 12368 | echo "$as_me:12368: checking for socklen_t equivalent" >&5 |
11821 | echo $ECHO_N "checking for socklen_t equivalent... $ECHO_C" >&6 | 12369 | echo $ECHO_N "checking for socklen_t equivalent... $ECHO_C" >&6 |
11822 | if test "${curl_cv_socklen_t_equiv+set}" = set; then | 12370 | if test "${curl_cv_socklen_t_equiv+set}" = set; then |
11823 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 12371 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -11829,7 +12377,7 @@ else | |||
11829 | for arg2 in "struct sockaddr" void; do | 12377 | for arg2 in "struct sockaddr" void; do |
11830 | for t in int size_t unsigned long "unsigned long"; do | 12378 | for t in int size_t unsigned long "unsigned long"; do |
11831 | cat >conftest.$ac_ext <<_ACEOF | 12379 | cat >conftest.$ac_ext <<_ACEOF |
11832 | #line 11832 "configure" | 12380 | #line 12380 "configure" |
11833 | #include "confdefs.h" | 12381 | #include "confdefs.h" |
11834 | 12382 | ||
11835 | #include <sys/types.h> | 12383 | #include <sys/types.h> |
@@ -11849,16 +12397,16 @@ main () | |||
11849 | } | 12397 | } |
11850 | _ACEOF | 12398 | _ACEOF |
11851 | rm -f conftest.$ac_objext | 12399 | rm -f conftest.$ac_objext |
11852 | if { (eval echo "$as_me:11852: \"$ac_compile\"") >&5 | 12400 | if { (eval echo "$as_me:12400: \"$ac_compile\"") >&5 |
11853 | (eval $ac_compile) 2>&5 | 12401 | (eval $ac_compile) 2>&5 |
11854 | ac_status=$? | 12402 | ac_status=$? |
11855 | echo "$as_me:11855: \$? = $ac_status" >&5 | 12403 | echo "$as_me:12403: \$? = $ac_status" >&5 |
11856 | (exit $ac_status); } && | 12404 | (exit $ac_status); } && |
11857 | { ac_try='test -s conftest.$ac_objext' | 12405 | { ac_try='test -s conftest.$ac_objext' |
11858 | { (eval echo "$as_me:11858: \"$ac_try\"") >&5 | 12406 | { (eval echo "$as_me:12406: \"$ac_try\"") >&5 |
11859 | (eval $ac_try) 2>&5 | 12407 | (eval $ac_try) 2>&5 |
11860 | ac_status=$? | 12408 | ac_status=$? |
11861 | echo "$as_me:11861: \$? = $ac_status" >&5 | 12409 | echo "$as_me:12409: \$? = $ac_status" >&5 |
11862 | (exit $ac_status); }; }; then | 12410 | (exit $ac_status); }; }; then |
11863 | 12411 | ||
11864 | curl_cv_socklen_t_equiv="$t" | 12412 | curl_cv_socklen_t_equiv="$t" |
@@ -11873,14 +12421,14 @@ rm -f conftest.$ac_objext conftest.$ac_ext | |||
11873 | done | 12421 | done |
11874 | 12422 | ||
11875 | if test "x$curl_cv_socklen_t_equiv" = x; then | 12423 | if test "x$curl_cv_socklen_t_equiv" = x; then |
11876 | { { echo "$as_me:11876: error: Cannot find a type to use in place of socklen_t" >&5 | 12424 | { { echo "$as_me:12424: error: Cannot find a type to use in place of socklen_t" >&5 |
11877 | echo "$as_me: error: Cannot find a type to use in place of socklen_t" >&2;} | 12425 | echo "$as_me: error: Cannot find a type to use in place of socklen_t" >&2;} |
11878 | { (exit 1); exit 1; }; } | 12426 | { (exit 1); exit 1; }; } |
11879 | fi | 12427 | fi |
11880 | 12428 | ||
11881 | fi | 12429 | fi |
11882 | 12430 | ||
11883 | echo "$as_me:11883: result: $curl_cv_socklen_t_equiv" >&5 | 12431 | echo "$as_me:12431: result: $curl_cv_socklen_t_equiv" >&5 |
11884 | echo "${ECHO_T}$curl_cv_socklen_t_equiv" >&6 | 12432 | echo "${ECHO_T}$curl_cv_socklen_t_equiv" >&6 |
11885 | 12433 | ||
11886 | cat >>confdefs.h <<EOF | 12434 | cat >>confdefs.h <<EOF |
@@ -11889,13 +12437,13 @@ EOF | |||
11889 | 12437 | ||
11890 | fi | 12438 | fi |
11891 | 12439 | ||
11892 | echo "$as_me:11892: checking for sig_atomic_t" >&5 | 12440 | echo "$as_me:12440: checking for sig_atomic_t" >&5 |
11893 | echo $ECHO_N "checking for sig_atomic_t... $ECHO_C" >&6 | 12441 | echo $ECHO_N "checking for sig_atomic_t... $ECHO_C" >&6 |
11894 | if test "${ac_cv_type_sig_atomic_t+set}" = set; then | 12442 | if test "${ac_cv_type_sig_atomic_t+set}" = set; then |
11895 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 12443 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
11896 | else | 12444 | else |
11897 | cat >conftest.$ac_ext <<_ACEOF | 12445 | cat >conftest.$ac_ext <<_ACEOF |
11898 | #line 11898 "configure" | 12446 | #line 12446 "configure" |
11899 | #include "confdefs.h" | 12447 | #include "confdefs.h" |
11900 | #include <signal.h> | 12448 | #include <signal.h> |
11901 | 12449 | ||
@@ -11911,16 +12459,16 @@ if (sizeof (sig_atomic_t)) | |||
11911 | } | 12459 | } |
11912 | _ACEOF | 12460 | _ACEOF |
11913 | rm -f conftest.$ac_objext | 12461 | rm -f conftest.$ac_objext |
11914 | if { (eval echo "$as_me:11914: \"$ac_compile\"") >&5 | 12462 | if { (eval echo "$as_me:12462: \"$ac_compile\"") >&5 |
11915 | (eval $ac_compile) 2>&5 | 12463 | (eval $ac_compile) 2>&5 |
11916 | ac_status=$? | 12464 | ac_status=$? |
11917 | echo "$as_me:11917: \$? = $ac_status" >&5 | 12465 | echo "$as_me:12465: \$? = $ac_status" >&5 |
11918 | (exit $ac_status); } && | 12466 | (exit $ac_status); } && |
11919 | { ac_try='test -s conftest.$ac_objext' | 12467 | { ac_try='test -s conftest.$ac_objext' |
11920 | { (eval echo "$as_me:11920: \"$ac_try\"") >&5 | 12468 | { (eval echo "$as_me:12468: \"$ac_try\"") >&5 |
11921 | (eval $ac_try) 2>&5 | 12469 | (eval $ac_try) 2>&5 |
11922 | ac_status=$? | 12470 | ac_status=$? |
11923 | echo "$as_me:11923: \$? = $ac_status" >&5 | 12471 | echo "$as_me:12471: \$? = $ac_status" >&5 |
11924 | (exit $ac_status); }; }; then | 12472 | (exit $ac_status); }; }; then |
11925 | ac_cv_type_sig_atomic_t=yes | 12473 | ac_cv_type_sig_atomic_t=yes |
11926 | else | 12474 | else |
@@ -11930,7 +12478,7 @@ ac_cv_type_sig_atomic_t=no | |||
11930 | fi | 12478 | fi |
11931 | rm -f conftest.$ac_objext conftest.$ac_ext | 12479 | rm -f conftest.$ac_objext conftest.$ac_ext |
11932 | fi | 12480 | fi |
11933 | echo "$as_me:11933: result: $ac_cv_type_sig_atomic_t" >&5 | 12481 | echo "$as_me:12481: result: $ac_cv_type_sig_atomic_t" >&5 |
11934 | echo "${ECHO_T}$ac_cv_type_sig_atomic_t" >&6 | 12482 | echo "${ECHO_T}$ac_cv_type_sig_atomic_t" >&6 |
11935 | if test $ac_cv_type_sig_atomic_t = yes; then | 12483 | if test $ac_cv_type_sig_atomic_t = yes; then |
11936 | 12484 | ||
@@ -11940,14 +12488,14 @@ EOF | |||
11940 | 12488 | ||
11941 | fi | 12489 | fi |
11942 | 12490 | ||
11943 | echo "$as_me:11943: checking for size_t" >&5 | 12491 | echo "$as_me:12491: checking for size_t" >&5 |
11944 | echo $ECHO_N "checking for size_t... $ECHO_C" >&6 | 12492 | echo $ECHO_N "checking for size_t... $ECHO_C" >&6 |
11945 | if test "${ac_cv_have_size_t+set}" = set; then | 12493 | if test "${ac_cv_have_size_t+set}" = set; then |
11946 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 12494 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
11947 | else | 12495 | else |
11948 | 12496 | ||
11949 | cat >conftest.$ac_ext <<_ACEOF | 12497 | cat >conftest.$ac_ext <<_ACEOF |
11950 | #line 11950 "configure" | 12498 | #line 12498 "configure" |
11951 | #include "confdefs.h" | 12499 | #include "confdefs.h" |
11952 | 12500 | ||
11953 | #include <sys/types.h> | 12501 | #include <sys/types.h> |
@@ -11961,16 +12509,16 @@ main () | |||
11961 | } | 12509 | } |
11962 | _ACEOF | 12510 | _ACEOF |
11963 | rm -f conftest.$ac_objext | 12511 | rm -f conftest.$ac_objext |
11964 | if { (eval echo "$as_me:11964: \"$ac_compile\"") >&5 | 12512 | if { (eval echo "$as_me:12512: \"$ac_compile\"") >&5 |
11965 | (eval $ac_compile) 2>&5 | 12513 | (eval $ac_compile) 2>&5 |
11966 | ac_status=$? | 12514 | ac_status=$? |
11967 | echo "$as_me:11967: \$? = $ac_status" >&5 | 12515 | echo "$as_me:12515: \$? = $ac_status" >&5 |
11968 | (exit $ac_status); } && | 12516 | (exit $ac_status); } && |
11969 | { ac_try='test -s conftest.$ac_objext' | 12517 | { ac_try='test -s conftest.$ac_objext' |
11970 | { (eval echo "$as_me:11970: \"$ac_try\"") >&5 | 12518 | { (eval echo "$as_me:12518: \"$ac_try\"") >&5 |
11971 | (eval $ac_try) 2>&5 | 12519 | (eval $ac_try) 2>&5 |
11972 | ac_status=$? | 12520 | ac_status=$? |
11973 | echo "$as_me:11973: \$? = $ac_status" >&5 | 12521 | echo "$as_me:12521: \$? = $ac_status" >&5 |
11974 | (exit $ac_status); }; }; then | 12522 | (exit $ac_status); }; }; then |
11975 | ac_cv_have_size_t="yes" | 12523 | ac_cv_have_size_t="yes" |
11976 | else | 12524 | else |
@@ -11982,7 +12530,7 @@ fi | |||
11982 | rm -f conftest.$ac_objext conftest.$ac_ext | 12530 | rm -f conftest.$ac_objext conftest.$ac_ext |
11983 | 12531 | ||
11984 | fi | 12532 | fi |
11985 | echo "$as_me:11985: result: $ac_cv_have_size_t" >&5 | 12533 | echo "$as_me:12533: result: $ac_cv_have_size_t" >&5 |
11986 | echo "${ECHO_T}$ac_cv_have_size_t" >&6 | 12534 | echo "${ECHO_T}$ac_cv_have_size_t" >&6 |
11987 | if test "x$ac_cv_have_size_t" = "xyes" ; then | 12535 | if test "x$ac_cv_have_size_t" = "xyes" ; then |
11988 | cat >>confdefs.h <<\EOF | 12536 | cat >>confdefs.h <<\EOF |
@@ -11991,14 +12539,14 @@ EOF | |||
11991 | 12539 | ||
11992 | fi | 12540 | fi |
11993 | 12541 | ||
11994 | echo "$as_me:11994: checking for ssize_t" >&5 | 12542 | echo "$as_me:12542: checking for ssize_t" >&5 |
11995 | echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6 | 12543 | echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6 |
11996 | if test "${ac_cv_have_ssize_t+set}" = set; then | 12544 | if test "${ac_cv_have_ssize_t+set}" = set; then |
11997 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 12545 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
11998 | else | 12546 | else |
11999 | 12547 | ||
12000 | cat >conftest.$ac_ext <<_ACEOF | 12548 | cat >conftest.$ac_ext <<_ACEOF |
12001 | #line 12001 "configure" | 12549 | #line 12549 "configure" |
12002 | #include "confdefs.h" | 12550 | #include "confdefs.h" |
12003 | 12551 | ||
12004 | #include <sys/types.h> | 12552 | #include <sys/types.h> |
@@ -12012,16 +12560,16 @@ main () | |||
12012 | } | 12560 | } |
12013 | _ACEOF | 12561 | _ACEOF |
12014 | rm -f conftest.$ac_objext | 12562 | rm -f conftest.$ac_objext |
12015 | if { (eval echo "$as_me:12015: \"$ac_compile\"") >&5 | 12563 | if { (eval echo "$as_me:12563: \"$ac_compile\"") >&5 |
12016 | (eval $ac_compile) 2>&5 | 12564 | (eval $ac_compile) 2>&5 |
12017 | ac_status=$? | 12565 | ac_status=$? |
12018 | echo "$as_me:12018: \$? = $ac_status" >&5 | 12566 | echo "$as_me:12566: \$? = $ac_status" >&5 |
12019 | (exit $ac_status); } && | 12567 | (exit $ac_status); } && |
12020 | { ac_try='test -s conftest.$ac_objext' | 12568 | { ac_try='test -s conftest.$ac_objext' |
12021 | { (eval echo "$as_me:12021: \"$ac_try\"") >&5 | 12569 | { (eval echo "$as_me:12569: \"$ac_try\"") >&5 |
12022 | (eval $ac_try) 2>&5 | 12570 | (eval $ac_try) 2>&5 |
12023 | ac_status=$? | 12571 | ac_status=$? |
12024 | echo "$as_me:12024: \$? = $ac_status" >&5 | 12572 | echo "$as_me:12572: \$? = $ac_status" >&5 |
12025 | (exit $ac_status); }; }; then | 12573 | (exit $ac_status); }; }; then |
12026 | ac_cv_have_ssize_t="yes" | 12574 | ac_cv_have_ssize_t="yes" |
12027 | else | 12575 | else |
@@ -12033,7 +12581,7 @@ fi | |||
12033 | rm -f conftest.$ac_objext conftest.$ac_ext | 12581 | rm -f conftest.$ac_objext conftest.$ac_ext |
12034 | 12582 | ||
12035 | fi | 12583 | fi |
12036 | echo "$as_me:12036: result: $ac_cv_have_ssize_t" >&5 | 12584 | echo "$as_me:12584: result: $ac_cv_have_ssize_t" >&5 |
12037 | echo "${ECHO_T}$ac_cv_have_ssize_t" >&6 | 12585 | echo "${ECHO_T}$ac_cv_have_ssize_t" >&6 |
12038 | if test "x$ac_cv_have_ssize_t" = "xyes" ; then | 12586 | if test "x$ac_cv_have_ssize_t" = "xyes" ; then |
12039 | cat >>confdefs.h <<\EOF | 12587 | cat >>confdefs.h <<\EOF |
@@ -12042,14 +12590,14 @@ EOF | |||
12042 | 12590 | ||
12043 | fi | 12591 | fi |
12044 | 12592 | ||
12045 | echo "$as_me:12045: checking for clock_t" >&5 | 12593 | echo "$as_me:12593: checking for clock_t" >&5 |
12046 | echo $ECHO_N "checking for clock_t... $ECHO_C" >&6 | 12594 | echo $ECHO_N "checking for clock_t... $ECHO_C" >&6 |
12047 | if test "${ac_cv_have_clock_t+set}" = set; then | 12595 | if test "${ac_cv_have_clock_t+set}" = set; then |
12048 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 12596 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
12049 | else | 12597 | else |
12050 | 12598 | ||
12051 | cat >conftest.$ac_ext <<_ACEOF | 12599 | cat >conftest.$ac_ext <<_ACEOF |
12052 | #line 12052 "configure" | 12600 | #line 12600 "configure" |
12053 | #include "confdefs.h" | 12601 | #include "confdefs.h" |
12054 | 12602 | ||
12055 | #include <time.h> | 12603 | #include <time.h> |
@@ -12063,16 +12611,16 @@ main () | |||
12063 | } | 12611 | } |
12064 | _ACEOF | 12612 | _ACEOF |
12065 | rm -f conftest.$ac_objext | 12613 | rm -f conftest.$ac_objext |
12066 | if { (eval echo "$as_me:12066: \"$ac_compile\"") >&5 | 12614 | if { (eval echo "$as_me:12614: \"$ac_compile\"") >&5 |
12067 | (eval $ac_compile) 2>&5 | 12615 | (eval $ac_compile) 2>&5 |
12068 | ac_status=$? | 12616 | ac_status=$? |
12069 | echo "$as_me:12069: \$? = $ac_status" >&5 | 12617 | echo "$as_me:12617: \$? = $ac_status" >&5 |
12070 | (exit $ac_status); } && | 12618 | (exit $ac_status); } && |
12071 | { ac_try='test -s conftest.$ac_objext' | 12619 | { ac_try='test -s conftest.$ac_objext' |
12072 | { (eval echo "$as_me:12072: \"$ac_try\"") >&5 | 12620 | { (eval echo "$as_me:12620: \"$ac_try\"") >&5 |
12073 | (eval $ac_try) 2>&5 | 12621 | (eval $ac_try) 2>&5 |
12074 | ac_status=$? | 12622 | ac_status=$? |
12075 | echo "$as_me:12075: \$? = $ac_status" >&5 | 12623 | echo "$as_me:12623: \$? = $ac_status" >&5 |
12076 | (exit $ac_status); }; }; then | 12624 | (exit $ac_status); }; }; then |
12077 | ac_cv_have_clock_t="yes" | 12625 | ac_cv_have_clock_t="yes" |
12078 | else | 12626 | else |
@@ -12084,7 +12632,7 @@ fi | |||
12084 | rm -f conftest.$ac_objext conftest.$ac_ext | 12632 | rm -f conftest.$ac_objext conftest.$ac_ext |
12085 | 12633 | ||
12086 | fi | 12634 | fi |
12087 | echo "$as_me:12087: result: $ac_cv_have_clock_t" >&5 | 12635 | echo "$as_me:12635: result: $ac_cv_have_clock_t" >&5 |
12088 | echo "${ECHO_T}$ac_cv_have_clock_t" >&6 | 12636 | echo "${ECHO_T}$ac_cv_have_clock_t" >&6 |
12089 | if test "x$ac_cv_have_clock_t" = "xyes" ; then | 12637 | if test "x$ac_cv_have_clock_t" = "xyes" ; then |
12090 | cat >>confdefs.h <<\EOF | 12638 | cat >>confdefs.h <<\EOF |
@@ -12093,14 +12641,14 @@ EOF | |||
12093 | 12641 | ||
12094 | fi | 12642 | fi |
12095 | 12643 | ||
12096 | echo "$as_me:12096: checking for sa_family_t" >&5 | 12644 | echo "$as_me:12644: checking for sa_family_t" >&5 |
12097 | echo $ECHO_N "checking for sa_family_t... $ECHO_C" >&6 | 12645 | echo $ECHO_N "checking for sa_family_t... $ECHO_C" >&6 |
12098 | if test "${ac_cv_have_sa_family_t+set}" = set; then | 12646 | if test "${ac_cv_have_sa_family_t+set}" = set; then |
12099 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 12647 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
12100 | else | 12648 | else |
12101 | 12649 | ||
12102 | cat >conftest.$ac_ext <<_ACEOF | 12650 | cat >conftest.$ac_ext <<_ACEOF |
12103 | #line 12103 "configure" | 12651 | #line 12651 "configure" |
12104 | #include "confdefs.h" | 12652 | #include "confdefs.h" |
12105 | 12653 | ||
12106 | #include <sys/types.h> | 12654 | #include <sys/types.h> |
@@ -12115,23 +12663,23 @@ main () | |||
12115 | } | 12663 | } |
12116 | _ACEOF | 12664 | _ACEOF |
12117 | rm -f conftest.$ac_objext | 12665 | rm -f conftest.$ac_objext |
12118 | if { (eval echo "$as_me:12118: \"$ac_compile\"") >&5 | 12666 | if { (eval echo "$as_me:12666: \"$ac_compile\"") >&5 |
12119 | (eval $ac_compile) 2>&5 | 12667 | (eval $ac_compile) 2>&5 |
12120 | ac_status=$? | 12668 | ac_status=$? |
12121 | echo "$as_me:12121: \$? = $ac_status" >&5 | 12669 | echo "$as_me:12669: \$? = $ac_status" >&5 |
12122 | (exit $ac_status); } && | 12670 | (exit $ac_status); } && |
12123 | { ac_try='test -s conftest.$ac_objext' | 12671 | { ac_try='test -s conftest.$ac_objext' |
12124 | { (eval echo "$as_me:12124: \"$ac_try\"") >&5 | 12672 | { (eval echo "$as_me:12672: \"$ac_try\"") >&5 |
12125 | (eval $ac_try) 2>&5 | 12673 | (eval $ac_try) 2>&5 |
12126 | ac_status=$? | 12674 | ac_status=$? |
12127 | echo "$as_me:12127: \$? = $ac_status" >&5 | 12675 | echo "$as_me:12675: \$? = $ac_status" >&5 |
12128 | (exit $ac_status); }; }; then | 12676 | (exit $ac_status); }; }; then |
12129 | ac_cv_have_sa_family_t="yes" | 12677 | ac_cv_have_sa_family_t="yes" |
12130 | else | 12678 | else |
12131 | echo "$as_me: failed program was:" >&5 | 12679 | echo "$as_me: failed program was:" >&5 |
12132 | cat conftest.$ac_ext >&5 | 12680 | cat conftest.$ac_ext >&5 |
12133 | cat >conftest.$ac_ext <<_ACEOF | 12681 | cat >conftest.$ac_ext <<_ACEOF |
12134 | #line 12134 "configure" | 12682 | #line 12682 "configure" |
12135 | #include "confdefs.h" | 12683 | #include "confdefs.h" |
12136 | 12684 | ||
12137 | #include <sys/types.h> | 12685 | #include <sys/types.h> |
@@ -12147,16 +12695,16 @@ main () | |||
12147 | } | 12695 | } |
12148 | _ACEOF | 12696 | _ACEOF |
12149 | rm -f conftest.$ac_objext | 12697 | rm -f conftest.$ac_objext |
12150 | if { (eval echo "$as_me:12150: \"$ac_compile\"") >&5 | 12698 | if { (eval echo "$as_me:12698: \"$ac_compile\"") >&5 |
12151 | (eval $ac_compile) 2>&5 | 12699 | (eval $ac_compile) 2>&5 |
12152 | ac_status=$? | 12700 | ac_status=$? |
12153 | echo "$as_me:12153: \$? = $ac_status" >&5 | 12701 | echo "$as_me:12701: \$? = $ac_status" >&5 |
12154 | (exit $ac_status); } && | 12702 | (exit $ac_status); } && |
12155 | { ac_try='test -s conftest.$ac_objext' | 12703 | { ac_try='test -s conftest.$ac_objext' |
12156 | { (eval echo "$as_me:12156: \"$ac_try\"") >&5 | 12704 | { (eval echo "$as_me:12704: \"$ac_try\"") >&5 |
12157 | (eval $ac_try) 2>&5 | 12705 | (eval $ac_try) 2>&5 |
12158 | ac_status=$? | 12706 | ac_status=$? |
12159 | echo "$as_me:12159: \$? = $ac_status" >&5 | 12707 | echo "$as_me:12707: \$? = $ac_status" >&5 |
12160 | (exit $ac_status); }; }; then | 12708 | (exit $ac_status); }; }; then |
12161 | ac_cv_have_sa_family_t="yes" | 12709 | ac_cv_have_sa_family_t="yes" |
12162 | else | 12710 | else |
@@ -12171,7 +12719,7 @@ fi | |||
12171 | rm -f conftest.$ac_objext conftest.$ac_ext | 12719 | rm -f conftest.$ac_objext conftest.$ac_ext |
12172 | 12720 | ||
12173 | fi | 12721 | fi |
12174 | echo "$as_me:12174: result: $ac_cv_have_sa_family_t" >&5 | 12722 | echo "$as_me:12722: result: $ac_cv_have_sa_family_t" >&5 |
12175 | echo "${ECHO_T}$ac_cv_have_sa_family_t" >&6 | 12723 | echo "${ECHO_T}$ac_cv_have_sa_family_t" >&6 |
12176 | if test "x$ac_cv_have_sa_family_t" = "xyes" ; then | 12724 | if test "x$ac_cv_have_sa_family_t" = "xyes" ; then |
12177 | cat >>confdefs.h <<\EOF | 12725 | cat >>confdefs.h <<\EOF |
@@ -12180,14 +12728,14 @@ EOF | |||
12180 | 12728 | ||
12181 | fi | 12729 | fi |
12182 | 12730 | ||
12183 | echo "$as_me:12183: checking for pid_t" >&5 | 12731 | echo "$as_me:12731: checking for pid_t" >&5 |
12184 | echo $ECHO_N "checking for pid_t... $ECHO_C" >&6 | 12732 | echo $ECHO_N "checking for pid_t... $ECHO_C" >&6 |
12185 | if test "${ac_cv_have_pid_t+set}" = set; then | 12733 | if test "${ac_cv_have_pid_t+set}" = set; then |
12186 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 12734 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
12187 | else | 12735 | else |
12188 | 12736 | ||
12189 | cat >conftest.$ac_ext <<_ACEOF | 12737 | cat >conftest.$ac_ext <<_ACEOF |
12190 | #line 12190 "configure" | 12738 | #line 12738 "configure" |
12191 | #include "confdefs.h" | 12739 | #include "confdefs.h" |
12192 | 12740 | ||
12193 | #include <sys/types.h> | 12741 | #include <sys/types.h> |
@@ -12201,16 +12749,16 @@ main () | |||
12201 | } | 12749 | } |
12202 | _ACEOF | 12750 | _ACEOF |
12203 | rm -f conftest.$ac_objext | 12751 | rm -f conftest.$ac_objext |
12204 | if { (eval echo "$as_me:12204: \"$ac_compile\"") >&5 | 12752 | if { (eval echo "$as_me:12752: \"$ac_compile\"") >&5 |
12205 | (eval $ac_compile) 2>&5 | 12753 | (eval $ac_compile) 2>&5 |
12206 | ac_status=$? | 12754 | ac_status=$? |
12207 | echo "$as_me:12207: \$? = $ac_status" >&5 | 12755 | echo "$as_me:12755: \$? = $ac_status" >&5 |
12208 | (exit $ac_status); } && | 12756 | (exit $ac_status); } && |
12209 | { ac_try='test -s conftest.$ac_objext' | 12757 | { ac_try='test -s conftest.$ac_objext' |
12210 | { (eval echo "$as_me:12210: \"$ac_try\"") >&5 | 12758 | { (eval echo "$as_me:12758: \"$ac_try\"") >&5 |
12211 | (eval $ac_try) 2>&5 | 12759 | (eval $ac_try) 2>&5 |
12212 | ac_status=$? | 12760 | ac_status=$? |
12213 | echo "$as_me:12213: \$? = $ac_status" >&5 | 12761 | echo "$as_me:12761: \$? = $ac_status" >&5 |
12214 | (exit $ac_status); }; }; then | 12762 | (exit $ac_status); }; }; then |
12215 | ac_cv_have_pid_t="yes" | 12763 | ac_cv_have_pid_t="yes" |
12216 | else | 12764 | else |
@@ -12222,7 +12770,7 @@ fi | |||
12222 | rm -f conftest.$ac_objext conftest.$ac_ext | 12770 | rm -f conftest.$ac_objext conftest.$ac_ext |
12223 | 12771 | ||
12224 | fi | 12772 | fi |
12225 | echo "$as_me:12225: result: $ac_cv_have_pid_t" >&5 | 12773 | echo "$as_me:12773: result: $ac_cv_have_pid_t" >&5 |
12226 | echo "${ECHO_T}$ac_cv_have_pid_t" >&6 | 12774 | echo "${ECHO_T}$ac_cv_have_pid_t" >&6 |
12227 | if test "x$ac_cv_have_pid_t" = "xyes" ; then | 12775 | if test "x$ac_cv_have_pid_t" = "xyes" ; then |
12228 | cat >>confdefs.h <<\EOF | 12776 | cat >>confdefs.h <<\EOF |
@@ -12231,14 +12779,14 @@ EOF | |||
12231 | 12779 | ||
12232 | fi | 12780 | fi |
12233 | 12781 | ||
12234 | echo "$as_me:12234: checking for mode_t" >&5 | 12782 | echo "$as_me:12782: checking for mode_t" >&5 |
12235 | echo $ECHO_N "checking for mode_t... $ECHO_C" >&6 | 12783 | echo $ECHO_N "checking for mode_t... $ECHO_C" >&6 |
12236 | if test "${ac_cv_have_mode_t+set}" = set; then | 12784 | if test "${ac_cv_have_mode_t+set}" = set; then |
12237 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 12785 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
12238 | else | 12786 | else |
12239 | 12787 | ||
12240 | cat >conftest.$ac_ext <<_ACEOF | 12788 | cat >conftest.$ac_ext <<_ACEOF |
12241 | #line 12241 "configure" | 12789 | #line 12789 "configure" |
12242 | #include "confdefs.h" | 12790 | #include "confdefs.h" |
12243 | 12791 | ||
12244 | #include <sys/types.h> | 12792 | #include <sys/types.h> |
@@ -12252,16 +12800,16 @@ main () | |||
12252 | } | 12800 | } |
12253 | _ACEOF | 12801 | _ACEOF |
12254 | rm -f conftest.$ac_objext | 12802 | rm -f conftest.$ac_objext |
12255 | if { (eval echo "$as_me:12255: \"$ac_compile\"") >&5 | 12803 | if { (eval echo "$as_me:12803: \"$ac_compile\"") >&5 |
12256 | (eval $ac_compile) 2>&5 | 12804 | (eval $ac_compile) 2>&5 |
12257 | ac_status=$? | 12805 | ac_status=$? |
12258 | echo "$as_me:12258: \$? = $ac_status" >&5 | 12806 | echo "$as_me:12806: \$? = $ac_status" >&5 |
12259 | (exit $ac_status); } && | 12807 | (exit $ac_status); } && |
12260 | { ac_try='test -s conftest.$ac_objext' | 12808 | { ac_try='test -s conftest.$ac_objext' |
12261 | { (eval echo "$as_me:12261: \"$ac_try\"") >&5 | 12809 | { (eval echo "$as_me:12809: \"$ac_try\"") >&5 |
12262 | (eval $ac_try) 2>&5 | 12810 | (eval $ac_try) 2>&5 |
12263 | ac_status=$? | 12811 | ac_status=$? |
12264 | echo "$as_me:12264: \$? = $ac_status" >&5 | 12812 | echo "$as_me:12812: \$? = $ac_status" >&5 |
12265 | (exit $ac_status); }; }; then | 12813 | (exit $ac_status); }; }; then |
12266 | ac_cv_have_mode_t="yes" | 12814 | ac_cv_have_mode_t="yes" |
12267 | else | 12815 | else |
@@ -12273,7 +12821,7 @@ fi | |||
12273 | rm -f conftest.$ac_objext conftest.$ac_ext | 12821 | rm -f conftest.$ac_objext conftest.$ac_ext |
12274 | 12822 | ||
12275 | fi | 12823 | fi |
12276 | echo "$as_me:12276: result: $ac_cv_have_mode_t" >&5 | 12824 | echo "$as_me:12824: result: $ac_cv_have_mode_t" >&5 |
12277 | echo "${ECHO_T}$ac_cv_have_mode_t" >&6 | 12825 | echo "${ECHO_T}$ac_cv_have_mode_t" >&6 |
12278 | if test "x$ac_cv_have_mode_t" = "xyes" ; then | 12826 | if test "x$ac_cv_have_mode_t" = "xyes" ; then |
12279 | cat >>confdefs.h <<\EOF | 12827 | cat >>confdefs.h <<\EOF |
@@ -12282,14 +12830,14 @@ EOF | |||
12282 | 12830 | ||
12283 | fi | 12831 | fi |
12284 | 12832 | ||
12285 | echo "$as_me:12285: checking for struct sockaddr_storage" >&5 | 12833 | echo "$as_me:12833: checking for struct sockaddr_storage" >&5 |
12286 | echo $ECHO_N "checking for struct sockaddr_storage... $ECHO_C" >&6 | 12834 | echo $ECHO_N "checking for struct sockaddr_storage... $ECHO_C" >&6 |
12287 | if test "${ac_cv_have_struct_sockaddr_storage+set}" = set; then | 12835 | if test "${ac_cv_have_struct_sockaddr_storage+set}" = set; then |
12288 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 12836 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
12289 | else | 12837 | else |
12290 | 12838 | ||
12291 | cat >conftest.$ac_ext <<_ACEOF | 12839 | cat >conftest.$ac_ext <<_ACEOF |
12292 | #line 12292 "configure" | 12840 | #line 12840 "configure" |
12293 | #include "confdefs.h" | 12841 | #include "confdefs.h" |
12294 | 12842 | ||
12295 | #include <sys/types.h> | 12843 | #include <sys/types.h> |
@@ -12304,16 +12852,16 @@ main () | |||
12304 | } | 12852 | } |
12305 | _ACEOF | 12853 | _ACEOF |
12306 | rm -f conftest.$ac_objext | 12854 | rm -f conftest.$ac_objext |
12307 | if { (eval echo "$as_me:12307: \"$ac_compile\"") >&5 | 12855 | if { (eval echo "$as_me:12855: \"$ac_compile\"") >&5 |
12308 | (eval $ac_compile) 2>&5 | 12856 | (eval $ac_compile) 2>&5 |
12309 | ac_status=$? | 12857 | ac_status=$? |
12310 | echo "$as_me:12310: \$? = $ac_status" >&5 | 12858 | echo "$as_me:12858: \$? = $ac_status" >&5 |
12311 | (exit $ac_status); } && | 12859 | (exit $ac_status); } && |
12312 | { ac_try='test -s conftest.$ac_objext' | 12860 | { ac_try='test -s conftest.$ac_objext' |
12313 | { (eval echo "$as_me:12313: \"$ac_try\"") >&5 | 12861 | { (eval echo "$as_me:12861: \"$ac_try\"") >&5 |
12314 | (eval $ac_try) 2>&5 | 12862 | (eval $ac_try) 2>&5 |
12315 | ac_status=$? | 12863 | ac_status=$? |
12316 | echo "$as_me:12316: \$? = $ac_status" >&5 | 12864 | echo "$as_me:12864: \$? = $ac_status" >&5 |
12317 | (exit $ac_status); }; }; then | 12865 | (exit $ac_status); }; }; then |
12318 | ac_cv_have_struct_sockaddr_storage="yes" | 12866 | ac_cv_have_struct_sockaddr_storage="yes" |
12319 | else | 12867 | else |
@@ -12325,7 +12873,7 @@ fi | |||
12325 | rm -f conftest.$ac_objext conftest.$ac_ext | 12873 | rm -f conftest.$ac_objext conftest.$ac_ext |
12326 | 12874 | ||
12327 | fi | 12875 | fi |
12328 | echo "$as_me:12328: result: $ac_cv_have_struct_sockaddr_storage" >&5 | 12876 | echo "$as_me:12876: result: $ac_cv_have_struct_sockaddr_storage" >&5 |
12329 | echo "${ECHO_T}$ac_cv_have_struct_sockaddr_storage" >&6 | 12877 | echo "${ECHO_T}$ac_cv_have_struct_sockaddr_storage" >&6 |
12330 | if test "x$ac_cv_have_struct_sockaddr_storage" = "xyes" ; then | 12878 | if test "x$ac_cv_have_struct_sockaddr_storage" = "xyes" ; then |
12331 | cat >>confdefs.h <<\EOF | 12879 | cat >>confdefs.h <<\EOF |
@@ -12334,14 +12882,14 @@ EOF | |||
12334 | 12882 | ||
12335 | fi | 12883 | fi |
12336 | 12884 | ||
12337 | echo "$as_me:12337: checking for struct sockaddr_in6" >&5 | 12885 | echo "$as_me:12885: checking for struct sockaddr_in6" >&5 |
12338 | echo $ECHO_N "checking for struct sockaddr_in6... $ECHO_C" >&6 | 12886 | echo $ECHO_N "checking for struct sockaddr_in6... $ECHO_C" >&6 |
12339 | if test "${ac_cv_have_struct_sockaddr_in6+set}" = set; then | 12887 | if test "${ac_cv_have_struct_sockaddr_in6+set}" = set; then |
12340 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 12888 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
12341 | else | 12889 | else |
12342 | 12890 | ||
12343 | cat >conftest.$ac_ext <<_ACEOF | 12891 | cat >conftest.$ac_ext <<_ACEOF |
12344 | #line 12344 "configure" | 12892 | #line 12892 "configure" |
12345 | #include "confdefs.h" | 12893 | #include "confdefs.h" |
12346 | 12894 | ||
12347 | #include <sys/types.h> | 12895 | #include <sys/types.h> |
@@ -12356,16 +12904,16 @@ main () | |||
12356 | } | 12904 | } |
12357 | _ACEOF | 12905 | _ACEOF |
12358 | rm -f conftest.$ac_objext | 12906 | rm -f conftest.$ac_objext |
12359 | if { (eval echo "$as_me:12359: \"$ac_compile\"") >&5 | 12907 | if { (eval echo "$as_me:12907: \"$ac_compile\"") >&5 |
12360 | (eval $ac_compile) 2>&5 | 12908 | (eval $ac_compile) 2>&5 |
12361 | ac_status=$? | 12909 | ac_status=$? |
12362 | echo "$as_me:12362: \$? = $ac_status" >&5 | 12910 | echo "$as_me:12910: \$? = $ac_status" >&5 |
12363 | (exit $ac_status); } && | 12911 | (exit $ac_status); } && |
12364 | { ac_try='test -s conftest.$ac_objext' | 12912 | { ac_try='test -s conftest.$ac_objext' |
12365 | { (eval echo "$as_me:12365: \"$ac_try\"") >&5 | 12913 | { (eval echo "$as_me:12913: \"$ac_try\"") >&5 |
12366 | (eval $ac_try) 2>&5 | 12914 | (eval $ac_try) 2>&5 |
12367 | ac_status=$? | 12915 | ac_status=$? |
12368 | echo "$as_me:12368: \$? = $ac_status" >&5 | 12916 | echo "$as_me:12916: \$? = $ac_status" >&5 |
12369 | (exit $ac_status); }; }; then | 12917 | (exit $ac_status); }; }; then |
12370 | ac_cv_have_struct_sockaddr_in6="yes" | 12918 | ac_cv_have_struct_sockaddr_in6="yes" |
12371 | else | 12919 | else |
@@ -12377,7 +12925,7 @@ fi | |||
12377 | rm -f conftest.$ac_objext conftest.$ac_ext | 12925 | rm -f conftest.$ac_objext conftest.$ac_ext |
12378 | 12926 | ||
12379 | fi | 12927 | fi |
12380 | echo "$as_me:12380: result: $ac_cv_have_struct_sockaddr_in6" >&5 | 12928 | echo "$as_me:12928: result: $ac_cv_have_struct_sockaddr_in6" >&5 |
12381 | echo "${ECHO_T}$ac_cv_have_struct_sockaddr_in6" >&6 | 12929 | echo "${ECHO_T}$ac_cv_have_struct_sockaddr_in6" >&6 |
12382 | if test "x$ac_cv_have_struct_sockaddr_in6" = "xyes" ; then | 12930 | if test "x$ac_cv_have_struct_sockaddr_in6" = "xyes" ; then |
12383 | cat >>confdefs.h <<\EOF | 12931 | cat >>confdefs.h <<\EOF |
@@ -12386,14 +12934,14 @@ EOF | |||
12386 | 12934 | ||
12387 | fi | 12935 | fi |
12388 | 12936 | ||
12389 | echo "$as_me:12389: checking for struct in6_addr" >&5 | 12937 | echo "$as_me:12937: checking for struct in6_addr" >&5 |
12390 | echo $ECHO_N "checking for struct in6_addr... $ECHO_C" >&6 | 12938 | echo $ECHO_N "checking for struct in6_addr... $ECHO_C" >&6 |
12391 | if test "${ac_cv_have_struct_in6_addr+set}" = set; then | 12939 | if test "${ac_cv_have_struct_in6_addr+set}" = set; then |
12392 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 12940 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
12393 | else | 12941 | else |
12394 | 12942 | ||
12395 | cat >conftest.$ac_ext <<_ACEOF | 12943 | cat >conftest.$ac_ext <<_ACEOF |
12396 | #line 12396 "configure" | 12944 | #line 12944 "configure" |
12397 | #include "confdefs.h" | 12945 | #include "confdefs.h" |
12398 | 12946 | ||
12399 | #include <sys/types.h> | 12947 | #include <sys/types.h> |
@@ -12408,16 +12956,16 @@ main () | |||
12408 | } | 12956 | } |
12409 | _ACEOF | 12957 | _ACEOF |
12410 | rm -f conftest.$ac_objext | 12958 | rm -f conftest.$ac_objext |
12411 | if { (eval echo "$as_me:12411: \"$ac_compile\"") >&5 | 12959 | if { (eval echo "$as_me:12959: \"$ac_compile\"") >&5 |
12412 | (eval $ac_compile) 2>&5 | 12960 | (eval $ac_compile) 2>&5 |
12413 | ac_status=$? | 12961 | ac_status=$? |
12414 | echo "$as_me:12414: \$? = $ac_status" >&5 | 12962 | echo "$as_me:12962: \$? = $ac_status" >&5 |
12415 | (exit $ac_status); } && | 12963 | (exit $ac_status); } && |
12416 | { ac_try='test -s conftest.$ac_objext' | 12964 | { ac_try='test -s conftest.$ac_objext' |
12417 | { (eval echo "$as_me:12417: \"$ac_try\"") >&5 | 12965 | { (eval echo "$as_me:12965: \"$ac_try\"") >&5 |
12418 | (eval $ac_try) 2>&5 | 12966 | (eval $ac_try) 2>&5 |
12419 | ac_status=$? | 12967 | ac_status=$? |
12420 | echo "$as_me:12420: \$? = $ac_status" >&5 | 12968 | echo "$as_me:12968: \$? = $ac_status" >&5 |
12421 | (exit $ac_status); }; }; then | 12969 | (exit $ac_status); }; }; then |
12422 | ac_cv_have_struct_in6_addr="yes" | 12970 | ac_cv_have_struct_in6_addr="yes" |
12423 | else | 12971 | else |
@@ -12429,7 +12977,7 @@ fi | |||
12429 | rm -f conftest.$ac_objext conftest.$ac_ext | 12977 | rm -f conftest.$ac_objext conftest.$ac_ext |
12430 | 12978 | ||
12431 | fi | 12979 | fi |
12432 | echo "$as_me:12432: result: $ac_cv_have_struct_in6_addr" >&5 | 12980 | echo "$as_me:12980: result: $ac_cv_have_struct_in6_addr" >&5 |
12433 | echo "${ECHO_T}$ac_cv_have_struct_in6_addr" >&6 | 12981 | echo "${ECHO_T}$ac_cv_have_struct_in6_addr" >&6 |
12434 | if test "x$ac_cv_have_struct_in6_addr" = "xyes" ; then | 12982 | if test "x$ac_cv_have_struct_in6_addr" = "xyes" ; then |
12435 | cat >>confdefs.h <<\EOF | 12983 | cat >>confdefs.h <<\EOF |
@@ -12438,14 +12986,14 @@ EOF | |||
12438 | 12986 | ||
12439 | fi | 12987 | fi |
12440 | 12988 | ||
12441 | echo "$as_me:12441: checking for struct addrinfo" >&5 | 12989 | echo "$as_me:12989: checking for struct addrinfo" >&5 |
12442 | echo $ECHO_N "checking for struct addrinfo... $ECHO_C" >&6 | 12990 | echo $ECHO_N "checking for struct addrinfo... $ECHO_C" >&6 |
12443 | if test "${ac_cv_have_struct_addrinfo+set}" = set; then | 12991 | if test "${ac_cv_have_struct_addrinfo+set}" = set; then |
12444 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 12992 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
12445 | else | 12993 | else |
12446 | 12994 | ||
12447 | cat >conftest.$ac_ext <<_ACEOF | 12995 | cat >conftest.$ac_ext <<_ACEOF |
12448 | #line 12448 "configure" | 12996 | #line 12996 "configure" |
12449 | #include "confdefs.h" | 12997 | #include "confdefs.h" |
12450 | 12998 | ||
12451 | #include <sys/types.h> | 12999 | #include <sys/types.h> |
@@ -12461,16 +13009,16 @@ main () | |||
12461 | } | 13009 | } |
12462 | _ACEOF | 13010 | _ACEOF |
12463 | rm -f conftest.$ac_objext | 13011 | rm -f conftest.$ac_objext |
12464 | if { (eval echo "$as_me:12464: \"$ac_compile\"") >&5 | 13012 | if { (eval echo "$as_me:13012: \"$ac_compile\"") >&5 |
12465 | (eval $ac_compile) 2>&5 | 13013 | (eval $ac_compile) 2>&5 |
12466 | ac_status=$? | 13014 | ac_status=$? |
12467 | echo "$as_me:12467: \$? = $ac_status" >&5 | 13015 | echo "$as_me:13015: \$? = $ac_status" >&5 |
12468 | (exit $ac_status); } && | 13016 | (exit $ac_status); } && |
12469 | { ac_try='test -s conftest.$ac_objext' | 13017 | { ac_try='test -s conftest.$ac_objext' |
12470 | { (eval echo "$as_me:12470: \"$ac_try\"") >&5 | 13018 | { (eval echo "$as_me:13018: \"$ac_try\"") >&5 |
12471 | (eval $ac_try) 2>&5 | 13019 | (eval $ac_try) 2>&5 |
12472 | ac_status=$? | 13020 | ac_status=$? |
12473 | echo "$as_me:12473: \$? = $ac_status" >&5 | 13021 | echo "$as_me:13021: \$? = $ac_status" >&5 |
12474 | (exit $ac_status); }; }; then | 13022 | (exit $ac_status); }; }; then |
12475 | ac_cv_have_struct_addrinfo="yes" | 13023 | ac_cv_have_struct_addrinfo="yes" |
12476 | else | 13024 | else |
@@ -12482,7 +13030,7 @@ fi | |||
12482 | rm -f conftest.$ac_objext conftest.$ac_ext | 13030 | rm -f conftest.$ac_objext conftest.$ac_ext |
12483 | 13031 | ||
12484 | fi | 13032 | fi |
12485 | echo "$as_me:12485: result: $ac_cv_have_struct_addrinfo" >&5 | 13033 | echo "$as_me:13033: result: $ac_cv_have_struct_addrinfo" >&5 |
12486 | echo "${ECHO_T}$ac_cv_have_struct_addrinfo" >&6 | 13034 | echo "${ECHO_T}$ac_cv_have_struct_addrinfo" >&6 |
12487 | if test "x$ac_cv_have_struct_addrinfo" = "xyes" ; then | 13035 | if test "x$ac_cv_have_struct_addrinfo" = "xyes" ; then |
12488 | cat >>confdefs.h <<\EOF | 13036 | cat >>confdefs.h <<\EOF |
@@ -12491,14 +13039,14 @@ EOF | |||
12491 | 13039 | ||
12492 | fi | 13040 | fi |
12493 | 13041 | ||
12494 | echo "$as_me:12494: checking for struct timeval" >&5 | 13042 | echo "$as_me:13042: checking for struct timeval" >&5 |
12495 | echo $ECHO_N "checking for struct timeval... $ECHO_C" >&6 | 13043 | echo $ECHO_N "checking for struct timeval... $ECHO_C" >&6 |
12496 | if test "${ac_cv_have_struct_timeval+set}" = set; then | 13044 | if test "${ac_cv_have_struct_timeval+set}" = set; then |
12497 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 13045 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
12498 | else | 13046 | else |
12499 | 13047 | ||
12500 | cat >conftest.$ac_ext <<_ACEOF | 13048 | cat >conftest.$ac_ext <<_ACEOF |
12501 | #line 12501 "configure" | 13049 | #line 13049 "configure" |
12502 | #include "confdefs.h" | 13050 | #include "confdefs.h" |
12503 | #include <sys/time.h> | 13051 | #include <sys/time.h> |
12504 | int | 13052 | int |
@@ -12510,16 +13058,16 @@ main () | |||
12510 | } | 13058 | } |
12511 | _ACEOF | 13059 | _ACEOF |
12512 | rm -f conftest.$ac_objext | 13060 | rm -f conftest.$ac_objext |
12513 | if { (eval echo "$as_me:12513: \"$ac_compile\"") >&5 | 13061 | if { (eval echo "$as_me:13061: \"$ac_compile\"") >&5 |
12514 | (eval $ac_compile) 2>&5 | 13062 | (eval $ac_compile) 2>&5 |
12515 | ac_status=$? | 13063 | ac_status=$? |
12516 | echo "$as_me:12516: \$? = $ac_status" >&5 | 13064 | echo "$as_me:13064: \$? = $ac_status" >&5 |
12517 | (exit $ac_status); } && | 13065 | (exit $ac_status); } && |
12518 | { ac_try='test -s conftest.$ac_objext' | 13066 | { ac_try='test -s conftest.$ac_objext' |
12519 | { (eval echo "$as_me:12519: \"$ac_try\"") >&5 | 13067 | { (eval echo "$as_me:13067: \"$ac_try\"") >&5 |
12520 | (eval $ac_try) 2>&5 | 13068 | (eval $ac_try) 2>&5 |
12521 | ac_status=$? | 13069 | ac_status=$? |
12522 | echo "$as_me:12522: \$? = $ac_status" >&5 | 13070 | echo "$as_me:13070: \$? = $ac_status" >&5 |
12523 | (exit $ac_status); }; }; then | 13071 | (exit $ac_status); }; }; then |
12524 | ac_cv_have_struct_timeval="yes" | 13072 | ac_cv_have_struct_timeval="yes" |
12525 | else | 13073 | else |
@@ -12531,7 +13079,7 @@ fi | |||
12531 | rm -f conftest.$ac_objext conftest.$ac_ext | 13079 | rm -f conftest.$ac_objext conftest.$ac_ext |
12532 | 13080 | ||
12533 | fi | 13081 | fi |
12534 | echo "$as_me:12534: result: $ac_cv_have_struct_timeval" >&5 | 13082 | echo "$as_me:13082: result: $ac_cv_have_struct_timeval" >&5 |
12535 | echo "${ECHO_T}$ac_cv_have_struct_timeval" >&6 | 13083 | echo "${ECHO_T}$ac_cv_have_struct_timeval" >&6 |
12536 | if test "x$ac_cv_have_struct_timeval" = "xyes" ; then | 13084 | if test "x$ac_cv_have_struct_timeval" = "xyes" ; then |
12537 | cat >>confdefs.h <<\EOF | 13085 | cat >>confdefs.h <<\EOF |
@@ -12541,13 +13089,13 @@ EOF | |||
12541 | have_struct_timeval=1 | 13089 | have_struct_timeval=1 |
12542 | fi | 13090 | fi |
12543 | 13091 | ||
12544 | echo "$as_me:12544: checking for struct timespec" >&5 | 13092 | echo "$as_me:13092: checking for struct timespec" >&5 |
12545 | echo $ECHO_N "checking for struct timespec... $ECHO_C" >&6 | 13093 | echo $ECHO_N "checking for struct timespec... $ECHO_C" >&6 |
12546 | if test "${ac_cv_type_struct_timespec+set}" = set; then | 13094 | if test "${ac_cv_type_struct_timespec+set}" = set; then |
12547 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 13095 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
12548 | else | 13096 | else |
12549 | cat >conftest.$ac_ext <<_ACEOF | 13097 | cat >conftest.$ac_ext <<_ACEOF |
12550 | #line 12550 "configure" | 13098 | #line 13098 "configure" |
12551 | #include "confdefs.h" | 13099 | #include "confdefs.h" |
12552 | $ac_includes_default | 13100 | $ac_includes_default |
12553 | int | 13101 | int |
@@ -12562,16 +13110,16 @@ if (sizeof (struct timespec)) | |||
12562 | } | 13110 | } |
12563 | _ACEOF | 13111 | _ACEOF |
12564 | rm -f conftest.$ac_objext | 13112 | rm -f conftest.$ac_objext |
12565 | if { (eval echo "$as_me:12565: \"$ac_compile\"") >&5 | 13113 | if { (eval echo "$as_me:13113: \"$ac_compile\"") >&5 |
12566 | (eval $ac_compile) 2>&5 | 13114 | (eval $ac_compile) 2>&5 |
12567 | ac_status=$? | 13115 | ac_status=$? |
12568 | echo "$as_me:12568: \$? = $ac_status" >&5 | 13116 | echo "$as_me:13116: \$? = $ac_status" >&5 |
12569 | (exit $ac_status); } && | 13117 | (exit $ac_status); } && |
12570 | { ac_try='test -s conftest.$ac_objext' | 13118 | { ac_try='test -s conftest.$ac_objext' |
12571 | { (eval echo "$as_me:12571: \"$ac_try\"") >&5 | 13119 | { (eval echo "$as_me:13119: \"$ac_try\"") >&5 |
12572 | (eval $ac_try) 2>&5 | 13120 | (eval $ac_try) 2>&5 |
12573 | ac_status=$? | 13121 | ac_status=$? |
12574 | echo "$as_me:12574: \$? = $ac_status" >&5 | 13122 | echo "$as_me:13122: \$? = $ac_status" >&5 |
12575 | (exit $ac_status); }; }; then | 13123 | (exit $ac_status); }; }; then |
12576 | ac_cv_type_struct_timespec=yes | 13124 | ac_cv_type_struct_timespec=yes |
12577 | else | 13125 | else |
@@ -12581,7 +13129,7 @@ ac_cv_type_struct_timespec=no | |||
12581 | fi | 13129 | fi |
12582 | rm -f conftest.$ac_objext conftest.$ac_ext | 13130 | rm -f conftest.$ac_objext conftest.$ac_ext |
12583 | fi | 13131 | fi |
12584 | echo "$as_me:12584: result: $ac_cv_type_struct_timespec" >&5 | 13132 | echo "$as_me:13132: result: $ac_cv_type_struct_timespec" >&5 |
12585 | echo "${ECHO_T}$ac_cv_type_struct_timespec" >&6 | 13133 | echo "${ECHO_T}$ac_cv_type_struct_timespec" >&6 |
12586 | if test $ac_cv_type_struct_timespec = yes; then | 13134 | if test $ac_cv_type_struct_timespec = yes; then |
12587 | 13135 | ||
@@ -12601,12 +13149,12 @@ if test "x$ac_cv_have_int64_t" = "xno" -a \ | |||
12601 | exit 1; | 13149 | exit 1; |
12602 | else | 13150 | else |
12603 | if test "$cross_compiling" = yes; then | 13151 | if test "$cross_compiling" = yes; then |
12604 | { { echo "$as_me:12604: error: cannot run test program while cross compiling" >&5 | 13152 | { { echo "$as_me:13152: error: cannot run test program while cross compiling" >&5 |
12605 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} | 13153 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} |
12606 | { (exit 1); exit 1; }; } | 13154 | { (exit 1); exit 1; }; } |
12607 | else | 13155 | else |
12608 | cat >conftest.$ac_ext <<_ACEOF | 13156 | cat >conftest.$ac_ext <<_ACEOF |
12609 | #line 12609 "configure" | 13157 | #line 13157 "configure" |
12610 | #include "confdefs.h" | 13158 | #include "confdefs.h" |
12611 | 13159 | ||
12612 | #include <stdio.h> | 13160 | #include <stdio.h> |
@@ -12625,7 +13173,7 @@ main() | |||
12625 | strcpy(expected_out, "9223372036854775807"); | 13173 | strcpy(expected_out, "9223372036854775807"); |
12626 | snprintf(buf, mazsize, "%lld", num); | 13174 | snprintf(buf, mazsize, "%lld", num); |
12627 | if(strcmp(buf, expected_out) != 0) | 13175 | if(strcmp(buf, expected_out) != 0) |
12628 | exit(1); | 13176 | exit(1); |
12629 | exit(0); | 13177 | exit(0); |
12630 | } | 13178 | } |
12631 | #else | 13179 | #else |
@@ -12634,15 +13182,15 @@ main() { exit(0); } | |||
12634 | 13182 | ||
12635 | _ACEOF | 13183 | _ACEOF |
12636 | rm -f conftest$ac_exeext | 13184 | rm -f conftest$ac_exeext |
12637 | if { (eval echo "$as_me:12637: \"$ac_link\"") >&5 | 13185 | if { (eval echo "$as_me:13185: \"$ac_link\"") >&5 |
12638 | (eval $ac_link) 2>&5 | 13186 | (eval $ac_link) 2>&5 |
12639 | ac_status=$? | 13187 | ac_status=$? |
12640 | echo "$as_me:12640: \$? = $ac_status" >&5 | 13188 | echo "$as_me:13188: \$? = $ac_status" >&5 |
12641 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' | 13189 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' |
12642 | { (eval echo "$as_me:12642: \"$ac_try\"") >&5 | 13190 | { (eval echo "$as_me:13190: \"$ac_try\"") >&5 |
12643 | (eval $ac_try) 2>&5 | 13191 | (eval $ac_try) 2>&5 |
12644 | ac_status=$? | 13192 | ac_status=$? |
12645 | echo "$as_me:12645: \$? = $ac_status" >&5 | 13193 | echo "$as_me:13193: \$? = $ac_status" >&5 |
12646 | (exit $ac_status); }; }; then | 13194 | (exit $ac_status); }; }; then |
12647 | true | 13195 | true |
12648 | else | 13196 | else |
@@ -12661,14 +13209,14 @@ fi | |||
12661 | # look for field 'ut_host' in header 'utmp.h' | 13209 | # look for field 'ut_host' in header 'utmp.h' |
12662 | ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'` | 13210 | ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'` |
12663 | ossh_varname="ossh_cv_$ossh_safe""_has_"ut_host | 13211 | ossh_varname="ossh_cv_$ossh_safe""_has_"ut_host |
12664 | echo "$as_me:12664: checking for ut_host field in utmp.h" >&5 | 13212 | echo "$as_me:13212: checking for ut_host field in utmp.h" >&5 |
12665 | echo $ECHO_N "checking for ut_host field in utmp.h... $ECHO_C" >&6 | 13213 | echo $ECHO_N "checking for ut_host field in utmp.h... $ECHO_C" >&6 |
12666 | if eval "test \"\${$ossh_varname+set}\" = set"; then | 13214 | if eval "test \"\${$ossh_varname+set}\" = set"; then |
12667 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 13215 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
12668 | else | 13216 | else |
12669 | 13217 | ||
12670 | cat >conftest.$ac_ext <<_ACEOF | 13218 | cat >conftest.$ac_ext <<_ACEOF |
12671 | #line 12671 "configure" | 13219 | #line 13219 "configure" |
12672 | #include "confdefs.h" | 13220 | #include "confdefs.h" |
12673 | #include <utmp.h> | 13221 | #include <utmp.h> |
12674 | 13222 | ||
@@ -12685,7 +13233,7 @@ fi | |||
12685 | 13233 | ||
12686 | ossh_result=`eval 'echo $'"$ossh_varname"` | 13234 | ossh_result=`eval 'echo $'"$ossh_varname"` |
12687 | if test -n "`echo $ossh_varname`"; then | 13235 | if test -n "`echo $ossh_varname`"; then |
12688 | echo "$as_me:12688: result: $ossh_result" >&5 | 13236 | echo "$as_me:13236: result: $ossh_result" >&5 |
12689 | echo "${ECHO_T}$ossh_result" >&6 | 13237 | echo "${ECHO_T}$ossh_result" >&6 |
12690 | if test "x$ossh_result" = "xyes"; then | 13238 | if test "x$ossh_result" = "xyes"; then |
12691 | cat >>confdefs.h <<\EOF | 13239 | cat >>confdefs.h <<\EOF |
@@ -12694,21 +13242,21 @@ EOF | |||
12694 | 13242 | ||
12695 | fi | 13243 | fi |
12696 | else | 13244 | else |
12697 | echo "$as_me:12697: result: no" >&5 | 13245 | echo "$as_me:13245: result: no" >&5 |
12698 | echo "${ECHO_T}no" >&6 | 13246 | echo "${ECHO_T}no" >&6 |
12699 | fi | 13247 | fi |
12700 | 13248 | ||
12701 | # look for field 'ut_host' in header 'utmpx.h' | 13249 | # look for field 'ut_host' in header 'utmpx.h' |
12702 | ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'` | 13250 | ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'` |
12703 | ossh_varname="ossh_cv_$ossh_safe""_has_"ut_host | 13251 | ossh_varname="ossh_cv_$ossh_safe""_has_"ut_host |
12704 | echo "$as_me:12704: checking for ut_host field in utmpx.h" >&5 | 13252 | echo "$as_me:13252: checking for ut_host field in utmpx.h" >&5 |
12705 | echo $ECHO_N "checking for ut_host field in utmpx.h... $ECHO_C" >&6 | 13253 | echo $ECHO_N "checking for ut_host field in utmpx.h... $ECHO_C" >&6 |
12706 | if eval "test \"\${$ossh_varname+set}\" = set"; then | 13254 | if eval "test \"\${$ossh_varname+set}\" = set"; then |
12707 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 13255 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
12708 | else | 13256 | else |
12709 | 13257 | ||
12710 | cat >conftest.$ac_ext <<_ACEOF | 13258 | cat >conftest.$ac_ext <<_ACEOF |
12711 | #line 12711 "configure" | 13259 | #line 13259 "configure" |
12712 | #include "confdefs.h" | 13260 | #include "confdefs.h" |
12713 | #include <utmpx.h> | 13261 | #include <utmpx.h> |
12714 | 13262 | ||
@@ -12725,7 +13273,7 @@ fi | |||
12725 | 13273 | ||
12726 | ossh_result=`eval 'echo $'"$ossh_varname"` | 13274 | ossh_result=`eval 'echo $'"$ossh_varname"` |
12727 | if test -n "`echo $ossh_varname`"; then | 13275 | if test -n "`echo $ossh_varname`"; then |
12728 | echo "$as_me:12728: result: $ossh_result" >&5 | 13276 | echo "$as_me:13276: result: $ossh_result" >&5 |
12729 | echo "${ECHO_T}$ossh_result" >&6 | 13277 | echo "${ECHO_T}$ossh_result" >&6 |
12730 | if test "x$ossh_result" = "xyes"; then | 13278 | if test "x$ossh_result" = "xyes"; then |
12731 | cat >>confdefs.h <<\EOF | 13279 | cat >>confdefs.h <<\EOF |
@@ -12734,21 +13282,21 @@ EOF | |||
12734 | 13282 | ||
12735 | fi | 13283 | fi |
12736 | else | 13284 | else |
12737 | echo "$as_me:12737: result: no" >&5 | 13285 | echo "$as_me:13285: result: no" >&5 |
12738 | echo "${ECHO_T}no" >&6 | 13286 | echo "${ECHO_T}no" >&6 |
12739 | fi | 13287 | fi |
12740 | 13288 | ||
12741 | # look for field 'syslen' in header 'utmpx.h' | 13289 | # look for field 'syslen' in header 'utmpx.h' |
12742 | ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'` | 13290 | ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'` |
12743 | ossh_varname="ossh_cv_$ossh_safe""_has_"syslen | 13291 | ossh_varname="ossh_cv_$ossh_safe""_has_"syslen |
12744 | echo "$as_me:12744: checking for syslen field in utmpx.h" >&5 | 13292 | echo "$as_me:13292: checking for syslen field in utmpx.h" >&5 |
12745 | echo $ECHO_N "checking for syslen field in utmpx.h... $ECHO_C" >&6 | 13293 | echo $ECHO_N "checking for syslen field in utmpx.h... $ECHO_C" >&6 |
12746 | if eval "test \"\${$ossh_varname+set}\" = set"; then | 13294 | if eval "test \"\${$ossh_varname+set}\" = set"; then |
12747 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 13295 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
12748 | else | 13296 | else |
12749 | 13297 | ||
12750 | cat >conftest.$ac_ext <<_ACEOF | 13298 | cat >conftest.$ac_ext <<_ACEOF |
12751 | #line 12751 "configure" | 13299 | #line 13299 "configure" |
12752 | #include "confdefs.h" | 13300 | #include "confdefs.h" |
12753 | #include <utmpx.h> | 13301 | #include <utmpx.h> |
12754 | 13302 | ||
@@ -12765,7 +13313,7 @@ fi | |||
12765 | 13313 | ||
12766 | ossh_result=`eval 'echo $'"$ossh_varname"` | 13314 | ossh_result=`eval 'echo $'"$ossh_varname"` |
12767 | if test -n "`echo $ossh_varname`"; then | 13315 | if test -n "`echo $ossh_varname`"; then |
12768 | echo "$as_me:12768: result: $ossh_result" >&5 | 13316 | echo "$as_me:13316: result: $ossh_result" >&5 |
12769 | echo "${ECHO_T}$ossh_result" >&6 | 13317 | echo "${ECHO_T}$ossh_result" >&6 |
12770 | if test "x$ossh_result" = "xyes"; then | 13318 | if test "x$ossh_result" = "xyes"; then |
12771 | cat >>confdefs.h <<\EOF | 13319 | cat >>confdefs.h <<\EOF |
@@ -12774,21 +13322,21 @@ EOF | |||
12774 | 13322 | ||
12775 | fi | 13323 | fi |
12776 | else | 13324 | else |
12777 | echo "$as_me:12777: result: no" >&5 | 13325 | echo "$as_me:13325: result: no" >&5 |
12778 | echo "${ECHO_T}no" >&6 | 13326 | echo "${ECHO_T}no" >&6 |
12779 | fi | 13327 | fi |
12780 | 13328 | ||
12781 | # look for field 'ut_pid' in header 'utmp.h' | 13329 | # look for field 'ut_pid' in header 'utmp.h' |
12782 | ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'` | 13330 | ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'` |
12783 | ossh_varname="ossh_cv_$ossh_safe""_has_"ut_pid | 13331 | ossh_varname="ossh_cv_$ossh_safe""_has_"ut_pid |
12784 | echo "$as_me:12784: checking for ut_pid field in utmp.h" >&5 | 13332 | echo "$as_me:13332: checking for ut_pid field in utmp.h" >&5 |
12785 | echo $ECHO_N "checking for ut_pid field in utmp.h... $ECHO_C" >&6 | 13333 | echo $ECHO_N "checking for ut_pid field in utmp.h... $ECHO_C" >&6 |
12786 | if eval "test \"\${$ossh_varname+set}\" = set"; then | 13334 | if eval "test \"\${$ossh_varname+set}\" = set"; then |
12787 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 13335 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
12788 | else | 13336 | else |
12789 | 13337 | ||
12790 | cat >conftest.$ac_ext <<_ACEOF | 13338 | cat >conftest.$ac_ext <<_ACEOF |
12791 | #line 12791 "configure" | 13339 | #line 13339 "configure" |
12792 | #include "confdefs.h" | 13340 | #include "confdefs.h" |
12793 | #include <utmp.h> | 13341 | #include <utmp.h> |
12794 | 13342 | ||
@@ -12805,7 +13353,7 @@ fi | |||
12805 | 13353 | ||
12806 | ossh_result=`eval 'echo $'"$ossh_varname"` | 13354 | ossh_result=`eval 'echo $'"$ossh_varname"` |
12807 | if test -n "`echo $ossh_varname`"; then | 13355 | if test -n "`echo $ossh_varname`"; then |
12808 | echo "$as_me:12808: result: $ossh_result" >&5 | 13356 | echo "$as_me:13356: result: $ossh_result" >&5 |
12809 | echo "${ECHO_T}$ossh_result" >&6 | 13357 | echo "${ECHO_T}$ossh_result" >&6 |
12810 | if test "x$ossh_result" = "xyes"; then | 13358 | if test "x$ossh_result" = "xyes"; then |
12811 | cat >>confdefs.h <<\EOF | 13359 | cat >>confdefs.h <<\EOF |
@@ -12814,21 +13362,21 @@ EOF | |||
12814 | 13362 | ||
12815 | fi | 13363 | fi |
12816 | else | 13364 | else |
12817 | echo "$as_me:12817: result: no" >&5 | 13365 | echo "$as_me:13365: result: no" >&5 |
12818 | echo "${ECHO_T}no" >&6 | 13366 | echo "${ECHO_T}no" >&6 |
12819 | fi | 13367 | fi |
12820 | 13368 | ||
12821 | # look for field 'ut_type' in header 'utmp.h' | 13369 | # look for field 'ut_type' in header 'utmp.h' |
12822 | ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'` | 13370 | ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'` |
12823 | ossh_varname="ossh_cv_$ossh_safe""_has_"ut_type | 13371 | ossh_varname="ossh_cv_$ossh_safe""_has_"ut_type |
12824 | echo "$as_me:12824: checking for ut_type field in utmp.h" >&5 | 13372 | echo "$as_me:13372: checking for ut_type field in utmp.h" >&5 |
12825 | echo $ECHO_N "checking for ut_type field in utmp.h... $ECHO_C" >&6 | 13373 | echo $ECHO_N "checking for ut_type field in utmp.h... $ECHO_C" >&6 |
12826 | if eval "test \"\${$ossh_varname+set}\" = set"; then | 13374 | if eval "test \"\${$ossh_varname+set}\" = set"; then |
12827 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 13375 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
12828 | else | 13376 | else |
12829 | 13377 | ||
12830 | cat >conftest.$ac_ext <<_ACEOF | 13378 | cat >conftest.$ac_ext <<_ACEOF |
12831 | #line 12831 "configure" | 13379 | #line 13379 "configure" |
12832 | #include "confdefs.h" | 13380 | #include "confdefs.h" |
12833 | #include <utmp.h> | 13381 | #include <utmp.h> |
12834 | 13382 | ||
@@ -12845,7 +13393,7 @@ fi | |||
12845 | 13393 | ||
12846 | ossh_result=`eval 'echo $'"$ossh_varname"` | 13394 | ossh_result=`eval 'echo $'"$ossh_varname"` |
12847 | if test -n "`echo $ossh_varname`"; then | 13395 | if test -n "`echo $ossh_varname`"; then |
12848 | echo "$as_me:12848: result: $ossh_result" >&5 | 13396 | echo "$as_me:13396: result: $ossh_result" >&5 |
12849 | echo "${ECHO_T}$ossh_result" >&6 | 13397 | echo "${ECHO_T}$ossh_result" >&6 |
12850 | if test "x$ossh_result" = "xyes"; then | 13398 | if test "x$ossh_result" = "xyes"; then |
12851 | cat >>confdefs.h <<\EOF | 13399 | cat >>confdefs.h <<\EOF |
@@ -12854,21 +13402,21 @@ EOF | |||
12854 | 13402 | ||
12855 | fi | 13403 | fi |
12856 | else | 13404 | else |
12857 | echo "$as_me:12857: result: no" >&5 | 13405 | echo "$as_me:13405: result: no" >&5 |
12858 | echo "${ECHO_T}no" >&6 | 13406 | echo "${ECHO_T}no" >&6 |
12859 | fi | 13407 | fi |
12860 | 13408 | ||
12861 | # look for field 'ut_type' in header 'utmpx.h' | 13409 | # look for field 'ut_type' in header 'utmpx.h' |
12862 | ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'` | 13410 | ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'` |
12863 | ossh_varname="ossh_cv_$ossh_safe""_has_"ut_type | 13411 | ossh_varname="ossh_cv_$ossh_safe""_has_"ut_type |
12864 | echo "$as_me:12864: checking for ut_type field in utmpx.h" >&5 | 13412 | echo "$as_me:13412: checking for ut_type field in utmpx.h" >&5 |
12865 | echo $ECHO_N "checking for ut_type field in utmpx.h... $ECHO_C" >&6 | 13413 | echo $ECHO_N "checking for ut_type field in utmpx.h... $ECHO_C" >&6 |
12866 | if eval "test \"\${$ossh_varname+set}\" = set"; then | 13414 | if eval "test \"\${$ossh_varname+set}\" = set"; then |
12867 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 13415 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
12868 | else | 13416 | else |
12869 | 13417 | ||
12870 | cat >conftest.$ac_ext <<_ACEOF | 13418 | cat >conftest.$ac_ext <<_ACEOF |
12871 | #line 12871 "configure" | 13419 | #line 13419 "configure" |
12872 | #include "confdefs.h" | 13420 | #include "confdefs.h" |
12873 | #include <utmpx.h> | 13421 | #include <utmpx.h> |
12874 | 13422 | ||
@@ -12885,7 +13433,7 @@ fi | |||
12885 | 13433 | ||
12886 | ossh_result=`eval 'echo $'"$ossh_varname"` | 13434 | ossh_result=`eval 'echo $'"$ossh_varname"` |
12887 | if test -n "`echo $ossh_varname`"; then | 13435 | if test -n "`echo $ossh_varname`"; then |
12888 | echo "$as_me:12888: result: $ossh_result" >&5 | 13436 | echo "$as_me:13436: result: $ossh_result" >&5 |
12889 | echo "${ECHO_T}$ossh_result" >&6 | 13437 | echo "${ECHO_T}$ossh_result" >&6 |
12890 | if test "x$ossh_result" = "xyes"; then | 13438 | if test "x$ossh_result" = "xyes"; then |
12891 | cat >>confdefs.h <<\EOF | 13439 | cat >>confdefs.h <<\EOF |
@@ -12894,21 +13442,21 @@ EOF | |||
12894 | 13442 | ||
12895 | fi | 13443 | fi |
12896 | else | 13444 | else |
12897 | echo "$as_me:12897: result: no" >&5 | 13445 | echo "$as_me:13445: result: no" >&5 |
12898 | echo "${ECHO_T}no" >&6 | 13446 | echo "${ECHO_T}no" >&6 |
12899 | fi | 13447 | fi |
12900 | 13448 | ||
12901 | # look for field 'ut_tv' in header 'utmp.h' | 13449 | # look for field 'ut_tv' in header 'utmp.h' |
12902 | ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'` | 13450 | ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'` |
12903 | ossh_varname="ossh_cv_$ossh_safe""_has_"ut_tv | 13451 | ossh_varname="ossh_cv_$ossh_safe""_has_"ut_tv |
12904 | echo "$as_me:12904: checking for ut_tv field in utmp.h" >&5 | 13452 | echo "$as_me:13452: checking for ut_tv field in utmp.h" >&5 |
12905 | echo $ECHO_N "checking for ut_tv field in utmp.h... $ECHO_C" >&6 | 13453 | echo $ECHO_N "checking for ut_tv field in utmp.h... $ECHO_C" >&6 |
12906 | if eval "test \"\${$ossh_varname+set}\" = set"; then | 13454 | if eval "test \"\${$ossh_varname+set}\" = set"; then |
12907 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 13455 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
12908 | else | 13456 | else |
12909 | 13457 | ||
12910 | cat >conftest.$ac_ext <<_ACEOF | 13458 | cat >conftest.$ac_ext <<_ACEOF |
12911 | #line 12911 "configure" | 13459 | #line 13459 "configure" |
12912 | #include "confdefs.h" | 13460 | #include "confdefs.h" |
12913 | #include <utmp.h> | 13461 | #include <utmp.h> |
12914 | 13462 | ||
@@ -12925,7 +13473,7 @@ fi | |||
12925 | 13473 | ||
12926 | ossh_result=`eval 'echo $'"$ossh_varname"` | 13474 | ossh_result=`eval 'echo $'"$ossh_varname"` |
12927 | if test -n "`echo $ossh_varname`"; then | 13475 | if test -n "`echo $ossh_varname`"; then |
12928 | echo "$as_me:12928: result: $ossh_result" >&5 | 13476 | echo "$as_me:13476: result: $ossh_result" >&5 |
12929 | echo "${ECHO_T}$ossh_result" >&6 | 13477 | echo "${ECHO_T}$ossh_result" >&6 |
12930 | if test "x$ossh_result" = "xyes"; then | 13478 | if test "x$ossh_result" = "xyes"; then |
12931 | cat >>confdefs.h <<\EOF | 13479 | cat >>confdefs.h <<\EOF |
@@ -12934,21 +13482,21 @@ EOF | |||
12934 | 13482 | ||
12935 | fi | 13483 | fi |
12936 | else | 13484 | else |
12937 | echo "$as_me:12937: result: no" >&5 | 13485 | echo "$as_me:13485: result: no" >&5 |
12938 | echo "${ECHO_T}no" >&6 | 13486 | echo "${ECHO_T}no" >&6 |
12939 | fi | 13487 | fi |
12940 | 13488 | ||
12941 | # look for field 'ut_id' in header 'utmp.h' | 13489 | # look for field 'ut_id' in header 'utmp.h' |
12942 | ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'` | 13490 | ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'` |
12943 | ossh_varname="ossh_cv_$ossh_safe""_has_"ut_id | 13491 | ossh_varname="ossh_cv_$ossh_safe""_has_"ut_id |
12944 | echo "$as_me:12944: checking for ut_id field in utmp.h" >&5 | 13492 | echo "$as_me:13492: checking for ut_id field in utmp.h" >&5 |
12945 | echo $ECHO_N "checking for ut_id field in utmp.h... $ECHO_C" >&6 | 13493 | echo $ECHO_N "checking for ut_id field in utmp.h... $ECHO_C" >&6 |
12946 | if eval "test \"\${$ossh_varname+set}\" = set"; then | 13494 | if eval "test \"\${$ossh_varname+set}\" = set"; then |
12947 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 13495 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
12948 | else | 13496 | else |
12949 | 13497 | ||
12950 | cat >conftest.$ac_ext <<_ACEOF | 13498 | cat >conftest.$ac_ext <<_ACEOF |
12951 | #line 12951 "configure" | 13499 | #line 13499 "configure" |
12952 | #include "confdefs.h" | 13500 | #include "confdefs.h" |
12953 | #include <utmp.h> | 13501 | #include <utmp.h> |
12954 | 13502 | ||
@@ -12965,7 +13513,7 @@ fi | |||
12965 | 13513 | ||
12966 | ossh_result=`eval 'echo $'"$ossh_varname"` | 13514 | ossh_result=`eval 'echo $'"$ossh_varname"` |
12967 | if test -n "`echo $ossh_varname`"; then | 13515 | if test -n "`echo $ossh_varname`"; then |
12968 | echo "$as_me:12968: result: $ossh_result" >&5 | 13516 | echo "$as_me:13516: result: $ossh_result" >&5 |
12969 | echo "${ECHO_T}$ossh_result" >&6 | 13517 | echo "${ECHO_T}$ossh_result" >&6 |
12970 | if test "x$ossh_result" = "xyes"; then | 13518 | if test "x$ossh_result" = "xyes"; then |
12971 | cat >>confdefs.h <<\EOF | 13519 | cat >>confdefs.h <<\EOF |
@@ -12974,21 +13522,21 @@ EOF | |||
12974 | 13522 | ||
12975 | fi | 13523 | fi |
12976 | else | 13524 | else |
12977 | echo "$as_me:12977: result: no" >&5 | 13525 | echo "$as_me:13525: result: no" >&5 |
12978 | echo "${ECHO_T}no" >&6 | 13526 | echo "${ECHO_T}no" >&6 |
12979 | fi | 13527 | fi |
12980 | 13528 | ||
12981 | # look for field 'ut_id' in header 'utmpx.h' | 13529 | # look for field 'ut_id' in header 'utmpx.h' |
12982 | ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'` | 13530 | ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'` |
12983 | ossh_varname="ossh_cv_$ossh_safe""_has_"ut_id | 13531 | ossh_varname="ossh_cv_$ossh_safe""_has_"ut_id |
12984 | echo "$as_me:12984: checking for ut_id field in utmpx.h" >&5 | 13532 | echo "$as_me:13532: checking for ut_id field in utmpx.h" >&5 |
12985 | echo $ECHO_N "checking for ut_id field in utmpx.h... $ECHO_C" >&6 | 13533 | echo $ECHO_N "checking for ut_id field in utmpx.h... $ECHO_C" >&6 |
12986 | if eval "test \"\${$ossh_varname+set}\" = set"; then | 13534 | if eval "test \"\${$ossh_varname+set}\" = set"; then |
12987 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 13535 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
12988 | else | 13536 | else |
12989 | 13537 | ||
12990 | cat >conftest.$ac_ext <<_ACEOF | 13538 | cat >conftest.$ac_ext <<_ACEOF |
12991 | #line 12991 "configure" | 13539 | #line 13539 "configure" |
12992 | #include "confdefs.h" | 13540 | #include "confdefs.h" |
12993 | #include <utmpx.h> | 13541 | #include <utmpx.h> |
12994 | 13542 | ||
@@ -13005,7 +13553,7 @@ fi | |||
13005 | 13553 | ||
13006 | ossh_result=`eval 'echo $'"$ossh_varname"` | 13554 | ossh_result=`eval 'echo $'"$ossh_varname"` |
13007 | if test -n "`echo $ossh_varname`"; then | 13555 | if test -n "`echo $ossh_varname`"; then |
13008 | echo "$as_me:13008: result: $ossh_result" >&5 | 13556 | echo "$as_me:13556: result: $ossh_result" >&5 |
13009 | echo "${ECHO_T}$ossh_result" >&6 | 13557 | echo "${ECHO_T}$ossh_result" >&6 |
13010 | if test "x$ossh_result" = "xyes"; then | 13558 | if test "x$ossh_result" = "xyes"; then |
13011 | cat >>confdefs.h <<\EOF | 13559 | cat >>confdefs.h <<\EOF |
@@ -13014,21 +13562,21 @@ EOF | |||
13014 | 13562 | ||
13015 | fi | 13563 | fi |
13016 | else | 13564 | else |
13017 | echo "$as_me:13017: result: no" >&5 | 13565 | echo "$as_me:13565: result: no" >&5 |
13018 | echo "${ECHO_T}no" >&6 | 13566 | echo "${ECHO_T}no" >&6 |
13019 | fi | 13567 | fi |
13020 | 13568 | ||
13021 | # look for field 'ut_addr' in header 'utmp.h' | 13569 | # look for field 'ut_addr' in header 'utmp.h' |
13022 | ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'` | 13570 | ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'` |
13023 | ossh_varname="ossh_cv_$ossh_safe""_has_"ut_addr | 13571 | ossh_varname="ossh_cv_$ossh_safe""_has_"ut_addr |
13024 | echo "$as_me:13024: checking for ut_addr field in utmp.h" >&5 | 13572 | echo "$as_me:13572: checking for ut_addr field in utmp.h" >&5 |
13025 | echo $ECHO_N "checking for ut_addr field in utmp.h... $ECHO_C" >&6 | 13573 | echo $ECHO_N "checking for ut_addr field in utmp.h... $ECHO_C" >&6 |
13026 | if eval "test \"\${$ossh_varname+set}\" = set"; then | 13574 | if eval "test \"\${$ossh_varname+set}\" = set"; then |
13027 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 13575 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
13028 | else | 13576 | else |
13029 | 13577 | ||
13030 | cat >conftest.$ac_ext <<_ACEOF | 13578 | cat >conftest.$ac_ext <<_ACEOF |
13031 | #line 13031 "configure" | 13579 | #line 13579 "configure" |
13032 | #include "confdefs.h" | 13580 | #include "confdefs.h" |
13033 | #include <utmp.h> | 13581 | #include <utmp.h> |
13034 | 13582 | ||
@@ -13045,7 +13593,7 @@ fi | |||
13045 | 13593 | ||
13046 | ossh_result=`eval 'echo $'"$ossh_varname"` | 13594 | ossh_result=`eval 'echo $'"$ossh_varname"` |
13047 | if test -n "`echo $ossh_varname`"; then | 13595 | if test -n "`echo $ossh_varname`"; then |
13048 | echo "$as_me:13048: result: $ossh_result" >&5 | 13596 | echo "$as_me:13596: result: $ossh_result" >&5 |
13049 | echo "${ECHO_T}$ossh_result" >&6 | 13597 | echo "${ECHO_T}$ossh_result" >&6 |
13050 | if test "x$ossh_result" = "xyes"; then | 13598 | if test "x$ossh_result" = "xyes"; then |
13051 | cat >>confdefs.h <<\EOF | 13599 | cat >>confdefs.h <<\EOF |
@@ -13054,21 +13602,21 @@ EOF | |||
13054 | 13602 | ||
13055 | fi | 13603 | fi |
13056 | else | 13604 | else |
13057 | echo "$as_me:13057: result: no" >&5 | 13605 | echo "$as_me:13605: result: no" >&5 |
13058 | echo "${ECHO_T}no" >&6 | 13606 | echo "${ECHO_T}no" >&6 |
13059 | fi | 13607 | fi |
13060 | 13608 | ||
13061 | # look for field 'ut_addr' in header 'utmpx.h' | 13609 | # look for field 'ut_addr' in header 'utmpx.h' |
13062 | ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'` | 13610 | ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'` |
13063 | ossh_varname="ossh_cv_$ossh_safe""_has_"ut_addr | 13611 | ossh_varname="ossh_cv_$ossh_safe""_has_"ut_addr |
13064 | echo "$as_me:13064: checking for ut_addr field in utmpx.h" >&5 | 13612 | echo "$as_me:13612: checking for ut_addr field in utmpx.h" >&5 |
13065 | echo $ECHO_N "checking for ut_addr field in utmpx.h... $ECHO_C" >&6 | 13613 | echo $ECHO_N "checking for ut_addr field in utmpx.h... $ECHO_C" >&6 |
13066 | if eval "test \"\${$ossh_varname+set}\" = set"; then | 13614 | if eval "test \"\${$ossh_varname+set}\" = set"; then |
13067 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 13615 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
13068 | else | 13616 | else |
13069 | 13617 | ||
13070 | cat >conftest.$ac_ext <<_ACEOF | 13618 | cat >conftest.$ac_ext <<_ACEOF |
13071 | #line 13071 "configure" | 13619 | #line 13619 "configure" |
13072 | #include "confdefs.h" | 13620 | #include "confdefs.h" |
13073 | #include <utmpx.h> | 13621 | #include <utmpx.h> |
13074 | 13622 | ||
@@ -13085,7 +13633,7 @@ fi | |||
13085 | 13633 | ||
13086 | ossh_result=`eval 'echo $'"$ossh_varname"` | 13634 | ossh_result=`eval 'echo $'"$ossh_varname"` |
13087 | if test -n "`echo $ossh_varname`"; then | 13635 | if test -n "`echo $ossh_varname`"; then |
13088 | echo "$as_me:13088: result: $ossh_result" >&5 | 13636 | echo "$as_me:13636: result: $ossh_result" >&5 |
13089 | echo "${ECHO_T}$ossh_result" >&6 | 13637 | echo "${ECHO_T}$ossh_result" >&6 |
13090 | if test "x$ossh_result" = "xyes"; then | 13638 | if test "x$ossh_result" = "xyes"; then |
13091 | cat >>confdefs.h <<\EOF | 13639 | cat >>confdefs.h <<\EOF |
@@ -13094,21 +13642,21 @@ EOF | |||
13094 | 13642 | ||
13095 | fi | 13643 | fi |
13096 | else | 13644 | else |
13097 | echo "$as_me:13097: result: no" >&5 | 13645 | echo "$as_me:13645: result: no" >&5 |
13098 | echo "${ECHO_T}no" >&6 | 13646 | echo "${ECHO_T}no" >&6 |
13099 | fi | 13647 | fi |
13100 | 13648 | ||
13101 | # look for field 'ut_addr_v6' in header 'utmp.h' | 13649 | # look for field 'ut_addr_v6' in header 'utmp.h' |
13102 | ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'` | 13650 | ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'` |
13103 | ossh_varname="ossh_cv_$ossh_safe""_has_"ut_addr_v6 | 13651 | ossh_varname="ossh_cv_$ossh_safe""_has_"ut_addr_v6 |
13104 | echo "$as_me:13104: checking for ut_addr_v6 field in utmp.h" >&5 | 13652 | echo "$as_me:13652: checking for ut_addr_v6 field in utmp.h" >&5 |
13105 | echo $ECHO_N "checking for ut_addr_v6 field in utmp.h... $ECHO_C" >&6 | 13653 | echo $ECHO_N "checking for ut_addr_v6 field in utmp.h... $ECHO_C" >&6 |
13106 | if eval "test \"\${$ossh_varname+set}\" = set"; then | 13654 | if eval "test \"\${$ossh_varname+set}\" = set"; then |
13107 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 13655 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
13108 | else | 13656 | else |
13109 | 13657 | ||
13110 | cat >conftest.$ac_ext <<_ACEOF | 13658 | cat >conftest.$ac_ext <<_ACEOF |
13111 | #line 13111 "configure" | 13659 | #line 13659 "configure" |
13112 | #include "confdefs.h" | 13660 | #include "confdefs.h" |
13113 | #include <utmp.h> | 13661 | #include <utmp.h> |
13114 | 13662 | ||
@@ -13125,7 +13673,7 @@ fi | |||
13125 | 13673 | ||
13126 | ossh_result=`eval 'echo $'"$ossh_varname"` | 13674 | ossh_result=`eval 'echo $'"$ossh_varname"` |
13127 | if test -n "`echo $ossh_varname`"; then | 13675 | if test -n "`echo $ossh_varname`"; then |
13128 | echo "$as_me:13128: result: $ossh_result" >&5 | 13676 | echo "$as_me:13676: result: $ossh_result" >&5 |
13129 | echo "${ECHO_T}$ossh_result" >&6 | 13677 | echo "${ECHO_T}$ossh_result" >&6 |
13130 | if test "x$ossh_result" = "xyes"; then | 13678 | if test "x$ossh_result" = "xyes"; then |
13131 | cat >>confdefs.h <<\EOF | 13679 | cat >>confdefs.h <<\EOF |
@@ -13134,21 +13682,21 @@ EOF | |||
13134 | 13682 | ||
13135 | fi | 13683 | fi |
13136 | else | 13684 | else |
13137 | echo "$as_me:13137: result: no" >&5 | 13685 | echo "$as_me:13685: result: no" >&5 |
13138 | echo "${ECHO_T}no" >&6 | 13686 | echo "${ECHO_T}no" >&6 |
13139 | fi | 13687 | fi |
13140 | 13688 | ||
13141 | # look for field 'ut_addr_v6' in header 'utmpx.h' | 13689 | # look for field 'ut_addr_v6' in header 'utmpx.h' |
13142 | ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'` | 13690 | ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'` |
13143 | ossh_varname="ossh_cv_$ossh_safe""_has_"ut_addr_v6 | 13691 | ossh_varname="ossh_cv_$ossh_safe""_has_"ut_addr_v6 |
13144 | echo "$as_me:13144: checking for ut_addr_v6 field in utmpx.h" >&5 | 13692 | echo "$as_me:13692: checking for ut_addr_v6 field in utmpx.h" >&5 |
13145 | echo $ECHO_N "checking for ut_addr_v6 field in utmpx.h... $ECHO_C" >&6 | 13693 | echo $ECHO_N "checking for ut_addr_v6 field in utmpx.h... $ECHO_C" >&6 |
13146 | if eval "test \"\${$ossh_varname+set}\" = set"; then | 13694 | if eval "test \"\${$ossh_varname+set}\" = set"; then |
13147 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 13695 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
13148 | else | 13696 | else |
13149 | 13697 | ||
13150 | cat >conftest.$ac_ext <<_ACEOF | 13698 | cat >conftest.$ac_ext <<_ACEOF |
13151 | #line 13151 "configure" | 13699 | #line 13699 "configure" |
13152 | #include "confdefs.h" | 13700 | #include "confdefs.h" |
13153 | #include <utmpx.h> | 13701 | #include <utmpx.h> |
13154 | 13702 | ||
@@ -13165,7 +13713,7 @@ fi | |||
13165 | 13713 | ||
13166 | ossh_result=`eval 'echo $'"$ossh_varname"` | 13714 | ossh_result=`eval 'echo $'"$ossh_varname"` |
13167 | if test -n "`echo $ossh_varname`"; then | 13715 | if test -n "`echo $ossh_varname`"; then |
13168 | echo "$as_me:13168: result: $ossh_result" >&5 | 13716 | echo "$as_me:13716: result: $ossh_result" >&5 |
13169 | echo "${ECHO_T}$ossh_result" >&6 | 13717 | echo "${ECHO_T}$ossh_result" >&6 |
13170 | if test "x$ossh_result" = "xyes"; then | 13718 | if test "x$ossh_result" = "xyes"; then |
13171 | cat >>confdefs.h <<\EOF | 13719 | cat >>confdefs.h <<\EOF |
@@ -13174,21 +13722,21 @@ EOF | |||
13174 | 13722 | ||
13175 | fi | 13723 | fi |
13176 | else | 13724 | else |
13177 | echo "$as_me:13177: result: no" >&5 | 13725 | echo "$as_me:13725: result: no" >&5 |
13178 | echo "${ECHO_T}no" >&6 | 13726 | echo "${ECHO_T}no" >&6 |
13179 | fi | 13727 | fi |
13180 | 13728 | ||
13181 | # look for field 'ut_exit' in header 'utmp.h' | 13729 | # look for field 'ut_exit' in header 'utmp.h' |
13182 | ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'` | 13730 | ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'` |
13183 | ossh_varname="ossh_cv_$ossh_safe""_has_"ut_exit | 13731 | ossh_varname="ossh_cv_$ossh_safe""_has_"ut_exit |
13184 | echo "$as_me:13184: checking for ut_exit field in utmp.h" >&5 | 13732 | echo "$as_me:13732: checking for ut_exit field in utmp.h" >&5 |
13185 | echo $ECHO_N "checking for ut_exit field in utmp.h... $ECHO_C" >&6 | 13733 | echo $ECHO_N "checking for ut_exit field in utmp.h... $ECHO_C" >&6 |
13186 | if eval "test \"\${$ossh_varname+set}\" = set"; then | 13734 | if eval "test \"\${$ossh_varname+set}\" = set"; then |
13187 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 13735 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
13188 | else | 13736 | else |
13189 | 13737 | ||
13190 | cat >conftest.$ac_ext <<_ACEOF | 13738 | cat >conftest.$ac_ext <<_ACEOF |
13191 | #line 13191 "configure" | 13739 | #line 13739 "configure" |
13192 | #include "confdefs.h" | 13740 | #include "confdefs.h" |
13193 | #include <utmp.h> | 13741 | #include <utmp.h> |
13194 | 13742 | ||
@@ -13205,7 +13753,7 @@ fi | |||
13205 | 13753 | ||
13206 | ossh_result=`eval 'echo $'"$ossh_varname"` | 13754 | ossh_result=`eval 'echo $'"$ossh_varname"` |
13207 | if test -n "`echo $ossh_varname`"; then | 13755 | if test -n "`echo $ossh_varname`"; then |
13208 | echo "$as_me:13208: result: $ossh_result" >&5 | 13756 | echo "$as_me:13756: result: $ossh_result" >&5 |
13209 | echo "${ECHO_T}$ossh_result" >&6 | 13757 | echo "${ECHO_T}$ossh_result" >&6 |
13210 | if test "x$ossh_result" = "xyes"; then | 13758 | if test "x$ossh_result" = "xyes"; then |
13211 | cat >>confdefs.h <<\EOF | 13759 | cat >>confdefs.h <<\EOF |
@@ -13214,21 +13762,21 @@ EOF | |||
13214 | 13762 | ||
13215 | fi | 13763 | fi |
13216 | else | 13764 | else |
13217 | echo "$as_me:13217: result: no" >&5 | 13765 | echo "$as_me:13765: result: no" >&5 |
13218 | echo "${ECHO_T}no" >&6 | 13766 | echo "${ECHO_T}no" >&6 |
13219 | fi | 13767 | fi |
13220 | 13768 | ||
13221 | # look for field 'ut_time' in header 'utmp.h' | 13769 | # look for field 'ut_time' in header 'utmp.h' |
13222 | ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'` | 13770 | ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'` |
13223 | ossh_varname="ossh_cv_$ossh_safe""_has_"ut_time | 13771 | ossh_varname="ossh_cv_$ossh_safe""_has_"ut_time |
13224 | echo "$as_me:13224: checking for ut_time field in utmp.h" >&5 | 13772 | echo "$as_me:13772: checking for ut_time field in utmp.h" >&5 |
13225 | echo $ECHO_N "checking for ut_time field in utmp.h... $ECHO_C" >&6 | 13773 | echo $ECHO_N "checking for ut_time field in utmp.h... $ECHO_C" >&6 |
13226 | if eval "test \"\${$ossh_varname+set}\" = set"; then | 13774 | if eval "test \"\${$ossh_varname+set}\" = set"; then |
13227 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 13775 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
13228 | else | 13776 | else |
13229 | 13777 | ||
13230 | cat >conftest.$ac_ext <<_ACEOF | 13778 | cat >conftest.$ac_ext <<_ACEOF |
13231 | #line 13231 "configure" | 13779 | #line 13779 "configure" |
13232 | #include "confdefs.h" | 13780 | #include "confdefs.h" |
13233 | #include <utmp.h> | 13781 | #include <utmp.h> |
13234 | 13782 | ||
@@ -13245,7 +13793,7 @@ fi | |||
13245 | 13793 | ||
13246 | ossh_result=`eval 'echo $'"$ossh_varname"` | 13794 | ossh_result=`eval 'echo $'"$ossh_varname"` |
13247 | if test -n "`echo $ossh_varname`"; then | 13795 | if test -n "`echo $ossh_varname`"; then |
13248 | echo "$as_me:13248: result: $ossh_result" >&5 | 13796 | echo "$as_me:13796: result: $ossh_result" >&5 |
13249 | echo "${ECHO_T}$ossh_result" >&6 | 13797 | echo "${ECHO_T}$ossh_result" >&6 |
13250 | if test "x$ossh_result" = "xyes"; then | 13798 | if test "x$ossh_result" = "xyes"; then |
13251 | cat >>confdefs.h <<\EOF | 13799 | cat >>confdefs.h <<\EOF |
@@ -13254,21 +13802,21 @@ EOF | |||
13254 | 13802 | ||
13255 | fi | 13803 | fi |
13256 | else | 13804 | else |
13257 | echo "$as_me:13257: result: no" >&5 | 13805 | echo "$as_me:13805: result: no" >&5 |
13258 | echo "${ECHO_T}no" >&6 | 13806 | echo "${ECHO_T}no" >&6 |
13259 | fi | 13807 | fi |
13260 | 13808 | ||
13261 | # look for field 'ut_time' in header 'utmpx.h' | 13809 | # look for field 'ut_time' in header 'utmpx.h' |
13262 | ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'` | 13810 | ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'` |
13263 | ossh_varname="ossh_cv_$ossh_safe""_has_"ut_time | 13811 | ossh_varname="ossh_cv_$ossh_safe""_has_"ut_time |
13264 | echo "$as_me:13264: checking for ut_time field in utmpx.h" >&5 | 13812 | echo "$as_me:13812: checking for ut_time field in utmpx.h" >&5 |
13265 | echo $ECHO_N "checking for ut_time field in utmpx.h... $ECHO_C" >&6 | 13813 | echo $ECHO_N "checking for ut_time field in utmpx.h... $ECHO_C" >&6 |
13266 | if eval "test \"\${$ossh_varname+set}\" = set"; then | 13814 | if eval "test \"\${$ossh_varname+set}\" = set"; then |
13267 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 13815 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
13268 | else | 13816 | else |
13269 | 13817 | ||
13270 | cat >conftest.$ac_ext <<_ACEOF | 13818 | cat >conftest.$ac_ext <<_ACEOF |
13271 | #line 13271 "configure" | 13819 | #line 13819 "configure" |
13272 | #include "confdefs.h" | 13820 | #include "confdefs.h" |
13273 | #include <utmpx.h> | 13821 | #include <utmpx.h> |
13274 | 13822 | ||
@@ -13285,7 +13833,7 @@ fi | |||
13285 | 13833 | ||
13286 | ossh_result=`eval 'echo $'"$ossh_varname"` | 13834 | ossh_result=`eval 'echo $'"$ossh_varname"` |
13287 | if test -n "`echo $ossh_varname`"; then | 13835 | if test -n "`echo $ossh_varname`"; then |
13288 | echo "$as_me:13288: result: $ossh_result" >&5 | 13836 | echo "$as_me:13836: result: $ossh_result" >&5 |
13289 | echo "${ECHO_T}$ossh_result" >&6 | 13837 | echo "${ECHO_T}$ossh_result" >&6 |
13290 | if test "x$ossh_result" = "xyes"; then | 13838 | if test "x$ossh_result" = "xyes"; then |
13291 | cat >>confdefs.h <<\EOF | 13839 | cat >>confdefs.h <<\EOF |
@@ -13294,21 +13842,21 @@ EOF | |||
13294 | 13842 | ||
13295 | fi | 13843 | fi |
13296 | else | 13844 | else |
13297 | echo "$as_me:13297: result: no" >&5 | 13845 | echo "$as_me:13845: result: no" >&5 |
13298 | echo "${ECHO_T}no" >&6 | 13846 | echo "${ECHO_T}no" >&6 |
13299 | fi | 13847 | fi |
13300 | 13848 | ||
13301 | # look for field 'ut_tv' in header 'utmpx.h' | 13849 | # look for field 'ut_tv' in header 'utmpx.h' |
13302 | ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'` | 13850 | ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'` |
13303 | ossh_varname="ossh_cv_$ossh_safe""_has_"ut_tv | 13851 | ossh_varname="ossh_cv_$ossh_safe""_has_"ut_tv |
13304 | echo "$as_me:13304: checking for ut_tv field in utmpx.h" >&5 | 13852 | echo "$as_me:13852: checking for ut_tv field in utmpx.h" >&5 |
13305 | echo $ECHO_N "checking for ut_tv field in utmpx.h... $ECHO_C" >&6 | 13853 | echo $ECHO_N "checking for ut_tv field in utmpx.h... $ECHO_C" >&6 |
13306 | if eval "test \"\${$ossh_varname+set}\" = set"; then | 13854 | if eval "test \"\${$ossh_varname+set}\" = set"; then |
13307 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 13855 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
13308 | else | 13856 | else |
13309 | 13857 | ||
13310 | cat >conftest.$ac_ext <<_ACEOF | 13858 | cat >conftest.$ac_ext <<_ACEOF |
13311 | #line 13311 "configure" | 13859 | #line 13859 "configure" |
13312 | #include "confdefs.h" | 13860 | #include "confdefs.h" |
13313 | #include <utmpx.h> | 13861 | #include <utmpx.h> |
13314 | 13862 | ||
@@ -13325,7 +13873,7 @@ fi | |||
13325 | 13873 | ||
13326 | ossh_result=`eval 'echo $'"$ossh_varname"` | 13874 | ossh_result=`eval 'echo $'"$ossh_varname"` |
13327 | if test -n "`echo $ossh_varname`"; then | 13875 | if test -n "`echo $ossh_varname`"; then |
13328 | echo "$as_me:13328: result: $ossh_result" >&5 | 13876 | echo "$as_me:13876: result: $ossh_result" >&5 |
13329 | echo "${ECHO_T}$ossh_result" >&6 | 13877 | echo "${ECHO_T}$ossh_result" >&6 |
13330 | if test "x$ossh_result" = "xyes"; then | 13878 | if test "x$ossh_result" = "xyes"; then |
13331 | cat >>confdefs.h <<\EOF | 13879 | cat >>confdefs.h <<\EOF |
@@ -13334,17 +13882,17 @@ EOF | |||
13334 | 13882 | ||
13335 | fi | 13883 | fi |
13336 | else | 13884 | else |
13337 | echo "$as_me:13337: result: no" >&5 | 13885 | echo "$as_me:13885: result: no" >&5 |
13338 | echo "${ECHO_T}no" >&6 | 13886 | echo "${ECHO_T}no" >&6 |
13339 | fi | 13887 | fi |
13340 | 13888 | ||
13341 | echo "$as_me:13341: checking for struct stat.st_blksize" >&5 | 13889 | echo "$as_me:13889: checking for struct stat.st_blksize" >&5 |
13342 | echo $ECHO_N "checking for struct stat.st_blksize... $ECHO_C" >&6 | 13890 | echo $ECHO_N "checking for struct stat.st_blksize... $ECHO_C" >&6 |
13343 | if test "${ac_cv_member_struct_stat_st_blksize+set}" = set; then | 13891 | if test "${ac_cv_member_struct_stat_st_blksize+set}" = set; then |
13344 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 13892 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
13345 | else | 13893 | else |
13346 | cat >conftest.$ac_ext <<_ACEOF | 13894 | cat >conftest.$ac_ext <<_ACEOF |
13347 | #line 13347 "configure" | 13895 | #line 13895 "configure" |
13348 | #include "confdefs.h" | 13896 | #include "confdefs.h" |
13349 | $ac_includes_default | 13897 | $ac_includes_default |
13350 | int | 13898 | int |
@@ -13358,16 +13906,16 @@ return 0; | |||
13358 | } | 13906 | } |
13359 | _ACEOF | 13907 | _ACEOF |
13360 | rm -f conftest.$ac_objext | 13908 | rm -f conftest.$ac_objext |
13361 | if { (eval echo "$as_me:13361: \"$ac_compile\"") >&5 | 13909 | if { (eval echo "$as_me:13909: \"$ac_compile\"") >&5 |
13362 | (eval $ac_compile) 2>&5 | 13910 | (eval $ac_compile) 2>&5 |
13363 | ac_status=$? | 13911 | ac_status=$? |
13364 | echo "$as_me:13364: \$? = $ac_status" >&5 | 13912 | echo "$as_me:13912: \$? = $ac_status" >&5 |
13365 | (exit $ac_status); } && | 13913 | (exit $ac_status); } && |
13366 | { ac_try='test -s conftest.$ac_objext' | 13914 | { ac_try='test -s conftest.$ac_objext' |
13367 | { (eval echo "$as_me:13367: \"$ac_try\"") >&5 | 13915 | { (eval echo "$as_me:13915: \"$ac_try\"") >&5 |
13368 | (eval $ac_try) 2>&5 | 13916 | (eval $ac_try) 2>&5 |
13369 | ac_status=$? | 13917 | ac_status=$? |
13370 | echo "$as_me:13370: \$? = $ac_status" >&5 | 13918 | echo "$as_me:13918: \$? = $ac_status" >&5 |
13371 | (exit $ac_status); }; }; then | 13919 | (exit $ac_status); }; }; then |
13372 | ac_cv_member_struct_stat_st_blksize=yes | 13920 | ac_cv_member_struct_stat_st_blksize=yes |
13373 | else | 13921 | else |
@@ -13377,7 +13925,7 @@ ac_cv_member_struct_stat_st_blksize=no | |||
13377 | fi | 13925 | fi |
13378 | rm -f conftest.$ac_objext conftest.$ac_ext | 13926 | rm -f conftest.$ac_objext conftest.$ac_ext |
13379 | fi | 13927 | fi |
13380 | echo "$as_me:13380: result: $ac_cv_member_struct_stat_st_blksize" >&5 | 13928 | echo "$as_me:13928: result: $ac_cv_member_struct_stat_st_blksize" >&5 |
13381 | echo "${ECHO_T}$ac_cv_member_struct_stat_st_blksize" >&6 | 13929 | echo "${ECHO_T}$ac_cv_member_struct_stat_st_blksize" >&6 |
13382 | if test $ac_cv_member_struct_stat_st_blksize = yes; then | 13930 | if test $ac_cv_member_struct_stat_st_blksize = yes; then |
13383 | 13931 | ||
@@ -13387,14 +13935,14 @@ EOF | |||
13387 | 13935 | ||
13388 | fi | 13936 | fi |
13389 | 13937 | ||
13390 | echo "$as_me:13390: checking for ss_family field in struct sockaddr_storage" >&5 | 13938 | echo "$as_me:13938: checking for ss_family field in struct sockaddr_storage" >&5 |
13391 | echo $ECHO_N "checking for ss_family field in struct sockaddr_storage... $ECHO_C" >&6 | 13939 | echo $ECHO_N "checking for ss_family field in struct sockaddr_storage... $ECHO_C" >&6 |
13392 | if test "${ac_cv_have_ss_family_in_struct_ss+set}" = set; then | 13940 | if test "${ac_cv_have_ss_family_in_struct_ss+set}" = set; then |
13393 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 13941 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
13394 | else | 13942 | else |
13395 | 13943 | ||
13396 | cat >conftest.$ac_ext <<_ACEOF | 13944 | cat >conftest.$ac_ext <<_ACEOF |
13397 | #line 13397 "configure" | 13945 | #line 13945 "configure" |
13398 | #include "confdefs.h" | 13946 | #include "confdefs.h" |
13399 | 13947 | ||
13400 | #include <sys/types.h> | 13948 | #include <sys/types.h> |
@@ -13409,16 +13957,16 @@ main () | |||
13409 | } | 13957 | } |
13410 | _ACEOF | 13958 | _ACEOF |
13411 | rm -f conftest.$ac_objext | 13959 | rm -f conftest.$ac_objext |
13412 | if { (eval echo "$as_me:13412: \"$ac_compile\"") >&5 | 13960 | if { (eval echo "$as_me:13960: \"$ac_compile\"") >&5 |
13413 | (eval $ac_compile) 2>&5 | 13961 | (eval $ac_compile) 2>&5 |
13414 | ac_status=$? | 13962 | ac_status=$? |
13415 | echo "$as_me:13415: \$? = $ac_status" >&5 | 13963 | echo "$as_me:13963: \$? = $ac_status" >&5 |
13416 | (exit $ac_status); } && | 13964 | (exit $ac_status); } && |
13417 | { ac_try='test -s conftest.$ac_objext' | 13965 | { ac_try='test -s conftest.$ac_objext' |
13418 | { (eval echo "$as_me:13418: \"$ac_try\"") >&5 | 13966 | { (eval echo "$as_me:13966: \"$ac_try\"") >&5 |
13419 | (eval $ac_try) 2>&5 | 13967 | (eval $ac_try) 2>&5 |
13420 | ac_status=$? | 13968 | ac_status=$? |
13421 | echo "$as_me:13421: \$? = $ac_status" >&5 | 13969 | echo "$as_me:13969: \$? = $ac_status" >&5 |
13422 | (exit $ac_status); }; }; then | 13970 | (exit $ac_status); }; }; then |
13423 | ac_cv_have_ss_family_in_struct_ss="yes" | 13971 | ac_cv_have_ss_family_in_struct_ss="yes" |
13424 | else | 13972 | else |
@@ -13429,7 +13977,7 @@ fi | |||
13429 | rm -f conftest.$ac_objext conftest.$ac_ext | 13977 | rm -f conftest.$ac_objext conftest.$ac_ext |
13430 | 13978 | ||
13431 | fi | 13979 | fi |
13432 | echo "$as_me:13432: result: $ac_cv_have_ss_family_in_struct_ss" >&5 | 13980 | echo "$as_me:13980: result: $ac_cv_have_ss_family_in_struct_ss" >&5 |
13433 | echo "${ECHO_T}$ac_cv_have_ss_family_in_struct_ss" >&6 | 13981 | echo "${ECHO_T}$ac_cv_have_ss_family_in_struct_ss" >&6 |
13434 | if test "x$ac_cv_have_ss_family_in_struct_ss" = "xyes" ; then | 13982 | if test "x$ac_cv_have_ss_family_in_struct_ss" = "xyes" ; then |
13435 | cat >>confdefs.h <<\EOF | 13983 | cat >>confdefs.h <<\EOF |
@@ -13438,14 +13986,14 @@ EOF | |||
13438 | 13986 | ||
13439 | fi | 13987 | fi |
13440 | 13988 | ||
13441 | echo "$as_me:13441: checking for __ss_family field in struct sockaddr_storage" >&5 | 13989 | echo "$as_me:13989: checking for __ss_family field in struct sockaddr_storage" >&5 |
13442 | echo $ECHO_N "checking for __ss_family field in struct sockaddr_storage... $ECHO_C" >&6 | 13990 | echo $ECHO_N "checking for __ss_family field in struct sockaddr_storage... $ECHO_C" >&6 |
13443 | if test "${ac_cv_have___ss_family_in_struct_ss+set}" = set; then | 13991 | if test "${ac_cv_have___ss_family_in_struct_ss+set}" = set; then |
13444 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 13992 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
13445 | else | 13993 | else |
13446 | 13994 | ||
13447 | cat >conftest.$ac_ext <<_ACEOF | 13995 | cat >conftest.$ac_ext <<_ACEOF |
13448 | #line 13448 "configure" | 13996 | #line 13996 "configure" |
13449 | #include "confdefs.h" | 13997 | #include "confdefs.h" |
13450 | 13998 | ||
13451 | #include <sys/types.h> | 13999 | #include <sys/types.h> |
@@ -13460,16 +14008,16 @@ main () | |||
13460 | } | 14008 | } |
13461 | _ACEOF | 14009 | _ACEOF |
13462 | rm -f conftest.$ac_objext | 14010 | rm -f conftest.$ac_objext |
13463 | if { (eval echo "$as_me:13463: \"$ac_compile\"") >&5 | 14011 | if { (eval echo "$as_me:14011: \"$ac_compile\"") >&5 |
13464 | (eval $ac_compile) 2>&5 | 14012 | (eval $ac_compile) 2>&5 |
13465 | ac_status=$? | 14013 | ac_status=$? |
13466 | echo "$as_me:13466: \$? = $ac_status" >&5 | 14014 | echo "$as_me:14014: \$? = $ac_status" >&5 |
13467 | (exit $ac_status); } && | 14015 | (exit $ac_status); } && |
13468 | { ac_try='test -s conftest.$ac_objext' | 14016 | { ac_try='test -s conftest.$ac_objext' |
13469 | { (eval echo "$as_me:13469: \"$ac_try\"") >&5 | 14017 | { (eval echo "$as_me:14017: \"$ac_try\"") >&5 |
13470 | (eval $ac_try) 2>&5 | 14018 | (eval $ac_try) 2>&5 |
13471 | ac_status=$? | 14019 | ac_status=$? |
13472 | echo "$as_me:13472: \$? = $ac_status" >&5 | 14020 | echo "$as_me:14020: \$? = $ac_status" >&5 |
13473 | (exit $ac_status); }; }; then | 14021 | (exit $ac_status); }; }; then |
13474 | ac_cv_have___ss_family_in_struct_ss="yes" | 14022 | ac_cv_have___ss_family_in_struct_ss="yes" |
13475 | else | 14023 | else |
@@ -13481,7 +14029,7 @@ fi | |||
13481 | rm -f conftest.$ac_objext conftest.$ac_ext | 14029 | rm -f conftest.$ac_objext conftest.$ac_ext |
13482 | 14030 | ||
13483 | fi | 14031 | fi |
13484 | echo "$as_me:13484: result: $ac_cv_have___ss_family_in_struct_ss" >&5 | 14032 | echo "$as_me:14032: result: $ac_cv_have___ss_family_in_struct_ss" >&5 |
13485 | echo "${ECHO_T}$ac_cv_have___ss_family_in_struct_ss" >&6 | 14033 | echo "${ECHO_T}$ac_cv_have___ss_family_in_struct_ss" >&6 |
13486 | if test "x$ac_cv_have___ss_family_in_struct_ss" = "xyes" ; then | 14034 | if test "x$ac_cv_have___ss_family_in_struct_ss" = "xyes" ; then |
13487 | cat >>confdefs.h <<\EOF | 14035 | cat >>confdefs.h <<\EOF |
@@ -13490,14 +14038,14 @@ EOF | |||
13490 | 14038 | ||
13491 | fi | 14039 | fi |
13492 | 14040 | ||
13493 | echo "$as_me:13493: checking for pw_class field in struct passwd" >&5 | 14041 | echo "$as_me:14041: checking for pw_class field in struct passwd" >&5 |
13494 | echo $ECHO_N "checking for pw_class field in struct passwd... $ECHO_C" >&6 | 14042 | echo $ECHO_N "checking for pw_class field in struct passwd... $ECHO_C" >&6 |
13495 | if test "${ac_cv_have_pw_class_in_struct_passwd+set}" = set; then | 14043 | if test "${ac_cv_have_pw_class_in_struct_passwd+set}" = set; then |
13496 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 14044 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
13497 | else | 14045 | else |
13498 | 14046 | ||
13499 | cat >conftest.$ac_ext <<_ACEOF | 14047 | cat >conftest.$ac_ext <<_ACEOF |
13500 | #line 13500 "configure" | 14048 | #line 14048 "configure" |
13501 | #include "confdefs.h" | 14049 | #include "confdefs.h" |
13502 | 14050 | ||
13503 | #include <pwd.h> | 14051 | #include <pwd.h> |
@@ -13511,16 +14059,16 @@ main () | |||
13511 | } | 14059 | } |
13512 | _ACEOF | 14060 | _ACEOF |
13513 | rm -f conftest.$ac_objext | 14061 | rm -f conftest.$ac_objext |
13514 | if { (eval echo "$as_me:13514: \"$ac_compile\"") >&5 | 14062 | if { (eval echo "$as_me:14062: \"$ac_compile\"") >&5 |
13515 | (eval $ac_compile) 2>&5 | 14063 | (eval $ac_compile) 2>&5 |
13516 | ac_status=$? | 14064 | ac_status=$? |
13517 | echo "$as_me:13517: \$? = $ac_status" >&5 | 14065 | echo "$as_me:14065: \$? = $ac_status" >&5 |
13518 | (exit $ac_status); } && | 14066 | (exit $ac_status); } && |
13519 | { ac_try='test -s conftest.$ac_objext' | 14067 | { ac_try='test -s conftest.$ac_objext' |
13520 | { (eval echo "$as_me:13520: \"$ac_try\"") >&5 | 14068 | { (eval echo "$as_me:14068: \"$ac_try\"") >&5 |
13521 | (eval $ac_try) 2>&5 | 14069 | (eval $ac_try) 2>&5 |
13522 | ac_status=$? | 14070 | ac_status=$? |
13523 | echo "$as_me:13523: \$? = $ac_status" >&5 | 14071 | echo "$as_me:14071: \$? = $ac_status" >&5 |
13524 | (exit $ac_status); }; }; then | 14072 | (exit $ac_status); }; }; then |
13525 | ac_cv_have_pw_class_in_struct_passwd="yes" | 14073 | ac_cv_have_pw_class_in_struct_passwd="yes" |
13526 | else | 14074 | else |
@@ -13532,7 +14080,7 @@ fi | |||
13532 | rm -f conftest.$ac_objext conftest.$ac_ext | 14080 | rm -f conftest.$ac_objext conftest.$ac_ext |
13533 | 14081 | ||
13534 | fi | 14082 | fi |
13535 | echo "$as_me:13535: result: $ac_cv_have_pw_class_in_struct_passwd" >&5 | 14083 | echo "$as_me:14083: result: $ac_cv_have_pw_class_in_struct_passwd" >&5 |
13536 | echo "${ECHO_T}$ac_cv_have_pw_class_in_struct_passwd" >&6 | 14084 | echo "${ECHO_T}$ac_cv_have_pw_class_in_struct_passwd" >&6 |
13537 | if test "x$ac_cv_have_pw_class_in_struct_passwd" = "xyes" ; then | 14085 | if test "x$ac_cv_have_pw_class_in_struct_passwd" = "xyes" ; then |
13538 | cat >>confdefs.h <<\EOF | 14086 | cat >>confdefs.h <<\EOF |
@@ -13541,14 +14089,14 @@ EOF | |||
13541 | 14089 | ||
13542 | fi | 14090 | fi |
13543 | 14091 | ||
13544 | echo "$as_me:13544: checking for pw_expire field in struct passwd" >&5 | 14092 | echo "$as_me:14092: checking for pw_expire field in struct passwd" >&5 |
13545 | echo $ECHO_N "checking for pw_expire field in struct passwd... $ECHO_C" >&6 | 14093 | echo $ECHO_N "checking for pw_expire field in struct passwd... $ECHO_C" >&6 |
13546 | if test "${ac_cv_have_pw_expire_in_struct_passwd+set}" = set; then | 14094 | if test "${ac_cv_have_pw_expire_in_struct_passwd+set}" = set; then |
13547 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 14095 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
13548 | else | 14096 | else |
13549 | 14097 | ||
13550 | cat >conftest.$ac_ext <<_ACEOF | 14098 | cat >conftest.$ac_ext <<_ACEOF |
13551 | #line 13551 "configure" | 14099 | #line 14099 "configure" |
13552 | #include "confdefs.h" | 14100 | #include "confdefs.h" |
13553 | 14101 | ||
13554 | #include <pwd.h> | 14102 | #include <pwd.h> |
@@ -13562,16 +14110,16 @@ main () | |||
13562 | } | 14110 | } |
13563 | _ACEOF | 14111 | _ACEOF |
13564 | rm -f conftest.$ac_objext | 14112 | rm -f conftest.$ac_objext |
13565 | if { (eval echo "$as_me:13565: \"$ac_compile\"") >&5 | 14113 | if { (eval echo "$as_me:14113: \"$ac_compile\"") >&5 |
13566 | (eval $ac_compile) 2>&5 | 14114 | (eval $ac_compile) 2>&5 |
13567 | ac_status=$? | 14115 | ac_status=$? |
13568 | echo "$as_me:13568: \$? = $ac_status" >&5 | 14116 | echo "$as_me:14116: \$? = $ac_status" >&5 |
13569 | (exit $ac_status); } && | 14117 | (exit $ac_status); } && |
13570 | { ac_try='test -s conftest.$ac_objext' | 14118 | { ac_try='test -s conftest.$ac_objext' |
13571 | { (eval echo "$as_me:13571: \"$ac_try\"") >&5 | 14119 | { (eval echo "$as_me:14119: \"$ac_try\"") >&5 |
13572 | (eval $ac_try) 2>&5 | 14120 | (eval $ac_try) 2>&5 |
13573 | ac_status=$? | 14121 | ac_status=$? |
13574 | echo "$as_me:13574: \$? = $ac_status" >&5 | 14122 | echo "$as_me:14122: \$? = $ac_status" >&5 |
13575 | (exit $ac_status); }; }; then | 14123 | (exit $ac_status); }; }; then |
13576 | ac_cv_have_pw_expire_in_struct_passwd="yes" | 14124 | ac_cv_have_pw_expire_in_struct_passwd="yes" |
13577 | else | 14125 | else |
@@ -13583,7 +14131,7 @@ fi | |||
13583 | rm -f conftest.$ac_objext conftest.$ac_ext | 14131 | rm -f conftest.$ac_objext conftest.$ac_ext |
13584 | 14132 | ||
13585 | fi | 14133 | fi |
13586 | echo "$as_me:13586: result: $ac_cv_have_pw_expire_in_struct_passwd" >&5 | 14134 | echo "$as_me:14134: result: $ac_cv_have_pw_expire_in_struct_passwd" >&5 |
13587 | echo "${ECHO_T}$ac_cv_have_pw_expire_in_struct_passwd" >&6 | 14135 | echo "${ECHO_T}$ac_cv_have_pw_expire_in_struct_passwd" >&6 |
13588 | if test "x$ac_cv_have_pw_expire_in_struct_passwd" = "xyes" ; then | 14136 | if test "x$ac_cv_have_pw_expire_in_struct_passwd" = "xyes" ; then |
13589 | cat >>confdefs.h <<\EOF | 14137 | cat >>confdefs.h <<\EOF |
@@ -13592,14 +14140,14 @@ EOF | |||
13592 | 14140 | ||
13593 | fi | 14141 | fi |
13594 | 14142 | ||
13595 | echo "$as_me:13595: checking for pw_change field in struct passwd" >&5 | 14143 | echo "$as_me:14143: checking for pw_change field in struct passwd" >&5 |
13596 | echo $ECHO_N "checking for pw_change field in struct passwd... $ECHO_C" >&6 | 14144 | echo $ECHO_N "checking for pw_change field in struct passwd... $ECHO_C" >&6 |
13597 | if test "${ac_cv_have_pw_change_in_struct_passwd+set}" = set; then | 14145 | if test "${ac_cv_have_pw_change_in_struct_passwd+set}" = set; then |
13598 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 14146 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
13599 | else | 14147 | else |
13600 | 14148 | ||
13601 | cat >conftest.$ac_ext <<_ACEOF | 14149 | cat >conftest.$ac_ext <<_ACEOF |
13602 | #line 13602 "configure" | 14150 | #line 14150 "configure" |
13603 | #include "confdefs.h" | 14151 | #include "confdefs.h" |
13604 | 14152 | ||
13605 | #include <pwd.h> | 14153 | #include <pwd.h> |
@@ -13613,16 +14161,16 @@ main () | |||
13613 | } | 14161 | } |
13614 | _ACEOF | 14162 | _ACEOF |
13615 | rm -f conftest.$ac_objext | 14163 | rm -f conftest.$ac_objext |
13616 | if { (eval echo "$as_me:13616: \"$ac_compile\"") >&5 | 14164 | if { (eval echo "$as_me:14164: \"$ac_compile\"") >&5 |
13617 | (eval $ac_compile) 2>&5 | 14165 | (eval $ac_compile) 2>&5 |
13618 | ac_status=$? | 14166 | ac_status=$? |
13619 | echo "$as_me:13619: \$? = $ac_status" >&5 | 14167 | echo "$as_me:14167: \$? = $ac_status" >&5 |
13620 | (exit $ac_status); } && | 14168 | (exit $ac_status); } && |
13621 | { ac_try='test -s conftest.$ac_objext' | 14169 | { ac_try='test -s conftest.$ac_objext' |
13622 | { (eval echo "$as_me:13622: \"$ac_try\"") >&5 | 14170 | { (eval echo "$as_me:14170: \"$ac_try\"") >&5 |
13623 | (eval $ac_try) 2>&5 | 14171 | (eval $ac_try) 2>&5 |
13624 | ac_status=$? | 14172 | ac_status=$? |
13625 | echo "$as_me:13625: \$? = $ac_status" >&5 | 14173 | echo "$as_me:14173: \$? = $ac_status" >&5 |
13626 | (exit $ac_status); }; }; then | 14174 | (exit $ac_status); }; }; then |
13627 | ac_cv_have_pw_change_in_struct_passwd="yes" | 14175 | ac_cv_have_pw_change_in_struct_passwd="yes" |
13628 | else | 14176 | else |
@@ -13634,7 +14182,7 @@ fi | |||
13634 | rm -f conftest.$ac_objext conftest.$ac_ext | 14182 | rm -f conftest.$ac_objext conftest.$ac_ext |
13635 | 14183 | ||
13636 | fi | 14184 | fi |
13637 | echo "$as_me:13637: result: $ac_cv_have_pw_change_in_struct_passwd" >&5 | 14185 | echo "$as_me:14185: result: $ac_cv_have_pw_change_in_struct_passwd" >&5 |
13638 | echo "${ECHO_T}$ac_cv_have_pw_change_in_struct_passwd" >&6 | 14186 | echo "${ECHO_T}$ac_cv_have_pw_change_in_struct_passwd" >&6 |
13639 | if test "x$ac_cv_have_pw_change_in_struct_passwd" = "xyes" ; then | 14187 | if test "x$ac_cv_have_pw_change_in_struct_passwd" = "xyes" ; then |
13640 | cat >>confdefs.h <<\EOF | 14188 | cat >>confdefs.h <<\EOF |
@@ -13643,19 +14191,19 @@ EOF | |||
13643 | 14191 | ||
13644 | fi | 14192 | fi |
13645 | 14193 | ||
13646 | echo "$as_me:13646: checking for msg_accrights field in struct msghdr" >&5 | 14194 | echo "$as_me:14194: checking for msg_accrights field in struct msghdr" >&5 |
13647 | echo $ECHO_N "checking for msg_accrights field in struct msghdr... $ECHO_C" >&6 | 14195 | echo $ECHO_N "checking for msg_accrights field in struct msghdr... $ECHO_C" >&6 |
13648 | if test "${ac_cv_have_accrights_in_msghdr+set}" = set; then | 14196 | if test "${ac_cv_have_accrights_in_msghdr+set}" = set; then |
13649 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 14197 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
13650 | else | 14198 | else |
13651 | 14199 | ||
13652 | if test "$cross_compiling" = yes; then | 14200 | if test "$cross_compiling" = yes; then |
13653 | { { echo "$as_me:13653: error: cannot run test program while cross compiling" >&5 | 14201 | { { echo "$as_me:14201: error: cannot run test program while cross compiling" >&5 |
13654 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} | 14202 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} |
13655 | { (exit 1); exit 1; }; } | 14203 | { (exit 1); exit 1; }; } |
13656 | else | 14204 | else |
13657 | cat >conftest.$ac_ext <<_ACEOF | 14205 | cat >conftest.$ac_ext <<_ACEOF |
13658 | #line 13658 "configure" | 14206 | #line 14206 "configure" |
13659 | #include "confdefs.h" | 14207 | #include "confdefs.h" |
13660 | 14208 | ||
13661 | #include <sys/types.h> | 14209 | #include <sys/types.h> |
@@ -13672,15 +14220,15 @@ exit(0); | |||
13672 | 14220 | ||
13673 | _ACEOF | 14221 | _ACEOF |
13674 | rm -f conftest$ac_exeext | 14222 | rm -f conftest$ac_exeext |
13675 | if { (eval echo "$as_me:13675: \"$ac_link\"") >&5 | 14223 | if { (eval echo "$as_me:14223: \"$ac_link\"") >&5 |
13676 | (eval $ac_link) 2>&5 | 14224 | (eval $ac_link) 2>&5 |
13677 | ac_status=$? | 14225 | ac_status=$? |
13678 | echo "$as_me:13678: \$? = $ac_status" >&5 | 14226 | echo "$as_me:14226: \$? = $ac_status" >&5 |
13679 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' | 14227 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' |
13680 | { (eval echo "$as_me:13680: \"$ac_try\"") >&5 | 14228 | { (eval echo "$as_me:14228: \"$ac_try\"") >&5 |
13681 | (eval $ac_try) 2>&5 | 14229 | (eval $ac_try) 2>&5 |
13682 | ac_status=$? | 14230 | ac_status=$? |
13683 | echo "$as_me:13683: \$? = $ac_status" >&5 | 14231 | echo "$as_me:14231: \$? = $ac_status" >&5 |
13684 | (exit $ac_status); }; }; then | 14232 | (exit $ac_status); }; }; then |
13685 | ac_cv_have_accrights_in_msghdr="yes" | 14233 | ac_cv_have_accrights_in_msghdr="yes" |
13686 | else | 14234 | else |
@@ -13694,7 +14242,7 @@ rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext | |||
13694 | fi | 14242 | fi |
13695 | 14243 | ||
13696 | fi | 14244 | fi |
13697 | echo "$as_me:13697: result: $ac_cv_have_accrights_in_msghdr" >&5 | 14245 | echo "$as_me:14245: result: $ac_cv_have_accrights_in_msghdr" >&5 |
13698 | echo "${ECHO_T}$ac_cv_have_accrights_in_msghdr" >&6 | 14246 | echo "${ECHO_T}$ac_cv_have_accrights_in_msghdr" >&6 |
13699 | if test "x$ac_cv_have_accrights_in_msghdr" = "xyes" ; then | 14247 | if test "x$ac_cv_have_accrights_in_msghdr" = "xyes" ; then |
13700 | cat >>confdefs.h <<\EOF | 14248 | cat >>confdefs.h <<\EOF |
@@ -13703,19 +14251,19 @@ EOF | |||
13703 | 14251 | ||
13704 | fi | 14252 | fi |
13705 | 14253 | ||
13706 | echo "$as_me:13706: checking for msg_control field in struct msghdr" >&5 | 14254 | echo "$as_me:14254: checking for msg_control field in struct msghdr" >&5 |
13707 | echo $ECHO_N "checking for msg_control field in struct msghdr... $ECHO_C" >&6 | 14255 | echo $ECHO_N "checking for msg_control field in struct msghdr... $ECHO_C" >&6 |
13708 | if test "${ac_cv_have_control_in_msghdr+set}" = set; then | 14256 | if test "${ac_cv_have_control_in_msghdr+set}" = set; then |
13709 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 14257 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
13710 | else | 14258 | else |
13711 | 14259 | ||
13712 | if test "$cross_compiling" = yes; then | 14260 | if test "$cross_compiling" = yes; then |
13713 | { { echo "$as_me:13713: error: cannot run test program while cross compiling" >&5 | 14261 | { { echo "$as_me:14261: error: cannot run test program while cross compiling" >&5 |
13714 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} | 14262 | echo "$as_me: error: cannot run test program while cross compiling" >&2;} |
13715 | { (exit 1); exit 1; }; } | 14263 | { (exit 1); exit 1; }; } |
13716 | else | 14264 | else |
13717 | cat >conftest.$ac_ext <<_ACEOF | 14265 | cat >conftest.$ac_ext <<_ACEOF |
13718 | #line 13718 "configure" | 14266 | #line 14266 "configure" |
13719 | #include "confdefs.h" | 14267 | #include "confdefs.h" |
13720 | 14268 | ||
13721 | #include <sys/types.h> | 14269 | #include <sys/types.h> |
@@ -13732,15 +14280,15 @@ exit(0); | |||
13732 | 14280 | ||
13733 | _ACEOF | 14281 | _ACEOF |
13734 | rm -f conftest$ac_exeext | 14282 | rm -f conftest$ac_exeext |
13735 | if { (eval echo "$as_me:13735: \"$ac_link\"") >&5 | 14283 | if { (eval echo "$as_me:14283: \"$ac_link\"") >&5 |
13736 | (eval $ac_link) 2>&5 | 14284 | (eval $ac_link) 2>&5 |
13737 | ac_status=$? | 14285 | ac_status=$? |
13738 | echo "$as_me:13738: \$? = $ac_status" >&5 | 14286 | echo "$as_me:14286: \$? = $ac_status" >&5 |
13739 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' | 14287 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' |
13740 | { (eval echo "$as_me:13740: \"$ac_try\"") >&5 | 14288 | { (eval echo "$as_me:14288: \"$ac_try\"") >&5 |
13741 | (eval $ac_try) 2>&5 | 14289 | (eval $ac_try) 2>&5 |
13742 | ac_status=$? | 14290 | ac_status=$? |
13743 | echo "$as_me:13743: \$? = $ac_status" >&5 | 14291 | echo "$as_me:14291: \$? = $ac_status" >&5 |
13744 | (exit $ac_status); }; }; then | 14292 | (exit $ac_status); }; }; then |
13745 | ac_cv_have_control_in_msghdr="yes" | 14293 | ac_cv_have_control_in_msghdr="yes" |
13746 | else | 14294 | else |
@@ -13754,7 +14302,7 @@ rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext | |||
13754 | fi | 14302 | fi |
13755 | 14303 | ||
13756 | fi | 14304 | fi |
13757 | echo "$as_me:13757: result: $ac_cv_have_control_in_msghdr" >&5 | 14305 | echo "$as_me:14305: result: $ac_cv_have_control_in_msghdr" >&5 |
13758 | echo "${ECHO_T}$ac_cv_have_control_in_msghdr" >&6 | 14306 | echo "${ECHO_T}$ac_cv_have_control_in_msghdr" >&6 |
13759 | if test "x$ac_cv_have_control_in_msghdr" = "xyes" ; then | 14307 | if test "x$ac_cv_have_control_in_msghdr" = "xyes" ; then |
13760 | cat >>confdefs.h <<\EOF | 14308 | cat >>confdefs.h <<\EOF |
@@ -13763,14 +14311,14 @@ EOF | |||
13763 | 14311 | ||
13764 | fi | 14312 | fi |
13765 | 14313 | ||
13766 | echo "$as_me:13766: checking if libc defines __progname" >&5 | 14314 | echo "$as_me:14314: checking if libc defines __progname" >&5 |
13767 | echo $ECHO_N "checking if libc defines __progname... $ECHO_C" >&6 | 14315 | echo $ECHO_N "checking if libc defines __progname... $ECHO_C" >&6 |
13768 | if test "${ac_cv_libc_defines___progname+set}" = set; then | 14316 | if test "${ac_cv_libc_defines___progname+set}" = set; then |
13769 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 14317 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
13770 | else | 14318 | else |
13771 | 14319 | ||
13772 | cat >conftest.$ac_ext <<_ACEOF | 14320 | cat >conftest.$ac_ext <<_ACEOF |
13773 | #line 13773 "configure" | 14321 | #line 14321 "configure" |
13774 | #include "confdefs.h" | 14322 | #include "confdefs.h" |
13775 | 14323 | ||
13776 | int | 14324 | int |
@@ -13782,16 +14330,16 @@ main () | |||
13782 | } | 14330 | } |
13783 | _ACEOF | 14331 | _ACEOF |
13784 | rm -f conftest.$ac_objext conftest$ac_exeext | 14332 | rm -f conftest.$ac_objext conftest$ac_exeext |
13785 | if { (eval echo "$as_me:13785: \"$ac_link\"") >&5 | 14333 | if { (eval echo "$as_me:14333: \"$ac_link\"") >&5 |
13786 | (eval $ac_link) 2>&5 | 14334 | (eval $ac_link) 2>&5 |
13787 | ac_status=$? | 14335 | ac_status=$? |
13788 | echo "$as_me:13788: \$? = $ac_status" >&5 | 14336 | echo "$as_me:14336: \$? = $ac_status" >&5 |
13789 | (exit $ac_status); } && | 14337 | (exit $ac_status); } && |
13790 | { ac_try='test -s conftest$ac_exeext' | 14338 | { ac_try='test -s conftest$ac_exeext' |
13791 | { (eval echo "$as_me:13791: \"$ac_try\"") >&5 | 14339 | { (eval echo "$as_me:14339: \"$ac_try\"") >&5 |
13792 | (eval $ac_try) 2>&5 | 14340 | (eval $ac_try) 2>&5 |
13793 | ac_status=$? | 14341 | ac_status=$? |
13794 | echo "$as_me:13794: \$? = $ac_status" >&5 | 14342 | echo "$as_me:14342: \$? = $ac_status" >&5 |
13795 | (exit $ac_status); }; }; then | 14343 | (exit $ac_status); }; }; then |
13796 | ac_cv_libc_defines___progname="yes" | 14344 | ac_cv_libc_defines___progname="yes" |
13797 | else | 14345 | else |
@@ -13803,7 +14351,7 @@ fi | |||
13803 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 14351 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
13804 | 14352 | ||
13805 | fi | 14353 | fi |
13806 | echo "$as_me:13806: result: $ac_cv_libc_defines___progname" >&5 | 14354 | echo "$as_me:14354: result: $ac_cv_libc_defines___progname" >&5 |
13807 | echo "${ECHO_T}$ac_cv_libc_defines___progname" >&6 | 14355 | echo "${ECHO_T}$ac_cv_libc_defines___progname" >&6 |
13808 | if test "x$ac_cv_libc_defines___progname" = "xyes" ; then | 14356 | if test "x$ac_cv_libc_defines___progname" = "xyes" ; then |
13809 | cat >>confdefs.h <<\EOF | 14357 | cat >>confdefs.h <<\EOF |
@@ -13812,14 +14360,14 @@ EOF | |||
13812 | 14360 | ||
13813 | fi | 14361 | fi |
13814 | 14362 | ||
13815 | echo "$as_me:13815: checking whether $CC implements __FUNCTION__" >&5 | 14363 | echo "$as_me:14363: checking whether $CC implements __FUNCTION__" >&5 |
13816 | echo $ECHO_N "checking whether $CC implements __FUNCTION__... $ECHO_C" >&6 | 14364 | echo $ECHO_N "checking whether $CC implements __FUNCTION__... $ECHO_C" >&6 |
13817 | if test "${ac_cv_cc_implements___FUNCTION__+set}" = set; then | 14365 | if test "${ac_cv_cc_implements___FUNCTION__+set}" = set; then |
13818 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 14366 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
13819 | else | 14367 | else |
13820 | 14368 | ||
13821 | cat >conftest.$ac_ext <<_ACEOF | 14369 | cat >conftest.$ac_ext <<_ACEOF |
13822 | #line 13822 "configure" | 14370 | #line 14370 "configure" |
13823 | #include "confdefs.h" | 14371 | #include "confdefs.h" |
13824 | 14372 | ||
13825 | #include <stdio.h> | 14373 | #include <stdio.h> |
@@ -13833,16 +14381,16 @@ main () | |||
13833 | } | 14381 | } |
13834 | _ACEOF | 14382 | _ACEOF |
13835 | rm -f conftest.$ac_objext conftest$ac_exeext | 14383 | rm -f conftest.$ac_objext conftest$ac_exeext |
13836 | if { (eval echo "$as_me:13836: \"$ac_link\"") >&5 | 14384 | if { (eval echo "$as_me:14384: \"$ac_link\"") >&5 |
13837 | (eval $ac_link) 2>&5 | 14385 | (eval $ac_link) 2>&5 |
13838 | ac_status=$? | 14386 | ac_status=$? |
13839 | echo "$as_me:13839: \$? = $ac_status" >&5 | 14387 | echo "$as_me:14387: \$? = $ac_status" >&5 |
13840 | (exit $ac_status); } && | 14388 | (exit $ac_status); } && |
13841 | { ac_try='test -s conftest$ac_exeext' | 14389 | { ac_try='test -s conftest$ac_exeext' |
13842 | { (eval echo "$as_me:13842: \"$ac_try\"") >&5 | 14390 | { (eval echo "$as_me:14390: \"$ac_try\"") >&5 |
13843 | (eval $ac_try) 2>&5 | 14391 | (eval $ac_try) 2>&5 |
13844 | ac_status=$? | 14392 | ac_status=$? |
13845 | echo "$as_me:13845: \$? = $ac_status" >&5 | 14393 | echo "$as_me:14393: \$? = $ac_status" >&5 |
13846 | (exit $ac_status); }; }; then | 14394 | (exit $ac_status); }; }; then |
13847 | ac_cv_cc_implements___FUNCTION__="yes" | 14395 | ac_cv_cc_implements___FUNCTION__="yes" |
13848 | else | 14396 | else |
@@ -13854,7 +14402,7 @@ fi | |||
13854 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 14402 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
13855 | 14403 | ||
13856 | fi | 14404 | fi |
13857 | echo "$as_me:13857: result: $ac_cv_cc_implements___FUNCTION__" >&5 | 14405 | echo "$as_me:14405: result: $ac_cv_cc_implements___FUNCTION__" >&5 |
13858 | echo "${ECHO_T}$ac_cv_cc_implements___FUNCTION__" >&6 | 14406 | echo "${ECHO_T}$ac_cv_cc_implements___FUNCTION__" >&6 |
13859 | if test "x$ac_cv_cc_implements___FUNCTION__" = "xyes" ; then | 14407 | if test "x$ac_cv_cc_implements___FUNCTION__" = "xyes" ; then |
13860 | cat >>confdefs.h <<\EOF | 14408 | cat >>confdefs.h <<\EOF |
@@ -13863,14 +14411,14 @@ EOF | |||
13863 | 14411 | ||
13864 | fi | 14412 | fi |
13865 | 14413 | ||
13866 | echo "$as_me:13866: checking whether $CC implements __func__" >&5 | 14414 | echo "$as_me:14414: checking whether $CC implements __func__" >&5 |
13867 | echo $ECHO_N "checking whether $CC implements __func__... $ECHO_C" >&6 | 14415 | echo $ECHO_N "checking whether $CC implements __func__... $ECHO_C" >&6 |
13868 | if test "${ac_cv_cc_implements___func__+set}" = set; then | 14416 | if test "${ac_cv_cc_implements___func__+set}" = set; then |
13869 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 14417 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
13870 | else | 14418 | else |
13871 | 14419 | ||
13872 | cat >conftest.$ac_ext <<_ACEOF | 14420 | cat >conftest.$ac_ext <<_ACEOF |
13873 | #line 13873 "configure" | 14421 | #line 14421 "configure" |
13874 | #include "confdefs.h" | 14422 | #include "confdefs.h" |
13875 | 14423 | ||
13876 | #include <stdio.h> | 14424 | #include <stdio.h> |
@@ -13884,16 +14432,16 @@ main () | |||
13884 | } | 14432 | } |
13885 | _ACEOF | 14433 | _ACEOF |
13886 | rm -f conftest.$ac_objext conftest$ac_exeext | 14434 | rm -f conftest.$ac_objext conftest$ac_exeext |
13887 | if { (eval echo "$as_me:13887: \"$ac_link\"") >&5 | 14435 | if { (eval echo "$as_me:14435: \"$ac_link\"") >&5 |
13888 | (eval $ac_link) 2>&5 | 14436 | (eval $ac_link) 2>&5 |
13889 | ac_status=$? | 14437 | ac_status=$? |
13890 | echo "$as_me:13890: \$? = $ac_status" >&5 | 14438 | echo "$as_me:14438: \$? = $ac_status" >&5 |
13891 | (exit $ac_status); } && | 14439 | (exit $ac_status); } && |
13892 | { ac_try='test -s conftest$ac_exeext' | 14440 | { ac_try='test -s conftest$ac_exeext' |
13893 | { (eval echo "$as_me:13893: \"$ac_try\"") >&5 | 14441 | { (eval echo "$as_me:14441: \"$ac_try\"") >&5 |
13894 | (eval $ac_try) 2>&5 | 14442 | (eval $ac_try) 2>&5 |
13895 | ac_status=$? | 14443 | ac_status=$? |
13896 | echo "$as_me:13896: \$? = $ac_status" >&5 | 14444 | echo "$as_me:14444: \$? = $ac_status" >&5 |
13897 | (exit $ac_status); }; }; then | 14445 | (exit $ac_status); }; }; then |
13898 | ac_cv_cc_implements___func__="yes" | 14446 | ac_cv_cc_implements___func__="yes" |
13899 | else | 14447 | else |
@@ -13905,7 +14453,7 @@ fi | |||
13905 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 14453 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
13906 | 14454 | ||
13907 | fi | 14455 | fi |
13908 | echo "$as_me:13908: result: $ac_cv_cc_implements___func__" >&5 | 14456 | echo "$as_me:14456: result: $ac_cv_cc_implements___func__" >&5 |
13909 | echo "${ECHO_T}$ac_cv_cc_implements___func__" >&6 | 14457 | echo "${ECHO_T}$ac_cv_cc_implements___func__" >&6 |
13910 | if test "x$ac_cv_cc_implements___func__" = "xyes" ; then | 14458 | if test "x$ac_cv_cc_implements___func__" = "xyes" ; then |
13911 | cat >>confdefs.h <<\EOF | 14459 | cat >>confdefs.h <<\EOF |
@@ -13914,14 +14462,14 @@ EOF | |||
13914 | 14462 | ||
13915 | fi | 14463 | fi |
13916 | 14464 | ||
13917 | echo "$as_me:13917: checking whether getopt has optreset support" >&5 | 14465 | echo "$as_me:14465: checking whether getopt has optreset support" >&5 |
13918 | echo $ECHO_N "checking whether getopt has optreset support... $ECHO_C" >&6 | 14466 | echo $ECHO_N "checking whether getopt has optreset support... $ECHO_C" >&6 |
13919 | if test "${ac_cv_have_getopt_optreset+set}" = set; then | 14467 | if test "${ac_cv_have_getopt_optreset+set}" = set; then |
13920 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 14468 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
13921 | else | 14469 | else |
13922 | 14470 | ||
13923 | cat >conftest.$ac_ext <<_ACEOF | 14471 | cat >conftest.$ac_ext <<_ACEOF |
13924 | #line 13924 "configure" | 14472 | #line 14472 "configure" |
13925 | #include "confdefs.h" | 14473 | #include "confdefs.h" |
13926 | 14474 | ||
13927 | #include <getopt.h> | 14475 | #include <getopt.h> |
@@ -13935,16 +14483,16 @@ main () | |||
13935 | } | 14483 | } |
13936 | _ACEOF | 14484 | _ACEOF |
13937 | rm -f conftest.$ac_objext conftest$ac_exeext | 14485 | rm -f conftest.$ac_objext conftest$ac_exeext |
13938 | if { (eval echo "$as_me:13938: \"$ac_link\"") >&5 | 14486 | if { (eval echo "$as_me:14486: \"$ac_link\"") >&5 |
13939 | (eval $ac_link) 2>&5 | 14487 | (eval $ac_link) 2>&5 |
13940 | ac_status=$? | 14488 | ac_status=$? |
13941 | echo "$as_me:13941: \$? = $ac_status" >&5 | 14489 | echo "$as_me:14489: \$? = $ac_status" >&5 |
13942 | (exit $ac_status); } && | 14490 | (exit $ac_status); } && |
13943 | { ac_try='test -s conftest$ac_exeext' | 14491 | { ac_try='test -s conftest$ac_exeext' |
13944 | { (eval echo "$as_me:13944: \"$ac_try\"") >&5 | 14492 | { (eval echo "$as_me:14492: \"$ac_try\"") >&5 |
13945 | (eval $ac_try) 2>&5 | 14493 | (eval $ac_try) 2>&5 |
13946 | ac_status=$? | 14494 | ac_status=$? |
13947 | echo "$as_me:13947: \$? = $ac_status" >&5 | 14495 | echo "$as_me:14495: \$? = $ac_status" >&5 |
13948 | (exit $ac_status); }; }; then | 14496 | (exit $ac_status); }; }; then |
13949 | ac_cv_have_getopt_optreset="yes" | 14497 | ac_cv_have_getopt_optreset="yes" |
13950 | else | 14498 | else |
@@ -13956,7 +14504,7 @@ fi | |||
13956 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 14504 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
13957 | 14505 | ||
13958 | fi | 14506 | fi |
13959 | echo "$as_me:13959: result: $ac_cv_have_getopt_optreset" >&5 | 14507 | echo "$as_me:14507: result: $ac_cv_have_getopt_optreset" >&5 |
13960 | echo "${ECHO_T}$ac_cv_have_getopt_optreset" >&6 | 14508 | echo "${ECHO_T}$ac_cv_have_getopt_optreset" >&6 |
13961 | if test "x$ac_cv_have_getopt_optreset" = "xyes" ; then | 14509 | if test "x$ac_cv_have_getopt_optreset" = "xyes" ; then |
13962 | cat >>confdefs.h <<\EOF | 14510 | cat >>confdefs.h <<\EOF |
@@ -13965,14 +14513,14 @@ EOF | |||
13965 | 14513 | ||
13966 | fi | 14514 | fi |
13967 | 14515 | ||
13968 | echo "$as_me:13968: checking if libc defines sys_errlist" >&5 | 14516 | echo "$as_me:14516: checking if libc defines sys_errlist" >&5 |
13969 | echo $ECHO_N "checking if libc defines sys_errlist... $ECHO_C" >&6 | 14517 | echo $ECHO_N "checking if libc defines sys_errlist... $ECHO_C" >&6 |
13970 | if test "${ac_cv_libc_defines_sys_errlist+set}" = set; then | 14518 | if test "${ac_cv_libc_defines_sys_errlist+set}" = set; then |
13971 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 14519 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
13972 | else | 14520 | else |
13973 | 14521 | ||
13974 | cat >conftest.$ac_ext <<_ACEOF | 14522 | cat >conftest.$ac_ext <<_ACEOF |
13975 | #line 13975 "configure" | 14523 | #line 14523 "configure" |
13976 | #include "confdefs.h" | 14524 | #include "confdefs.h" |
13977 | 14525 | ||
13978 | int | 14526 | int |
@@ -13984,16 +14532,16 @@ main () | |||
13984 | } | 14532 | } |
13985 | _ACEOF | 14533 | _ACEOF |
13986 | rm -f conftest.$ac_objext conftest$ac_exeext | 14534 | rm -f conftest.$ac_objext conftest$ac_exeext |
13987 | if { (eval echo "$as_me:13987: \"$ac_link\"") >&5 | 14535 | if { (eval echo "$as_me:14535: \"$ac_link\"") >&5 |
13988 | (eval $ac_link) 2>&5 | 14536 | (eval $ac_link) 2>&5 |
13989 | ac_status=$? | 14537 | ac_status=$? |
13990 | echo "$as_me:13990: \$? = $ac_status" >&5 | 14538 | echo "$as_me:14538: \$? = $ac_status" >&5 |
13991 | (exit $ac_status); } && | 14539 | (exit $ac_status); } && |
13992 | { ac_try='test -s conftest$ac_exeext' | 14540 | { ac_try='test -s conftest$ac_exeext' |
13993 | { (eval echo "$as_me:13993: \"$ac_try\"") >&5 | 14541 | { (eval echo "$as_me:14541: \"$ac_try\"") >&5 |
13994 | (eval $ac_try) 2>&5 | 14542 | (eval $ac_try) 2>&5 |
13995 | ac_status=$? | 14543 | ac_status=$? |
13996 | echo "$as_me:13996: \$? = $ac_status" >&5 | 14544 | echo "$as_me:14544: \$? = $ac_status" >&5 |
13997 | (exit $ac_status); }; }; then | 14545 | (exit $ac_status); }; }; then |
13998 | ac_cv_libc_defines_sys_errlist="yes" | 14546 | ac_cv_libc_defines_sys_errlist="yes" |
13999 | else | 14547 | else |
@@ -14005,7 +14553,7 @@ fi | |||
14005 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 14553 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
14006 | 14554 | ||
14007 | fi | 14555 | fi |
14008 | echo "$as_me:14008: result: $ac_cv_libc_defines_sys_errlist" >&5 | 14556 | echo "$as_me:14556: result: $ac_cv_libc_defines_sys_errlist" >&5 |
14009 | echo "${ECHO_T}$ac_cv_libc_defines_sys_errlist" >&6 | 14557 | echo "${ECHO_T}$ac_cv_libc_defines_sys_errlist" >&6 |
14010 | if test "x$ac_cv_libc_defines_sys_errlist" = "xyes" ; then | 14558 | if test "x$ac_cv_libc_defines_sys_errlist" = "xyes" ; then |
14011 | cat >>confdefs.h <<\EOF | 14559 | cat >>confdefs.h <<\EOF |
@@ -14014,14 +14562,14 @@ EOF | |||
14014 | 14562 | ||
14015 | fi | 14563 | fi |
14016 | 14564 | ||
14017 | echo "$as_me:14017: checking if libc defines sys_nerr" >&5 | 14565 | echo "$as_me:14565: checking if libc defines sys_nerr" >&5 |
14018 | echo $ECHO_N "checking if libc defines sys_nerr... $ECHO_C" >&6 | 14566 | echo $ECHO_N "checking if libc defines sys_nerr... $ECHO_C" >&6 |
14019 | if test "${ac_cv_libc_defines_sys_nerr+set}" = set; then | 14567 | if test "${ac_cv_libc_defines_sys_nerr+set}" = set; then |
14020 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 14568 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
14021 | else | 14569 | else |
14022 | 14570 | ||
14023 | cat >conftest.$ac_ext <<_ACEOF | 14571 | cat >conftest.$ac_ext <<_ACEOF |
14024 | #line 14024 "configure" | 14572 | #line 14572 "configure" |
14025 | #include "confdefs.h" | 14573 | #include "confdefs.h" |
14026 | 14574 | ||
14027 | int | 14575 | int |
@@ -14033,16 +14581,16 @@ main () | |||
14033 | } | 14581 | } |
14034 | _ACEOF | 14582 | _ACEOF |
14035 | rm -f conftest.$ac_objext conftest$ac_exeext | 14583 | rm -f conftest.$ac_objext conftest$ac_exeext |
14036 | if { (eval echo "$as_me:14036: \"$ac_link\"") >&5 | 14584 | if { (eval echo "$as_me:14584: \"$ac_link\"") >&5 |
14037 | (eval $ac_link) 2>&5 | 14585 | (eval $ac_link) 2>&5 |
14038 | ac_status=$? | 14586 | ac_status=$? |
14039 | echo "$as_me:14039: \$? = $ac_status" >&5 | 14587 | echo "$as_me:14587: \$? = $ac_status" >&5 |
14040 | (exit $ac_status); } && | 14588 | (exit $ac_status); } && |
14041 | { ac_try='test -s conftest$ac_exeext' | 14589 | { ac_try='test -s conftest$ac_exeext' |
14042 | { (eval echo "$as_me:14042: \"$ac_try\"") >&5 | 14590 | { (eval echo "$as_me:14590: \"$ac_try\"") >&5 |
14043 | (eval $ac_try) 2>&5 | 14591 | (eval $ac_try) 2>&5 |
14044 | ac_status=$? | 14592 | ac_status=$? |
14045 | echo "$as_me:14045: \$? = $ac_status" >&5 | 14593 | echo "$as_me:14593: \$? = $ac_status" >&5 |
14046 | (exit $ac_status); }; }; then | 14594 | (exit $ac_status); }; }; then |
14047 | ac_cv_libc_defines_sys_nerr="yes" | 14595 | ac_cv_libc_defines_sys_nerr="yes" |
14048 | else | 14596 | else |
@@ -14054,7 +14602,7 @@ fi | |||
14054 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 14602 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
14055 | 14603 | ||
14056 | fi | 14604 | fi |
14057 | echo "$as_me:14057: result: $ac_cv_libc_defines_sys_nerr" >&5 | 14605 | echo "$as_me:14605: result: $ac_cv_libc_defines_sys_nerr" >&5 |
14058 | echo "${ECHO_T}$ac_cv_libc_defines_sys_nerr" >&6 | 14606 | echo "${ECHO_T}$ac_cv_libc_defines_sys_nerr" >&6 |
14059 | if test "x$ac_cv_libc_defines_sys_nerr" = "xyes" ; then | 14607 | if test "x$ac_cv_libc_defines_sys_nerr" = "xyes" ; then |
14060 | cat >>confdefs.h <<\EOF | 14608 | cat >>confdefs.h <<\EOF |
@@ -14085,23 +14633,23 @@ if test "${with_sectok+set}" = set; then | |||
14085 | for ac_header in sectok.h | 14633 | for ac_header in sectok.h |
14086 | do | 14634 | do |
14087 | as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` | 14635 | as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` |
14088 | echo "$as_me:14088: checking for $ac_header" >&5 | 14636 | echo "$as_me:14636: checking for $ac_header" >&5 |
14089 | echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 | 14637 | echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 |
14090 | if eval "test \"\${$as_ac_Header+set}\" = set"; then | 14638 | if eval "test \"\${$as_ac_Header+set}\" = set"; then |
14091 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 14639 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
14092 | else | 14640 | else |
14093 | cat >conftest.$ac_ext <<_ACEOF | 14641 | cat >conftest.$ac_ext <<_ACEOF |
14094 | #line 14094 "configure" | 14642 | #line 14642 "configure" |
14095 | #include "confdefs.h" | 14643 | #include "confdefs.h" |
14096 | #include <$ac_header> | 14644 | #include <$ac_header> |
14097 | _ACEOF | 14645 | _ACEOF |
14098 | if { (eval echo "$as_me:14098: \"$ac_cpp conftest.$ac_ext\"") >&5 | 14646 | if { (eval echo "$as_me:14646: \"$ac_cpp conftest.$ac_ext\"") >&5 |
14099 | (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 | 14647 | (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 |
14100 | ac_status=$? | 14648 | ac_status=$? |
14101 | egrep -v '^ *\+' conftest.er1 >conftest.err | 14649 | egrep -v '^ *\+' conftest.er1 >conftest.err |
14102 | rm -f conftest.er1 | 14650 | rm -f conftest.er1 |
14103 | cat conftest.err >&5 | 14651 | cat conftest.err >&5 |
14104 | echo "$as_me:14104: \$? = $ac_status" >&5 | 14652 | echo "$as_me:14652: \$? = $ac_status" >&5 |
14105 | (exit $ac_status); } >/dev/null; then | 14653 | (exit $ac_status); } >/dev/null; then |
14106 | if test -s conftest.err; then | 14654 | if test -s conftest.err; then |
14107 | ac_cpp_err=$ac_c_preproc_warn_flag | 14655 | ac_cpp_err=$ac_c_preproc_warn_flag |
@@ -14120,7 +14668,7 @@ else | |||
14120 | fi | 14668 | fi |
14121 | rm -f conftest.err conftest.$ac_ext | 14669 | rm -f conftest.err conftest.$ac_ext |
14122 | fi | 14670 | fi |
14123 | echo "$as_me:14123: result: `eval echo '${'$as_ac_Header'}'`" >&5 | 14671 | echo "$as_me:14671: result: `eval echo '${'$as_ac_Header'}'`" >&5 |
14124 | echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 | 14672 | echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 |
14125 | if test `eval echo '${'$as_ac_Header'}'` = yes; then | 14673 | if test `eval echo '${'$as_ac_Header'}'` = yes; then |
14126 | cat >>confdefs.h <<EOF | 14674 | cat >>confdefs.h <<EOF |
@@ -14131,12 +14679,12 @@ fi | |||
14131 | done | 14679 | done |
14132 | 14680 | ||
14133 | if test "$ac_cv_header_sectok_h" != yes; then | 14681 | if test "$ac_cv_header_sectok_h" != yes; then |
14134 | { { echo "$as_me:14134: error: Can't find sectok.h" >&5 | 14682 | { { echo "$as_me:14682: error: Can't find sectok.h" >&5 |
14135 | echo "$as_me: error: Can't find sectok.h" >&2;} | 14683 | echo "$as_me: error: Can't find sectok.h" >&2;} |
14136 | { (exit 1); exit 1; }; } | 14684 | { (exit 1); exit 1; }; } |
14137 | fi | 14685 | fi |
14138 | 14686 | ||
14139 | echo "$as_me:14139: checking for sectok_open in -lsectok" >&5 | 14687 | echo "$as_me:14687: checking for sectok_open in -lsectok" >&5 |
14140 | echo $ECHO_N "checking for sectok_open in -lsectok... $ECHO_C" >&6 | 14688 | echo $ECHO_N "checking for sectok_open in -lsectok... $ECHO_C" >&6 |
14141 | if test "${ac_cv_lib_sectok_sectok_open+set}" = set; then | 14689 | if test "${ac_cv_lib_sectok_sectok_open+set}" = set; then |
14142 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 14690 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -14144,7 +14692,7 @@ else | |||
14144 | ac_check_lib_save_LIBS=$LIBS | 14692 | ac_check_lib_save_LIBS=$LIBS |
14145 | LIBS="-lsectok $LIBS" | 14693 | LIBS="-lsectok $LIBS" |
14146 | cat >conftest.$ac_ext <<_ACEOF | 14694 | cat >conftest.$ac_ext <<_ACEOF |
14147 | #line 14147 "configure" | 14695 | #line 14695 "configure" |
14148 | #include "confdefs.h" | 14696 | #include "confdefs.h" |
14149 | 14697 | ||
14150 | /* Override any gcc2 internal prototype to avoid an error. */ | 14698 | /* Override any gcc2 internal prototype to avoid an error. */ |
@@ -14163,16 +14711,16 @@ sectok_open (); | |||
14163 | } | 14711 | } |
14164 | _ACEOF | 14712 | _ACEOF |
14165 | rm -f conftest.$ac_objext conftest$ac_exeext | 14713 | rm -f conftest.$ac_objext conftest$ac_exeext |
14166 | if { (eval echo "$as_me:14166: \"$ac_link\"") >&5 | 14714 | if { (eval echo "$as_me:14714: \"$ac_link\"") >&5 |
14167 | (eval $ac_link) 2>&5 | 14715 | (eval $ac_link) 2>&5 |
14168 | ac_status=$? | 14716 | ac_status=$? |
14169 | echo "$as_me:14169: \$? = $ac_status" >&5 | 14717 | echo "$as_me:14717: \$? = $ac_status" >&5 |
14170 | (exit $ac_status); } && | 14718 | (exit $ac_status); } && |
14171 | { ac_try='test -s conftest$ac_exeext' | 14719 | { ac_try='test -s conftest$ac_exeext' |
14172 | { (eval echo "$as_me:14172: \"$ac_try\"") >&5 | 14720 | { (eval echo "$as_me:14720: \"$ac_try\"") >&5 |
14173 | (eval $ac_try) 2>&5 | 14721 | (eval $ac_try) 2>&5 |
14174 | ac_status=$? | 14722 | ac_status=$? |
14175 | echo "$as_me:14175: \$? = $ac_status" >&5 | 14723 | echo "$as_me:14723: \$? = $ac_status" >&5 |
14176 | (exit $ac_status); }; }; then | 14724 | (exit $ac_status); }; }; then |
14177 | ac_cv_lib_sectok_sectok_open=yes | 14725 | ac_cv_lib_sectok_sectok_open=yes |
14178 | else | 14726 | else |
@@ -14183,7 +14731,7 @@ fi | |||
14183 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 14731 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
14184 | LIBS=$ac_check_lib_save_LIBS | 14732 | LIBS=$ac_check_lib_save_LIBS |
14185 | fi | 14733 | fi |
14186 | echo "$as_me:14186: result: $ac_cv_lib_sectok_sectok_open" >&5 | 14734 | echo "$as_me:14734: result: $ac_cv_lib_sectok_sectok_open" >&5 |
14187 | echo "${ECHO_T}$ac_cv_lib_sectok_sectok_open" >&6 | 14735 | echo "${ECHO_T}$ac_cv_lib_sectok_sectok_open" >&6 |
14188 | if test $ac_cv_lib_sectok_sectok_open = yes; then | 14736 | if test $ac_cv_lib_sectok_sectok_open = yes; then |
14189 | cat >>confdefs.h <<EOF | 14737 | cat >>confdefs.h <<EOF |
@@ -14195,7 +14743,7 @@ EOF | |||
14195 | fi | 14743 | fi |
14196 | 14744 | ||
14197 | if test "$ac_cv_lib_sectok_sectok_open" != yes; then | 14745 | if test "$ac_cv_lib_sectok_sectok_open" != yes; then |
14198 | { { echo "$as_me:14198: error: Can't find libsectok" >&5 | 14746 | { { echo "$as_me:14746: error: Can't find libsectok" >&5 |
14199 | echo "$as_me: error: Can't find libsectok" >&2;} | 14747 | echo "$as_me: error: Can't find libsectok" >&2;} |
14200 | { (exit 1); exit 1; }; } | 14748 | { (exit 1); exit 1; }; } |
14201 | fi | 14749 | fi |
@@ -14225,7 +14773,7 @@ if test x$opensc_config_prefix != x ; then | |||
14225 | OPENSC_CONFIG=$opensc_config_prefix/bin/opensc-config | 14773 | OPENSC_CONFIG=$opensc_config_prefix/bin/opensc-config |
14226 | # Extract the first word of "opensc-config", so it can be a program name with args. | 14774 | # Extract the first word of "opensc-config", so it can be a program name with args. |
14227 | set dummy opensc-config; ac_word=$2 | 14775 | set dummy opensc-config; ac_word=$2 |
14228 | echo "$as_me:14228: checking for $ac_word" >&5 | 14776 | echo "$as_me:14776: checking for $ac_word" >&5 |
14229 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 | 14777 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 |
14230 | if test "${ac_cv_path_OPENSC_CONFIG+set}" = set; then | 14778 | if test "${ac_cv_path_OPENSC_CONFIG+set}" = set; then |
14231 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 14779 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -14242,7 +14790,7 @@ for ac_dir in $ac_dummy; do | |||
14242 | test -z "$ac_dir" && ac_dir=. | 14790 | test -z "$ac_dir" && ac_dir=. |
14243 | if $as_executable_p "$ac_dir/$ac_word"; then | 14791 | if $as_executable_p "$ac_dir/$ac_word"; then |
14244 | ac_cv_path_OPENSC_CONFIG="$ac_dir/$ac_word" | 14792 | ac_cv_path_OPENSC_CONFIG="$ac_dir/$ac_word" |
14245 | echo "$as_me:14245: found $ac_dir/$ac_word" >&5 | 14793 | echo "$as_me:14793: found $ac_dir/$ac_word" >&5 |
14246 | break | 14794 | break |
14247 | fi | 14795 | fi |
14248 | done | 14796 | done |
@@ -14254,10 +14802,10 @@ fi | |||
14254 | OPENSC_CONFIG=$ac_cv_path_OPENSC_CONFIG | 14802 | OPENSC_CONFIG=$ac_cv_path_OPENSC_CONFIG |
14255 | 14803 | ||
14256 | if test -n "$OPENSC_CONFIG"; then | 14804 | if test -n "$OPENSC_CONFIG"; then |
14257 | echo "$as_me:14257: result: $OPENSC_CONFIG" >&5 | 14805 | echo "$as_me:14805: result: $OPENSC_CONFIG" >&5 |
14258 | echo "${ECHO_T}$OPENSC_CONFIG" >&6 | 14806 | echo "${ECHO_T}$OPENSC_CONFIG" >&6 |
14259 | else | 14807 | else |
14260 | echo "$as_me:14260: result: no" >&5 | 14808 | echo "$as_me:14808: result: no" >&5 |
14261 | echo "${ECHO_T}no" >&6 | 14809 | echo "${ECHO_T}no" >&6 |
14262 | fi | 14810 | fi |
14263 | 14811 | ||
@@ -14278,20 +14826,8 @@ EOF | |||
14278 | fi | 14826 | fi |
14279 | fi | 14827 | fi |
14280 | 14828 | ||
14281 | # Check whether user wants DNS support | 14829 | # Check libraries needed by DNS fingerprint support |
14282 | DNS_MSG="no" | 14830 | echo "$as_me:14830: checking for library containing getrrsetbyname" >&5 |
14283 | |||
14284 | # Check whether --with-dns or --without-dns was given. | ||
14285 | if test "${with_dns+set}" = set; then | ||
14286 | withval="$with_dns" | ||
14287 | |||
14288 | if test "x$withval" != "xno" ; then | ||
14289 | DNS_MSG="yes" | ||
14290 | cat >>confdefs.h <<\EOF | ||
14291 | #define DNS 1 | ||
14292 | EOF | ||
14293 | |||
14294 | echo "$as_me:14294: checking for library containing getrrsetbyname" >&5 | ||
14295 | echo $ECHO_N "checking for library containing getrrsetbyname... $ECHO_C" >&6 | 14831 | echo $ECHO_N "checking for library containing getrrsetbyname... $ECHO_C" >&6 |
14296 | if test "${ac_cv_search_getrrsetbyname+set}" = set; then | 14832 | if test "${ac_cv_search_getrrsetbyname+set}" = set; then |
14297 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 14833 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -14299,7 +14835,7 @@ else | |||
14299 | ac_func_search_save_LIBS=$LIBS | 14835 | ac_func_search_save_LIBS=$LIBS |
14300 | ac_cv_search_getrrsetbyname=no | 14836 | ac_cv_search_getrrsetbyname=no |
14301 | cat >conftest.$ac_ext <<_ACEOF | 14837 | cat >conftest.$ac_ext <<_ACEOF |
14302 | #line 14302 "configure" | 14838 | #line 14838 "configure" |
14303 | #include "confdefs.h" | 14839 | #include "confdefs.h" |
14304 | 14840 | ||
14305 | /* Override any gcc2 internal prototype to avoid an error. */ | 14841 | /* Override any gcc2 internal prototype to avoid an error. */ |
@@ -14318,16 +14854,16 @@ getrrsetbyname (); | |||
14318 | } | 14854 | } |
14319 | _ACEOF | 14855 | _ACEOF |
14320 | rm -f conftest.$ac_objext conftest$ac_exeext | 14856 | rm -f conftest.$ac_objext conftest$ac_exeext |
14321 | if { (eval echo "$as_me:14321: \"$ac_link\"") >&5 | 14857 | if { (eval echo "$as_me:14857: \"$ac_link\"") >&5 |
14322 | (eval $ac_link) 2>&5 | 14858 | (eval $ac_link) 2>&5 |
14323 | ac_status=$? | 14859 | ac_status=$? |
14324 | echo "$as_me:14324: \$? = $ac_status" >&5 | 14860 | echo "$as_me:14860: \$? = $ac_status" >&5 |
14325 | (exit $ac_status); } && | 14861 | (exit $ac_status); } && |
14326 | { ac_try='test -s conftest$ac_exeext' | 14862 | { ac_try='test -s conftest$ac_exeext' |
14327 | { (eval echo "$as_me:14327: \"$ac_try\"") >&5 | 14863 | { (eval echo "$as_me:14863: \"$ac_try\"") >&5 |
14328 | (eval $ac_try) 2>&5 | 14864 | (eval $ac_try) 2>&5 |
14329 | ac_status=$? | 14865 | ac_status=$? |
14330 | echo "$as_me:14330: \$? = $ac_status" >&5 | 14866 | echo "$as_me:14866: \$? = $ac_status" >&5 |
14331 | (exit $ac_status); }; }; then | 14867 | (exit $ac_status); }; }; then |
14332 | ac_cv_search_getrrsetbyname="none required" | 14868 | ac_cv_search_getrrsetbyname="none required" |
14333 | else | 14869 | else |
@@ -14339,7 +14875,7 @@ if test "$ac_cv_search_getrrsetbyname" = no; then | |||
14339 | for ac_lib in resolv; do | 14875 | for ac_lib in resolv; do |
14340 | LIBS="-l$ac_lib $ac_func_search_save_LIBS" | 14876 | LIBS="-l$ac_lib $ac_func_search_save_LIBS" |
14341 | cat >conftest.$ac_ext <<_ACEOF | 14877 | cat >conftest.$ac_ext <<_ACEOF |
14342 | #line 14342 "configure" | 14878 | #line 14878 "configure" |
14343 | #include "confdefs.h" | 14879 | #include "confdefs.h" |
14344 | 14880 | ||
14345 | /* Override any gcc2 internal prototype to avoid an error. */ | 14881 | /* Override any gcc2 internal prototype to avoid an error. */ |
@@ -14358,16 +14894,16 @@ getrrsetbyname (); | |||
14358 | } | 14894 | } |
14359 | _ACEOF | 14895 | _ACEOF |
14360 | rm -f conftest.$ac_objext conftest$ac_exeext | 14896 | rm -f conftest.$ac_objext conftest$ac_exeext |
14361 | if { (eval echo "$as_me:14361: \"$ac_link\"") >&5 | 14897 | if { (eval echo "$as_me:14897: \"$ac_link\"") >&5 |
14362 | (eval $ac_link) 2>&5 | 14898 | (eval $ac_link) 2>&5 |
14363 | ac_status=$? | 14899 | ac_status=$? |
14364 | echo "$as_me:14364: \$? = $ac_status" >&5 | 14900 | echo "$as_me:14900: \$? = $ac_status" >&5 |
14365 | (exit $ac_status); } && | 14901 | (exit $ac_status); } && |
14366 | { ac_try='test -s conftest$ac_exeext' | 14902 | { ac_try='test -s conftest$ac_exeext' |
14367 | { (eval echo "$as_me:14367: \"$ac_try\"") >&5 | 14903 | { (eval echo "$as_me:14903: \"$ac_try\"") >&5 |
14368 | (eval $ac_try) 2>&5 | 14904 | (eval $ac_try) 2>&5 |
14369 | ac_status=$? | 14905 | ac_status=$? |
14370 | echo "$as_me:14370: \$? = $ac_status" >&5 | 14906 | echo "$as_me:14906: \$? = $ac_status" >&5 |
14371 | (exit $ac_status); }; }; then | 14907 | (exit $ac_status); }; }; then |
14372 | ac_cv_search_getrrsetbyname="-l$ac_lib" | 14908 | ac_cv_search_getrrsetbyname="-l$ac_lib" |
14373 | break | 14909 | break |
@@ -14380,7 +14916,7 @@ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | |||
14380 | fi | 14916 | fi |
14381 | LIBS=$ac_func_search_save_LIBS | 14917 | LIBS=$ac_func_search_save_LIBS |
14382 | fi | 14918 | fi |
14383 | echo "$as_me:14383: result: $ac_cv_search_getrrsetbyname" >&5 | 14919 | echo "$as_me:14919: result: $ac_cv_search_getrrsetbyname" >&5 |
14384 | echo "${ECHO_T}$ac_cv_search_getrrsetbyname" >&6 | 14920 | echo "${ECHO_T}$ac_cv_search_getrrsetbyname" >&6 |
14385 | if test "$ac_cv_search_getrrsetbyname" != no; then | 14921 | if test "$ac_cv_search_getrrsetbyname" != no; then |
14386 | test "$ac_cv_search_getrrsetbyname" = "none required" || LIBS="$ac_cv_search_getrrsetbyname $LIBS" | 14922 | test "$ac_cv_search_getrrsetbyname" = "none required" || LIBS="$ac_cv_search_getrrsetbyname $LIBS" |
@@ -14390,8 +14926,8 @@ EOF | |||
14390 | 14926 | ||
14391 | else | 14927 | else |
14392 | 14928 | ||
14393 | # Needed by our getrrsetbyname() | 14929 | # Needed by our getrrsetbyname() |
14394 | echo "$as_me:14394: checking for library containing res_query" >&5 | 14930 | echo "$as_me:14930: checking for library containing res_query" >&5 |
14395 | echo $ECHO_N "checking for library containing res_query... $ECHO_C" >&6 | 14931 | echo $ECHO_N "checking for library containing res_query... $ECHO_C" >&6 |
14396 | if test "${ac_cv_search_res_query+set}" = set; then | 14932 | if test "${ac_cv_search_res_query+set}" = set; then |
14397 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 14933 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -14399,7 +14935,7 @@ else | |||
14399 | ac_func_search_save_LIBS=$LIBS | 14935 | ac_func_search_save_LIBS=$LIBS |
14400 | ac_cv_search_res_query=no | 14936 | ac_cv_search_res_query=no |
14401 | cat >conftest.$ac_ext <<_ACEOF | 14937 | cat >conftest.$ac_ext <<_ACEOF |
14402 | #line 14402 "configure" | 14938 | #line 14938 "configure" |
14403 | #include "confdefs.h" | 14939 | #include "confdefs.h" |
14404 | 14940 | ||
14405 | /* Override any gcc2 internal prototype to avoid an error. */ | 14941 | /* Override any gcc2 internal prototype to avoid an error. */ |
@@ -14418,16 +14954,16 @@ res_query (); | |||
14418 | } | 14954 | } |
14419 | _ACEOF | 14955 | _ACEOF |
14420 | rm -f conftest.$ac_objext conftest$ac_exeext | 14956 | rm -f conftest.$ac_objext conftest$ac_exeext |
14421 | if { (eval echo "$as_me:14421: \"$ac_link\"") >&5 | 14957 | if { (eval echo "$as_me:14957: \"$ac_link\"") >&5 |
14422 | (eval $ac_link) 2>&5 | 14958 | (eval $ac_link) 2>&5 |
14423 | ac_status=$? | 14959 | ac_status=$? |
14424 | echo "$as_me:14424: \$? = $ac_status" >&5 | 14960 | echo "$as_me:14960: \$? = $ac_status" >&5 |
14425 | (exit $ac_status); } && | 14961 | (exit $ac_status); } && |
14426 | { ac_try='test -s conftest$ac_exeext' | 14962 | { ac_try='test -s conftest$ac_exeext' |
14427 | { (eval echo "$as_me:14427: \"$ac_try\"") >&5 | 14963 | { (eval echo "$as_me:14963: \"$ac_try\"") >&5 |
14428 | (eval $ac_try) 2>&5 | 14964 | (eval $ac_try) 2>&5 |
14429 | ac_status=$? | 14965 | ac_status=$? |
14430 | echo "$as_me:14430: \$? = $ac_status" >&5 | 14966 | echo "$as_me:14966: \$? = $ac_status" >&5 |
14431 | (exit $ac_status); }; }; then | 14967 | (exit $ac_status); }; }; then |
14432 | ac_cv_search_res_query="none required" | 14968 | ac_cv_search_res_query="none required" |
14433 | else | 14969 | else |
@@ -14439,7 +14975,7 @@ if test "$ac_cv_search_res_query" = no; then | |||
14439 | for ac_lib in resolv; do | 14975 | for ac_lib in resolv; do |
14440 | LIBS="-l$ac_lib $ac_func_search_save_LIBS" | 14976 | LIBS="-l$ac_lib $ac_func_search_save_LIBS" |
14441 | cat >conftest.$ac_ext <<_ACEOF | 14977 | cat >conftest.$ac_ext <<_ACEOF |
14442 | #line 14442 "configure" | 14978 | #line 14978 "configure" |
14443 | #include "confdefs.h" | 14979 | #include "confdefs.h" |
14444 | 14980 | ||
14445 | /* Override any gcc2 internal prototype to avoid an error. */ | 14981 | /* Override any gcc2 internal prototype to avoid an error. */ |
@@ -14458,16 +14994,16 @@ res_query (); | |||
14458 | } | 14994 | } |
14459 | _ACEOF | 14995 | _ACEOF |
14460 | rm -f conftest.$ac_objext conftest$ac_exeext | 14996 | rm -f conftest.$ac_objext conftest$ac_exeext |
14461 | if { (eval echo "$as_me:14461: \"$ac_link\"") >&5 | 14997 | if { (eval echo "$as_me:14997: \"$ac_link\"") >&5 |
14462 | (eval $ac_link) 2>&5 | 14998 | (eval $ac_link) 2>&5 |
14463 | ac_status=$? | 14999 | ac_status=$? |
14464 | echo "$as_me:14464: \$? = $ac_status" >&5 | 15000 | echo "$as_me:15000: \$? = $ac_status" >&5 |
14465 | (exit $ac_status); } && | 15001 | (exit $ac_status); } && |
14466 | { ac_try='test -s conftest$ac_exeext' | 15002 | { ac_try='test -s conftest$ac_exeext' |
14467 | { (eval echo "$as_me:14467: \"$ac_try\"") >&5 | 15003 | { (eval echo "$as_me:15003: \"$ac_try\"") >&5 |
14468 | (eval $ac_try) 2>&5 | 15004 | (eval $ac_try) 2>&5 |
14469 | ac_status=$? | 15005 | ac_status=$? |
14470 | echo "$as_me:14470: \$? = $ac_status" >&5 | 15006 | echo "$as_me:15006: \$? = $ac_status" >&5 |
14471 | (exit $ac_status); }; }; then | 15007 | (exit $ac_status); }; }; then |
14472 | ac_cv_search_res_query="-l$ac_lib" | 15008 | ac_cv_search_res_query="-l$ac_lib" |
14473 | break | 15009 | break |
@@ -14480,14 +15016,14 @@ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | |||
14480 | fi | 15016 | fi |
14481 | LIBS=$ac_func_search_save_LIBS | 15017 | LIBS=$ac_func_search_save_LIBS |
14482 | fi | 15018 | fi |
14483 | echo "$as_me:14483: result: $ac_cv_search_res_query" >&5 | 15019 | echo "$as_me:15019: result: $ac_cv_search_res_query" >&5 |
14484 | echo "${ECHO_T}$ac_cv_search_res_query" >&6 | 15020 | echo "${ECHO_T}$ac_cv_search_res_query" >&6 |
14485 | if test "$ac_cv_search_res_query" != no; then | 15021 | if test "$ac_cv_search_res_query" != no; then |
14486 | test "$ac_cv_search_res_query" = "none required" || LIBS="$ac_cv_search_res_query $LIBS" | 15022 | test "$ac_cv_search_res_query" = "none required" || LIBS="$ac_cv_search_res_query $LIBS" |
14487 | 15023 | ||
14488 | fi | 15024 | fi |
14489 | 15025 | ||
14490 | echo "$as_me:14490: checking for library containing dn_expand" >&5 | 15026 | echo "$as_me:15026: checking for library containing dn_expand" >&5 |
14491 | echo $ECHO_N "checking for library containing dn_expand... $ECHO_C" >&6 | 15027 | echo $ECHO_N "checking for library containing dn_expand... $ECHO_C" >&6 |
14492 | if test "${ac_cv_search_dn_expand+set}" = set; then | 15028 | if test "${ac_cv_search_dn_expand+set}" = set; then |
14493 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 15029 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -14495,7 +15031,7 @@ else | |||
14495 | ac_func_search_save_LIBS=$LIBS | 15031 | ac_func_search_save_LIBS=$LIBS |
14496 | ac_cv_search_dn_expand=no | 15032 | ac_cv_search_dn_expand=no |
14497 | cat >conftest.$ac_ext <<_ACEOF | 15033 | cat >conftest.$ac_ext <<_ACEOF |
14498 | #line 14498 "configure" | 15034 | #line 15034 "configure" |
14499 | #include "confdefs.h" | 15035 | #include "confdefs.h" |
14500 | 15036 | ||
14501 | /* Override any gcc2 internal prototype to avoid an error. */ | 15037 | /* Override any gcc2 internal prototype to avoid an error. */ |
@@ -14514,16 +15050,16 @@ dn_expand (); | |||
14514 | } | 15050 | } |
14515 | _ACEOF | 15051 | _ACEOF |
14516 | rm -f conftest.$ac_objext conftest$ac_exeext | 15052 | rm -f conftest.$ac_objext conftest$ac_exeext |
14517 | if { (eval echo "$as_me:14517: \"$ac_link\"") >&5 | 15053 | if { (eval echo "$as_me:15053: \"$ac_link\"") >&5 |
14518 | (eval $ac_link) 2>&5 | 15054 | (eval $ac_link) 2>&5 |
14519 | ac_status=$? | 15055 | ac_status=$? |
14520 | echo "$as_me:14520: \$? = $ac_status" >&5 | 15056 | echo "$as_me:15056: \$? = $ac_status" >&5 |
14521 | (exit $ac_status); } && | 15057 | (exit $ac_status); } && |
14522 | { ac_try='test -s conftest$ac_exeext' | 15058 | { ac_try='test -s conftest$ac_exeext' |
14523 | { (eval echo "$as_me:14523: \"$ac_try\"") >&5 | 15059 | { (eval echo "$as_me:15059: \"$ac_try\"") >&5 |
14524 | (eval $ac_try) 2>&5 | 15060 | (eval $ac_try) 2>&5 |
14525 | ac_status=$? | 15061 | ac_status=$? |
14526 | echo "$as_me:14526: \$? = $ac_status" >&5 | 15062 | echo "$as_me:15062: \$? = $ac_status" >&5 |
14527 | (exit $ac_status); }; }; then | 15063 | (exit $ac_status); }; }; then |
14528 | ac_cv_search_dn_expand="none required" | 15064 | ac_cv_search_dn_expand="none required" |
14529 | else | 15065 | else |
@@ -14535,7 +15071,7 @@ if test "$ac_cv_search_dn_expand" = no; then | |||
14535 | for ac_lib in resolv; do | 15071 | for ac_lib in resolv; do |
14536 | LIBS="-l$ac_lib $ac_func_search_save_LIBS" | 15072 | LIBS="-l$ac_lib $ac_func_search_save_LIBS" |
14537 | cat >conftest.$ac_ext <<_ACEOF | 15073 | cat >conftest.$ac_ext <<_ACEOF |
14538 | #line 14538 "configure" | 15074 | #line 15074 "configure" |
14539 | #include "confdefs.h" | 15075 | #include "confdefs.h" |
14540 | 15076 | ||
14541 | /* Override any gcc2 internal prototype to avoid an error. */ | 15077 | /* Override any gcc2 internal prototype to avoid an error. */ |
@@ -14554,16 +15090,16 @@ dn_expand (); | |||
14554 | } | 15090 | } |
14555 | _ACEOF | 15091 | _ACEOF |
14556 | rm -f conftest.$ac_objext conftest$ac_exeext | 15092 | rm -f conftest.$ac_objext conftest$ac_exeext |
14557 | if { (eval echo "$as_me:14557: \"$ac_link\"") >&5 | 15093 | if { (eval echo "$as_me:15093: \"$ac_link\"") >&5 |
14558 | (eval $ac_link) 2>&5 | 15094 | (eval $ac_link) 2>&5 |
14559 | ac_status=$? | 15095 | ac_status=$? |
14560 | echo "$as_me:14560: \$? = $ac_status" >&5 | 15096 | echo "$as_me:15096: \$? = $ac_status" >&5 |
14561 | (exit $ac_status); } && | 15097 | (exit $ac_status); } && |
14562 | { ac_try='test -s conftest$ac_exeext' | 15098 | { ac_try='test -s conftest$ac_exeext' |
14563 | { (eval echo "$as_me:14563: \"$ac_try\"") >&5 | 15099 | { (eval echo "$as_me:15099: \"$ac_try\"") >&5 |
14564 | (eval $ac_try) 2>&5 | 15100 | (eval $ac_try) 2>&5 |
14565 | ac_status=$? | 15101 | ac_status=$? |
14566 | echo "$as_me:14566: \$? = $ac_status" >&5 | 15102 | echo "$as_me:15102: \$? = $ac_status" >&5 |
14567 | (exit $ac_status); }; }; then | 15103 | (exit $ac_status); }; }; then |
14568 | ac_cv_search_dn_expand="-l$ac_lib" | 15104 | ac_cv_search_dn_expand="-l$ac_lib" |
14569 | break | 15105 | break |
@@ -14576,7 +15112,7 @@ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | |||
14576 | fi | 15112 | fi |
14577 | LIBS=$ac_func_search_save_LIBS | 15113 | LIBS=$ac_func_search_save_LIBS |
14578 | fi | 15114 | fi |
14579 | echo "$as_me:14579: result: $ac_cv_search_dn_expand" >&5 | 15115 | echo "$as_me:15115: result: $ac_cv_search_dn_expand" >&5 |
14580 | echo "${ECHO_T}$ac_cv_search_dn_expand" >&6 | 15116 | echo "${ECHO_T}$ac_cv_search_dn_expand" >&6 |
14581 | if test "$ac_cv_search_dn_expand" != no; then | 15117 | if test "$ac_cv_search_dn_expand" != no; then |
14582 | test "$ac_cv_search_dn_expand" = "none required" || LIBS="$ac_cv_search_dn_expand $LIBS" | 15118 | test "$ac_cv_search_dn_expand" = "none required" || LIBS="$ac_cv_search_dn_expand $LIBS" |
@@ -14586,13 +15122,13 @@ fi | |||
14586 | for ac_func in _getshort _getlong | 15122 | for ac_func in _getshort _getlong |
14587 | do | 15123 | do |
14588 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` | 15124 | as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` |
14589 | echo "$as_me:14589: checking for $ac_func" >&5 | 15125 | echo "$as_me:15125: checking for $ac_func" >&5 |
14590 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 | 15126 | echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 |
14591 | if eval "test \"\${$as_ac_var+set}\" = set"; then | 15127 | if eval "test \"\${$as_ac_var+set}\" = set"; then |
14592 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 15128 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
14593 | else | 15129 | else |
14594 | cat >conftest.$ac_ext <<_ACEOF | 15130 | cat >conftest.$ac_ext <<_ACEOF |
14595 | #line 14595 "configure" | 15131 | #line 15131 "configure" |
14596 | #include "confdefs.h" | 15132 | #include "confdefs.h" |
14597 | /* System header to define __stub macros and hopefully few prototypes, | 15133 | /* System header to define __stub macros and hopefully few prototypes, |
14598 | which can conflict with char $ac_func (); below. */ | 15134 | which can conflict with char $ac_func (); below. */ |
@@ -14623,16 +15159,16 @@ f = $ac_func; | |||
14623 | } | 15159 | } |
14624 | _ACEOF | 15160 | _ACEOF |
14625 | rm -f conftest.$ac_objext conftest$ac_exeext | 15161 | rm -f conftest.$ac_objext conftest$ac_exeext |
14626 | if { (eval echo "$as_me:14626: \"$ac_link\"") >&5 | 15162 | if { (eval echo "$as_me:15162: \"$ac_link\"") >&5 |
14627 | (eval $ac_link) 2>&5 | 15163 | (eval $ac_link) 2>&5 |
14628 | ac_status=$? | 15164 | ac_status=$? |
14629 | echo "$as_me:14629: \$? = $ac_status" >&5 | 15165 | echo "$as_me:15165: \$? = $ac_status" >&5 |
14630 | (exit $ac_status); } && | 15166 | (exit $ac_status); } && |
14631 | { ac_try='test -s conftest$ac_exeext' | 15167 | { ac_try='test -s conftest$ac_exeext' |
14632 | { (eval echo "$as_me:14632: \"$ac_try\"") >&5 | 15168 | { (eval echo "$as_me:15168: \"$ac_try\"") >&5 |
14633 | (eval $ac_try) 2>&5 | 15169 | (eval $ac_try) 2>&5 |
14634 | ac_status=$? | 15170 | ac_status=$? |
14635 | echo "$as_me:14635: \$? = $ac_status" >&5 | 15171 | echo "$as_me:15171: \$? = $ac_status" >&5 |
14636 | (exit $ac_status); }; }; then | 15172 | (exit $ac_status); }; }; then |
14637 | eval "$as_ac_var=yes" | 15173 | eval "$as_ac_var=yes" |
14638 | else | 15174 | else |
@@ -14642,7 +15178,7 @@ eval "$as_ac_var=no" | |||
14642 | fi | 15178 | fi |
14643 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 15179 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
14644 | fi | 15180 | fi |
14645 | echo "$as_me:14645: result: `eval echo '${'$as_ac_var'}'`" >&5 | 15181 | echo "$as_me:15181: result: `eval echo '${'$as_ac_var'}'`" >&5 |
14646 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 | 15182 | echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 |
14647 | if test `eval echo '${'$as_ac_var'}'` = yes; then | 15183 | if test `eval echo '${'$as_ac_var'}'` = yes; then |
14648 | cat >>confdefs.h <<EOF | 15184 | cat >>confdefs.h <<EOF |
@@ -14652,13 +15188,13 @@ EOF | |||
14652 | fi | 15188 | fi |
14653 | done | 15189 | done |
14654 | 15190 | ||
14655 | echo "$as_me:14655: checking for HEADER.ad" >&5 | 15191 | echo "$as_me:15191: checking for HEADER.ad" >&5 |
14656 | echo $ECHO_N "checking for HEADER.ad... $ECHO_C" >&6 | 15192 | echo $ECHO_N "checking for HEADER.ad... $ECHO_C" >&6 |
14657 | if test "${ac_cv_member_HEADER_ad+set}" = set; then | 15193 | if test "${ac_cv_member_HEADER_ad+set}" = set; then |
14658 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 15194 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
14659 | else | 15195 | else |
14660 | cat >conftest.$ac_ext <<_ACEOF | 15196 | cat >conftest.$ac_ext <<_ACEOF |
14661 | #line 14661 "configure" | 15197 | #line 15197 "configure" |
14662 | #include "confdefs.h" | 15198 | #include "confdefs.h" |
14663 | #include <arpa/nameser.h> | 15199 | #include <arpa/nameser.h> |
14664 | 15200 | ||
@@ -14673,16 +15209,16 @@ return 0; | |||
14673 | } | 15209 | } |
14674 | _ACEOF | 15210 | _ACEOF |
14675 | rm -f conftest.$ac_objext | 15211 | rm -f conftest.$ac_objext |
14676 | if { (eval echo "$as_me:14676: \"$ac_compile\"") >&5 | 15212 | if { (eval echo "$as_me:15212: \"$ac_compile\"") >&5 |
14677 | (eval $ac_compile) 2>&5 | 15213 | (eval $ac_compile) 2>&5 |
14678 | ac_status=$? | 15214 | ac_status=$? |
14679 | echo "$as_me:14679: \$? = $ac_status" >&5 | 15215 | echo "$as_me:15215: \$? = $ac_status" >&5 |
14680 | (exit $ac_status); } && | 15216 | (exit $ac_status); } && |
14681 | { ac_try='test -s conftest.$ac_objext' | 15217 | { ac_try='test -s conftest.$ac_objext' |
14682 | { (eval echo "$as_me:14682: \"$ac_try\"") >&5 | 15218 | { (eval echo "$as_me:15218: \"$ac_try\"") >&5 |
14683 | (eval $ac_try) 2>&5 | 15219 | (eval $ac_try) 2>&5 |
14684 | ac_status=$? | 15220 | ac_status=$? |
14685 | echo "$as_me:14685: \$? = $ac_status" >&5 | 15221 | echo "$as_me:15221: \$? = $ac_status" >&5 |
14686 | (exit $ac_status); }; }; then | 15222 | (exit $ac_status); }; }; then |
14687 | ac_cv_member_HEADER_ad=yes | 15223 | ac_cv_member_HEADER_ad=yes |
14688 | else | 15224 | else |
@@ -14692,7 +15228,7 @@ ac_cv_member_HEADER_ad=no | |||
14692 | fi | 15228 | fi |
14693 | rm -f conftest.$ac_objext conftest.$ac_ext | 15229 | rm -f conftest.$ac_objext conftest.$ac_ext |
14694 | fi | 15230 | fi |
14695 | echo "$as_me:14695: result: $ac_cv_member_HEADER_ad" >&5 | 15231 | echo "$as_me:15231: result: $ac_cv_member_HEADER_ad" >&5 |
14696 | echo "${ECHO_T}$ac_cv_member_HEADER_ad" >&6 | 15232 | echo "${ECHO_T}$ac_cv_member_HEADER_ad" >&6 |
14697 | if test $ac_cv_member_HEADER_ad = yes; then | 15233 | if test $ac_cv_member_HEADER_ad = yes; then |
14698 | cat >>confdefs.h <<\EOF | 15234 | cat >>confdefs.h <<\EOF |
@@ -14703,34 +15239,99 @@ fi | |||
14703 | 15239 | ||
14704 | fi | 15240 | fi |
14705 | 15241 | ||
14706 | fi | ||
14707 | |||
14708 | fi; | ||
14709 | |||
14710 | # Check whether user wants Kerberos 5 support | 15242 | # Check whether user wants Kerberos 5 support |
14711 | KRB5_MSG="no" | 15243 | KRB5_MSG="no" |
14712 | 15244 | ||
14713 | # Check whether --with-kerberos5 or --without-kerberos5 was given. | 15245 | # Check whether --with-kerberos5 or --without-kerberos5 was given. |
14714 | if test "${with_kerberos5+set}" = set; then | 15246 | if test "${with_kerberos5+set}" = set; then |
14715 | withval="$with_kerberos5" | 15247 | withval="$with_kerberos5" |
15248 | if test "x$withval" != "xno" ; then | ||
15249 | if test "x$withval" = "xyes" ; then | ||
15250 | KRB5ROOT="/usr/local" | ||
15251 | else | ||
15252 | KRB5ROOT=${withval} | ||
15253 | fi | ||
14716 | 15254 | ||
14717 | if test "x$withval" != "xno" ; then | 15255 | cat >>confdefs.h <<\EOF |
14718 | if test "x$withval" = "xyes" ; then | ||
14719 | KRB5ROOT="/usr/local" | ||
14720 | else | ||
14721 | KRB5ROOT=${withval} | ||
14722 | fi | ||
14723 | CPPFLAGS="$CPPFLAGS -I${KRB5ROOT}/include" | ||
14724 | LDFLAGS="$LDFLAGS -L${KRB5ROOT}/lib" | ||
14725 | cat >>confdefs.h <<\EOF | ||
14726 | #define KRB5 1 | 15256 | #define KRB5 1 |
14727 | EOF | 15257 | EOF |
14728 | 15258 | ||
14729 | KRB5_MSG="yes" | 15259 | KRB5_MSG="yes" |
14730 | echo "$as_me:14730: checking whether we are using Heimdal" >&5 | 15260 | |
15261 | echo "$as_me:15261: checking for krb5-config" >&5 | ||
15262 | echo $ECHO_N "checking for krb5-config... $ECHO_C" >&6 | ||
15263 | if test -x $KRB5ROOT/bin/krb5-config ; then | ||
15264 | KRB5CONF=$KRB5ROOT/bin/krb5-config | ||
15265 | echo "$as_me:15265: result: $KRB5CONF" >&5 | ||
15266 | echo "${ECHO_T}$KRB5CONF" >&6 | ||
15267 | |||
15268 | echo "$as_me:15268: checking for gssapi support" >&5 | ||
15269 | echo $ECHO_N "checking for gssapi support... $ECHO_C" >&6 | ||
15270 | if $KRB5CONF | grep gssapi >/dev/null ; then | ||
15271 | echo "$as_me:15271: result: yes" >&5 | ||
15272 | echo "${ECHO_T}yes" >&6 | ||
15273 | cat >>confdefs.h <<\EOF | ||
15274 | #define GSSAPI 1 | ||
15275 | EOF | ||
15276 | |||
15277 | k5confopts=gssapi | ||
15278 | else | ||
15279 | echo "$as_me:15279: result: no" >&5 | ||
15280 | echo "${ECHO_T}no" >&6 | ||
15281 | k5confopts="" | ||
15282 | fi | ||
15283 | K5CFLAGS="`$KRB5CONF --cflags $k5confopts`" | ||
15284 | K5LIBS="`$KRB5CONF --libs $k5confopts`" | ||
15285 | CPPFLAGS="$CPPFLAGS $K5CFLAGS" | ||
15286 | echo "$as_me:15286: checking whether we are using Heimdal" >&5 | ||
15287 | echo $ECHO_N "checking whether we are using Heimdal... $ECHO_C" >&6 | ||
15288 | cat >conftest.$ac_ext <<_ACEOF | ||
15289 | #line 15289 "configure" | ||
15290 | #include "confdefs.h" | ||
15291 | #include <krb5.h> | ||
15292 | int | ||
15293 | main () | ||
15294 | { | ||
15295 | char *tmp = heimdal_version; | ||
15296 | ; | ||
15297 | return 0; | ||
15298 | } | ||
15299 | _ACEOF | ||
15300 | rm -f conftest.$ac_objext | ||
15301 | if { (eval echo "$as_me:15301: \"$ac_compile\"") >&5 | ||
15302 | (eval $ac_compile) 2>&5 | ||
15303 | ac_status=$? | ||
15304 | echo "$as_me:15304: \$? = $ac_status" >&5 | ||
15305 | (exit $ac_status); } && | ||
15306 | { ac_try='test -s conftest.$ac_objext' | ||
15307 | { (eval echo "$as_me:15307: \"$ac_try\"") >&5 | ||
15308 | (eval $ac_try) 2>&5 | ||
15309 | ac_status=$? | ||
15310 | echo "$as_me:15310: \$? = $ac_status" >&5 | ||
15311 | (exit $ac_status); }; }; then | ||
15312 | echo "$as_me:15312: result: yes" >&5 | ||
15313 | echo "${ECHO_T}yes" >&6 | ||
15314 | cat >>confdefs.h <<\EOF | ||
15315 | #define HEIMDAL 1 | ||
15316 | EOF | ||
15317 | |||
15318 | else | ||
15319 | echo "$as_me: failed program was:" >&5 | ||
15320 | cat conftest.$ac_ext >&5 | ||
15321 | echo "$as_me:15321: result: no" >&5 | ||
15322 | echo "${ECHO_T}no" >&6 | ||
15323 | |||
15324 | fi | ||
15325 | rm -f conftest.$ac_objext conftest.$ac_ext | ||
15326 | else | ||
15327 | echo "$as_me:15327: result: no" >&5 | ||
15328 | echo "${ECHO_T}no" >&6 | ||
15329 | CPPFLAGS="$CPPFLAGS -I${KRB5ROOT}/include" | ||
15330 | LDFLAGS="$LDFLAGS -L${KRB5ROOT}/lib" | ||
15331 | echo "$as_me:15331: checking whether we are using Heimdal" >&5 | ||
14731 | echo $ECHO_N "checking whether we are using Heimdal... $ECHO_C" >&6 | 15332 | echo $ECHO_N "checking whether we are using Heimdal... $ECHO_C" >&6 |
14732 | cat >conftest.$ac_ext <<_ACEOF | 15333 | cat >conftest.$ac_ext <<_ACEOF |
14733 | #line 14733 "configure" | 15334 | #line 15334 "configure" |
14734 | #include "confdefs.h" | 15335 | #include "confdefs.h" |
14735 | #include <krb5.h> | 15336 | #include <krb5.h> |
14736 | int | 15337 | int |
@@ -14742,41 +15343,35 @@ main () | |||
14742 | } | 15343 | } |
14743 | _ACEOF | 15344 | _ACEOF |
14744 | rm -f conftest.$ac_objext | 15345 | rm -f conftest.$ac_objext |
14745 | if { (eval echo "$as_me:14745: \"$ac_compile\"") >&5 | 15346 | if { (eval echo "$as_me:15346: \"$ac_compile\"") >&5 |
14746 | (eval $ac_compile) 2>&5 | 15347 | (eval $ac_compile) 2>&5 |
14747 | ac_status=$? | 15348 | ac_status=$? |
14748 | echo "$as_me:14748: \$? = $ac_status" >&5 | 15349 | echo "$as_me:15349: \$? = $ac_status" >&5 |
14749 | (exit $ac_status); } && | 15350 | (exit $ac_status); } && |
14750 | { ac_try='test -s conftest.$ac_objext' | 15351 | { ac_try='test -s conftest.$ac_objext' |
14751 | { (eval echo "$as_me:14751: \"$ac_try\"") >&5 | 15352 | { (eval echo "$as_me:15352: \"$ac_try\"") >&5 |
14752 | (eval $ac_try) 2>&5 | 15353 | (eval $ac_try) 2>&5 |
14753 | ac_status=$? | 15354 | ac_status=$? |
14754 | echo "$as_me:14754: \$? = $ac_status" >&5 | 15355 | echo "$as_me:15355: \$? = $ac_status" >&5 |
14755 | (exit $ac_status); }; }; then | 15356 | (exit $ac_status); }; }; then |
14756 | echo "$as_me:14756: result: yes" >&5 | 15357 | echo "$as_me:15357: result: yes" >&5 |
14757 | echo "${ECHO_T}yes" >&6 | 15358 | echo "${ECHO_T}yes" >&6 |
14758 | cat >>confdefs.h <<\EOF | 15359 | cat >>confdefs.h <<\EOF |
14759 | #define HEIMDAL 1 | 15360 | #define HEIMDAL 1 |
14760 | EOF | 15361 | EOF |
14761 | 15362 | ||
14762 | K5LIBS="-lkrb5 -ldes -lcom_err -lasn1 -lroken" | 15363 | K5LIBS="-lkrb5 -ldes -lcom_err -lasn1 -lroken" |
14763 | 15364 | ||
14764 | else | 15365 | else |
14765 | echo "$as_me: failed program was:" >&5 | 15366 | echo "$as_me: failed program was:" >&5 |
14766 | cat conftest.$ac_ext >&5 | 15367 | cat conftest.$ac_ext >&5 |
14767 | echo "$as_me:14767: result: no" >&5 | 15368 | echo "$as_me:15368: result: no" >&5 |
14768 | echo "${ECHO_T}no" >&6 | 15369 | echo "${ECHO_T}no" >&6 |
14769 | K5LIBS="-lkrb5 -lk5crypto -lcom_err" | 15370 | K5LIBS="-lkrb5 -lk5crypto -lcom_err" |
14770 | 15371 | ||
14771 | fi | 15372 | fi |
14772 | rm -f conftest.$ac_objext conftest.$ac_ext | 15373 | rm -f conftest.$ac_objext conftest.$ac_ext |
14773 | if test ! -z "$need_dash_r" ; then | 15374 | echo "$as_me:15374: checking for library containing dn_expand" >&5 |
14774 | LDFLAGS="$LDFLAGS -R${KRB5ROOT}/lib" | ||
14775 | fi | ||
14776 | if test ! -z "$blibpath" ; then | ||
14777 | blibpath="$blibpath:${KRB5ROOT}/lib" | ||
14778 | fi | ||
14779 | echo "$as_me:14779: checking for library containing dn_expand" >&5 | ||
14780 | echo $ECHO_N "checking for library containing dn_expand... $ECHO_C" >&6 | 15375 | echo $ECHO_N "checking for library containing dn_expand... $ECHO_C" >&6 |
14781 | if test "${ac_cv_search_dn_expand+set}" = set; then | 15376 | if test "${ac_cv_search_dn_expand+set}" = set; then |
14782 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 15377 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -14784,7 +15379,7 @@ else | |||
14784 | ac_func_search_save_LIBS=$LIBS | 15379 | ac_func_search_save_LIBS=$LIBS |
14785 | ac_cv_search_dn_expand=no | 15380 | ac_cv_search_dn_expand=no |
14786 | cat >conftest.$ac_ext <<_ACEOF | 15381 | cat >conftest.$ac_ext <<_ACEOF |
14787 | #line 14787 "configure" | 15382 | #line 15382 "configure" |
14788 | #include "confdefs.h" | 15383 | #include "confdefs.h" |
14789 | 15384 | ||
14790 | /* Override any gcc2 internal prototype to avoid an error. */ | 15385 | /* Override any gcc2 internal prototype to avoid an error. */ |
@@ -14803,16 +15398,16 @@ dn_expand (); | |||
14803 | } | 15398 | } |
14804 | _ACEOF | 15399 | _ACEOF |
14805 | rm -f conftest.$ac_objext conftest$ac_exeext | 15400 | rm -f conftest.$ac_objext conftest$ac_exeext |
14806 | if { (eval echo "$as_me:14806: \"$ac_link\"") >&5 | 15401 | if { (eval echo "$as_me:15401: \"$ac_link\"") >&5 |
14807 | (eval $ac_link) 2>&5 | 15402 | (eval $ac_link) 2>&5 |
14808 | ac_status=$? | 15403 | ac_status=$? |
14809 | echo "$as_me:14809: \$? = $ac_status" >&5 | 15404 | echo "$as_me:15404: \$? = $ac_status" >&5 |
14810 | (exit $ac_status); } && | 15405 | (exit $ac_status); } && |
14811 | { ac_try='test -s conftest$ac_exeext' | 15406 | { ac_try='test -s conftest$ac_exeext' |
14812 | { (eval echo "$as_me:14812: \"$ac_try\"") >&5 | 15407 | { (eval echo "$as_me:15407: \"$ac_try\"") >&5 |
14813 | (eval $ac_try) 2>&5 | 15408 | (eval $ac_try) 2>&5 |
14814 | ac_status=$? | 15409 | ac_status=$? |
14815 | echo "$as_me:14815: \$? = $ac_status" >&5 | 15410 | echo "$as_me:15410: \$? = $ac_status" >&5 |
14816 | (exit $ac_status); }; }; then | 15411 | (exit $ac_status); }; }; then |
14817 | ac_cv_search_dn_expand="none required" | 15412 | ac_cv_search_dn_expand="none required" |
14818 | else | 15413 | else |
@@ -14824,7 +15419,7 @@ if test "$ac_cv_search_dn_expand" = no; then | |||
14824 | for ac_lib in resolv; do | 15419 | for ac_lib in resolv; do |
14825 | LIBS="-l$ac_lib $ac_func_search_save_LIBS" | 15420 | LIBS="-l$ac_lib $ac_func_search_save_LIBS" |
14826 | cat >conftest.$ac_ext <<_ACEOF | 15421 | cat >conftest.$ac_ext <<_ACEOF |
14827 | #line 14827 "configure" | 15422 | #line 15422 "configure" |
14828 | #include "confdefs.h" | 15423 | #include "confdefs.h" |
14829 | 15424 | ||
14830 | /* Override any gcc2 internal prototype to avoid an error. */ | 15425 | /* Override any gcc2 internal prototype to avoid an error. */ |
@@ -14843,16 +15438,16 @@ dn_expand (); | |||
14843 | } | 15438 | } |
14844 | _ACEOF | 15439 | _ACEOF |
14845 | rm -f conftest.$ac_objext conftest$ac_exeext | 15440 | rm -f conftest.$ac_objext conftest$ac_exeext |
14846 | if { (eval echo "$as_me:14846: \"$ac_link\"") >&5 | 15441 | if { (eval echo "$as_me:15441: \"$ac_link\"") >&5 |
14847 | (eval $ac_link) 2>&5 | 15442 | (eval $ac_link) 2>&5 |
14848 | ac_status=$? | 15443 | ac_status=$? |
14849 | echo "$as_me:14849: \$? = $ac_status" >&5 | 15444 | echo "$as_me:15444: \$? = $ac_status" >&5 |
14850 | (exit $ac_status); } && | 15445 | (exit $ac_status); } && |
14851 | { ac_try='test -s conftest$ac_exeext' | 15446 | { ac_try='test -s conftest$ac_exeext' |
14852 | { (eval echo "$as_me:14852: \"$ac_try\"") >&5 | 15447 | { (eval echo "$as_me:15447: \"$ac_try\"") >&5 |
14853 | (eval $ac_try) 2>&5 | 15448 | (eval $ac_try) 2>&5 |
14854 | ac_status=$? | 15449 | ac_status=$? |
14855 | echo "$as_me:14855: \$? = $ac_status" >&5 | 15450 | echo "$as_me:15450: \$? = $ac_status" >&5 |
14856 | (exit $ac_status); }; }; then | 15451 | (exit $ac_status); }; }; then |
14857 | ac_cv_search_dn_expand="-l$ac_lib" | 15452 | ac_cv_search_dn_expand="-l$ac_lib" |
14858 | break | 15453 | break |
@@ -14865,14 +15460,14 @@ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | |||
14865 | fi | 15460 | fi |
14866 | LIBS=$ac_func_search_save_LIBS | 15461 | LIBS=$ac_func_search_save_LIBS |
14867 | fi | 15462 | fi |
14868 | echo "$as_me:14868: result: $ac_cv_search_dn_expand" >&5 | 15463 | echo "$as_me:15463: result: $ac_cv_search_dn_expand" >&5 |
14869 | echo "${ECHO_T}$ac_cv_search_dn_expand" >&6 | 15464 | echo "${ECHO_T}$ac_cv_search_dn_expand" >&6 |
14870 | if test "$ac_cv_search_dn_expand" != no; then | 15465 | if test "$ac_cv_search_dn_expand" != no; then |
14871 | test "$ac_cv_search_dn_expand" = "none required" || LIBS="$ac_cv_search_dn_expand $LIBS" | 15466 | test "$ac_cv_search_dn_expand" = "none required" || LIBS="$ac_cv_search_dn_expand $LIBS" |
14872 | 15467 | ||
14873 | fi | 15468 | fi |
14874 | 15469 | ||
14875 | echo "$as_me:14875: checking for gss_init_sec_context in -lgssapi" >&5 | 15470 | echo "$as_me:15470: checking for gss_init_sec_context in -lgssapi" >&5 |
14876 | echo $ECHO_N "checking for gss_init_sec_context in -lgssapi... $ECHO_C" >&6 | 15471 | echo $ECHO_N "checking for gss_init_sec_context in -lgssapi... $ECHO_C" >&6 |
14877 | if test "${ac_cv_lib_gssapi_gss_init_sec_context+set}" = set; then | 15472 | if test "${ac_cv_lib_gssapi_gss_init_sec_context+set}" = set; then |
14878 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 15473 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -14880,7 +15475,7 @@ else | |||
14880 | ac_check_lib_save_LIBS=$LIBS | 15475 | ac_check_lib_save_LIBS=$LIBS |
14881 | LIBS="-lgssapi $K5LIBS $LIBS" | 15476 | LIBS="-lgssapi $K5LIBS $LIBS" |
14882 | cat >conftest.$ac_ext <<_ACEOF | 15477 | cat >conftest.$ac_ext <<_ACEOF |
14883 | #line 14883 "configure" | 15478 | #line 15478 "configure" |
14884 | #include "confdefs.h" | 15479 | #include "confdefs.h" |
14885 | 15480 | ||
14886 | /* Override any gcc2 internal prototype to avoid an error. */ | 15481 | /* Override any gcc2 internal prototype to avoid an error. */ |
@@ -14899,16 +15494,16 @@ gss_init_sec_context (); | |||
14899 | } | 15494 | } |
14900 | _ACEOF | 15495 | _ACEOF |
14901 | rm -f conftest.$ac_objext conftest$ac_exeext | 15496 | rm -f conftest.$ac_objext conftest$ac_exeext |
14902 | if { (eval echo "$as_me:14902: \"$ac_link\"") >&5 | 15497 | if { (eval echo "$as_me:15497: \"$ac_link\"") >&5 |
14903 | (eval $ac_link) 2>&5 | 15498 | (eval $ac_link) 2>&5 |
14904 | ac_status=$? | 15499 | ac_status=$? |
14905 | echo "$as_me:14905: \$? = $ac_status" >&5 | 15500 | echo "$as_me:15500: \$? = $ac_status" >&5 |
14906 | (exit $ac_status); } && | 15501 | (exit $ac_status); } && |
14907 | { ac_try='test -s conftest$ac_exeext' | 15502 | { ac_try='test -s conftest$ac_exeext' |
14908 | { (eval echo "$as_me:14908: \"$ac_try\"") >&5 | 15503 | { (eval echo "$as_me:15503: \"$ac_try\"") >&5 |
14909 | (eval $ac_try) 2>&5 | 15504 | (eval $ac_try) 2>&5 |
14910 | ac_status=$? | 15505 | ac_status=$? |
14911 | echo "$as_me:14911: \$? = $ac_status" >&5 | 15506 | echo "$as_me:15506: \$? = $ac_status" >&5 |
14912 | (exit $ac_status); }; }; then | 15507 | (exit $ac_status); }; }; then |
14913 | ac_cv_lib_gssapi_gss_init_sec_context=yes | 15508 | ac_cv_lib_gssapi_gss_init_sec_context=yes |
14914 | else | 15509 | else |
@@ -14919,7 +15514,7 @@ fi | |||
14919 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 15514 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
14920 | LIBS=$ac_check_lib_save_LIBS | 15515 | LIBS=$ac_check_lib_save_LIBS |
14921 | fi | 15516 | fi |
14922 | echo "$as_me:14922: result: $ac_cv_lib_gssapi_gss_init_sec_context" >&5 | 15517 | echo "$as_me:15517: result: $ac_cv_lib_gssapi_gss_init_sec_context" >&5 |
14923 | echo "${ECHO_T}$ac_cv_lib_gssapi_gss_init_sec_context" >&6 | 15518 | echo "${ECHO_T}$ac_cv_lib_gssapi_gss_init_sec_context" >&6 |
14924 | if test $ac_cv_lib_gssapi_gss_init_sec_context = yes; then | 15519 | if test $ac_cv_lib_gssapi_gss_init_sec_context = yes; then |
14925 | cat >>confdefs.h <<\EOF | 15520 | cat >>confdefs.h <<\EOF |
@@ -14928,7 +15523,7 @@ EOF | |||
14928 | 15523 | ||
14929 | K5LIBS="-lgssapi $K5LIBS" | 15524 | K5LIBS="-lgssapi $K5LIBS" |
14930 | else | 15525 | else |
14931 | echo "$as_me:14931: checking for gss_init_sec_context in -lgssapi_krb5" >&5 | 15526 | echo "$as_me:15526: checking for gss_init_sec_context in -lgssapi_krb5" >&5 |
14932 | echo $ECHO_N "checking for gss_init_sec_context in -lgssapi_krb5... $ECHO_C" >&6 | 15527 | echo $ECHO_N "checking for gss_init_sec_context in -lgssapi_krb5... $ECHO_C" >&6 |
14933 | if test "${ac_cv_lib_gssapi_krb5_gss_init_sec_context+set}" = set; then | 15528 | if test "${ac_cv_lib_gssapi_krb5_gss_init_sec_context+set}" = set; then |
14934 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 15529 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -14936,7 +15531,7 @@ else | |||
14936 | ac_check_lib_save_LIBS=$LIBS | 15531 | ac_check_lib_save_LIBS=$LIBS |
14937 | LIBS="-lgssapi_krb5 $K5LIBS $LIBS" | 15532 | LIBS="-lgssapi_krb5 $K5LIBS $LIBS" |
14938 | cat >conftest.$ac_ext <<_ACEOF | 15533 | cat >conftest.$ac_ext <<_ACEOF |
14939 | #line 14939 "configure" | 15534 | #line 15534 "configure" |
14940 | #include "confdefs.h" | 15535 | #include "confdefs.h" |
14941 | 15536 | ||
14942 | /* Override any gcc2 internal prototype to avoid an error. */ | 15537 | /* Override any gcc2 internal prototype to avoid an error. */ |
@@ -14955,16 +15550,16 @@ gss_init_sec_context (); | |||
14955 | } | 15550 | } |
14956 | _ACEOF | 15551 | _ACEOF |
14957 | rm -f conftest.$ac_objext conftest$ac_exeext | 15552 | rm -f conftest.$ac_objext conftest$ac_exeext |
14958 | if { (eval echo "$as_me:14958: \"$ac_link\"") >&5 | 15553 | if { (eval echo "$as_me:15553: \"$ac_link\"") >&5 |
14959 | (eval $ac_link) 2>&5 | 15554 | (eval $ac_link) 2>&5 |
14960 | ac_status=$? | 15555 | ac_status=$? |
14961 | echo "$as_me:14961: \$? = $ac_status" >&5 | 15556 | echo "$as_me:15556: \$? = $ac_status" >&5 |
14962 | (exit $ac_status); } && | 15557 | (exit $ac_status); } && |
14963 | { ac_try='test -s conftest$ac_exeext' | 15558 | { ac_try='test -s conftest$ac_exeext' |
14964 | { (eval echo "$as_me:14964: \"$ac_try\"") >&5 | 15559 | { (eval echo "$as_me:15559: \"$ac_try\"") >&5 |
14965 | (eval $ac_try) 2>&5 | 15560 | (eval $ac_try) 2>&5 |
14966 | ac_status=$? | 15561 | ac_status=$? |
14967 | echo "$as_me:14967: \$? = $ac_status" >&5 | 15562 | echo "$as_me:15562: \$? = $ac_status" >&5 |
14968 | (exit $ac_status); }; }; then | 15563 | (exit $ac_status); }; }; then |
14969 | ac_cv_lib_gssapi_krb5_gss_init_sec_context=yes | 15564 | ac_cv_lib_gssapi_krb5_gss_init_sec_context=yes |
14970 | else | 15565 | else |
@@ -14975,38 +15570,38 @@ fi | |||
14975 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | 15570 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext |
14976 | LIBS=$ac_check_lib_save_LIBS | 15571 | LIBS=$ac_check_lib_save_LIBS |
14977 | fi | 15572 | fi |
14978 | echo "$as_me:14978: result: $ac_cv_lib_gssapi_krb5_gss_init_sec_context" >&5 | 15573 | echo "$as_me:15573: result: $ac_cv_lib_gssapi_krb5_gss_init_sec_context" >&5 |
14979 | echo "${ECHO_T}$ac_cv_lib_gssapi_krb5_gss_init_sec_context" >&6 | 15574 | echo "${ECHO_T}$ac_cv_lib_gssapi_krb5_gss_init_sec_context" >&6 |
14980 | if test $ac_cv_lib_gssapi_krb5_gss_init_sec_context = yes; then | 15575 | if test $ac_cv_lib_gssapi_krb5_gss_init_sec_context = yes; then |
14981 | cat >>confdefs.h <<\EOF | 15576 | cat >>confdefs.h <<\EOF |
14982 | #define GSSAPI 1 | 15577 | #define GSSAPI 1 |
14983 | EOF | 15578 | EOF |
14984 | 15579 | ||
14985 | K5LIBS="-lgssapi_krb5 $K5LIBS" | 15580 | K5LIBS="-lgssapi_krb5 $K5LIBS" |
14986 | else | 15581 | else |
14987 | { echo "$as_me:14987: WARNING: Cannot find any suitable gss-api library - build may fail" >&5 | 15582 | { echo "$as_me:15582: WARNING: Cannot find any suitable gss-api library - build may fail" >&5 |
14988 | echo "$as_me: WARNING: Cannot find any suitable gss-api library - build may fail" >&2;} | 15583 | echo "$as_me: WARNING: Cannot find any suitable gss-api library - build may fail" >&2;} |
14989 | fi | 15584 | fi |
14990 | 15585 | ||
14991 | fi | 15586 | fi |
14992 | 15587 | ||
14993 | echo "$as_me:14993: checking for gssapi.h" >&5 | 15588 | echo "$as_me:15588: checking for gssapi.h" >&5 |
14994 | echo $ECHO_N "checking for gssapi.h... $ECHO_C" >&6 | 15589 | echo $ECHO_N "checking for gssapi.h... $ECHO_C" >&6 |
14995 | if test "${ac_cv_header_gssapi_h+set}" = set; then | 15590 | if test "${ac_cv_header_gssapi_h+set}" = set; then |
14996 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 15591 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
14997 | else | 15592 | else |
14998 | cat >conftest.$ac_ext <<_ACEOF | 15593 | cat >conftest.$ac_ext <<_ACEOF |
14999 | #line 14999 "configure" | 15594 | #line 15594 "configure" |
15000 | #include "confdefs.h" | 15595 | #include "confdefs.h" |
15001 | #include <gssapi.h> | 15596 | #include <gssapi.h> |
15002 | _ACEOF | 15597 | _ACEOF |
15003 | if { (eval echo "$as_me:15003: \"$ac_cpp conftest.$ac_ext\"") >&5 | 15598 | if { (eval echo "$as_me:15598: \"$ac_cpp conftest.$ac_ext\"") >&5 |
15004 | (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 | 15599 | (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 |
15005 | ac_status=$? | 15600 | ac_status=$? |
15006 | egrep -v '^ *\+' conftest.er1 >conftest.err | 15601 | egrep -v '^ *\+' conftest.er1 >conftest.err |
15007 | rm -f conftest.er1 | 15602 | rm -f conftest.er1 |
15008 | cat conftest.err >&5 | 15603 | cat conftest.err >&5 |
15009 | echo "$as_me:15009: \$? = $ac_status" >&5 | 15604 | echo "$as_me:15604: \$? = $ac_status" >&5 |
15010 | (exit $ac_status); } >/dev/null; then | 15605 | (exit $ac_status); } >/dev/null; then |
15011 | if test -s conftest.err; then | 15606 | if test -s conftest.err; then |
15012 | ac_cpp_err=$ac_c_preproc_warn_flag | 15607 | ac_cpp_err=$ac_c_preproc_warn_flag |
@@ -15025,7 +15620,7 @@ else | |||
15025 | fi | 15620 | fi |
15026 | rm -f conftest.err conftest.$ac_ext | 15621 | rm -f conftest.err conftest.$ac_ext |
15027 | fi | 15622 | fi |
15028 | echo "$as_me:15028: result: $ac_cv_header_gssapi_h" >&5 | 15623 | echo "$as_me:15623: result: $ac_cv_header_gssapi_h" >&5 |
15029 | echo "${ECHO_T}$ac_cv_header_gssapi_h" >&6 | 15624 | echo "${ECHO_T}$ac_cv_header_gssapi_h" >&6 |
15030 | if test $ac_cv_header_gssapi_h = yes; then | 15625 | if test $ac_cv_header_gssapi_h = yes; then |
15031 | : | 15626 | : |
@@ -15036,23 +15631,23 @@ else | |||
15036 | for ac_header in gssapi.h | 15631 | for ac_header in gssapi.h |
15037 | do | 15632 | do |
15038 | as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` | 15633 | as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` |
15039 | echo "$as_me:15039: checking for $ac_header" >&5 | 15634 | echo "$as_me:15634: checking for $ac_header" >&5 |
15040 | echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 | 15635 | echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 |
15041 | if eval "test \"\${$as_ac_Header+set}\" = set"; then | 15636 | if eval "test \"\${$as_ac_Header+set}\" = set"; then |
15042 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 15637 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
15043 | else | 15638 | else |
15044 | cat >conftest.$ac_ext <<_ACEOF | 15639 | cat >conftest.$ac_ext <<_ACEOF |
15045 | #line 15045 "configure" | 15640 | #line 15640 "configure" |
15046 | #include "confdefs.h" | 15641 | #include "confdefs.h" |
15047 | #include <$ac_header> | 15642 | #include <$ac_header> |
15048 | _ACEOF | 15643 | _ACEOF |
15049 | if { (eval echo "$as_me:15049: \"$ac_cpp conftest.$ac_ext\"") >&5 | 15644 | if { (eval echo "$as_me:15644: \"$ac_cpp conftest.$ac_ext\"") >&5 |
15050 | (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 | 15645 | (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 |
15051 | ac_status=$? | 15646 | ac_status=$? |
15052 | egrep -v '^ *\+' conftest.er1 >conftest.err | 15647 | egrep -v '^ *\+' conftest.er1 >conftest.err |
15053 | rm -f conftest.er1 | 15648 | rm -f conftest.er1 |
15054 | cat conftest.err >&5 | 15649 | cat conftest.err >&5 |
15055 | echo "$as_me:15055: \$? = $ac_status" >&5 | 15650 | echo "$as_me:15650: \$? = $ac_status" >&5 |
15056 | (exit $ac_status); } >/dev/null; then | 15651 | (exit $ac_status); } >/dev/null; then |
15057 | if test -s conftest.err; then | 15652 | if test -s conftest.err; then |
15058 | ac_cpp_err=$ac_c_preproc_warn_flag | 15653 | ac_cpp_err=$ac_c_preproc_warn_flag |
@@ -15071,7 +15666,7 @@ else | |||
15071 | fi | 15666 | fi |
15072 | rm -f conftest.err conftest.$ac_ext | 15667 | rm -f conftest.err conftest.$ac_ext |
15073 | fi | 15668 | fi |
15074 | echo "$as_me:15074: result: `eval echo '${'$as_ac_Header'}'`" >&5 | 15669 | echo "$as_me:15669: result: `eval echo '${'$as_ac_Header'}'`" >&5 |
15075 | echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 | 15670 | echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 |
15076 | if test `eval echo '${'$as_ac_Header'}'` = yes; then | 15671 | if test `eval echo '${'$as_ac_Header'}'` = yes; then |
15077 | cat >>confdefs.h <<EOF | 15672 | cat >>confdefs.h <<EOF |
@@ -15079,7 +15674,7 @@ if test `eval echo '${'$as_ac_Header'}'` = yes; then | |||
15079 | EOF | 15674 | EOF |
15080 | 15675 | ||
15081 | else | 15676 | else |
15082 | { echo "$as_me:15082: WARNING: Cannot find any suitable gss-api header - build may fail" >&5 | 15677 | { echo "$as_me:15677: WARNING: Cannot find any suitable gss-api header - build may fail" >&5 |
15083 | echo "$as_me: WARNING: Cannot find any suitable gss-api header - build may fail" >&2;} | 15678 | echo "$as_me: WARNING: Cannot find any suitable gss-api header - build may fail" >&2;} |
15084 | 15679 | ||
15085 | fi | 15680 | fi |
@@ -15089,23 +15684,23 @@ fi | |||
15089 | 15684 | ||
15090 | oldCPP="$CPPFLAGS" | 15685 | oldCPP="$CPPFLAGS" |
15091 | CPPFLAGS="$CPPFLAGS -I${KRB5ROOT}/include/gssapi" | 15686 | CPPFLAGS="$CPPFLAGS -I${KRB5ROOT}/include/gssapi" |
15092 | echo "$as_me:15092: checking for gssapi_krb5.h" >&5 | 15687 | echo "$as_me:15687: checking for gssapi_krb5.h" >&5 |
15093 | echo $ECHO_N "checking for gssapi_krb5.h... $ECHO_C" >&6 | 15688 | echo $ECHO_N "checking for gssapi_krb5.h... $ECHO_C" >&6 |
15094 | if test "${ac_cv_header_gssapi_krb5_h+set}" = set; then | 15689 | if test "${ac_cv_header_gssapi_krb5_h+set}" = set; then |
15095 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 15690 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
15096 | else | 15691 | else |
15097 | cat >conftest.$ac_ext <<_ACEOF | 15692 | cat >conftest.$ac_ext <<_ACEOF |
15098 | #line 15098 "configure" | 15693 | #line 15693 "configure" |
15099 | #include "confdefs.h" | 15694 | #include "confdefs.h" |
15100 | #include <gssapi_krb5.h> | 15695 | #include <gssapi_krb5.h> |
15101 | _ACEOF | 15696 | _ACEOF |
15102 | if { (eval echo "$as_me:15102: \"$ac_cpp conftest.$ac_ext\"") >&5 | 15697 | if { (eval echo "$as_me:15697: \"$ac_cpp conftest.$ac_ext\"") >&5 |
15103 | (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 | 15698 | (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 |
15104 | ac_status=$? | 15699 | ac_status=$? |
15105 | egrep -v '^ *\+' conftest.er1 >conftest.err | 15700 | egrep -v '^ *\+' conftest.er1 >conftest.err |
15106 | rm -f conftest.er1 | 15701 | rm -f conftest.er1 |
15107 | cat conftest.err >&5 | 15702 | cat conftest.err >&5 |
15108 | echo "$as_me:15108: \$? = $ac_status" >&5 | 15703 | echo "$as_me:15703: \$? = $ac_status" >&5 |
15109 | (exit $ac_status); } >/dev/null; then | 15704 | (exit $ac_status); } >/dev/null; then |
15110 | if test -s conftest.err; then | 15705 | if test -s conftest.err; then |
15111 | ac_cpp_err=$ac_c_preproc_warn_flag | 15706 | ac_cpp_err=$ac_c_preproc_warn_flag |
@@ -15124,7 +15719,7 @@ else | |||
15124 | fi | 15719 | fi |
15125 | rm -f conftest.err conftest.$ac_ext | 15720 | rm -f conftest.err conftest.$ac_ext |
15126 | fi | 15721 | fi |
15127 | echo "$as_me:15127: result: $ac_cv_header_gssapi_krb5_h" >&5 | 15722 | echo "$as_me:15722: result: $ac_cv_header_gssapi_krb5_h" >&5 |
15128 | echo "${ECHO_T}$ac_cv_header_gssapi_krb5_h" >&6 | 15723 | echo "${ECHO_T}$ac_cv_header_gssapi_krb5_h" >&6 |
15129 | if test $ac_cv_header_gssapi_krb5_h = yes; then | 15724 | if test $ac_cv_header_gssapi_krb5_h = yes; then |
15130 | : | 15725 | : |
@@ -15132,11 +15727,260 @@ else | |||
15132 | CPPFLAGS="$oldCPP" | 15727 | CPPFLAGS="$oldCPP" |
15133 | fi | 15728 | fi |
15134 | 15729 | ||
15135 | KRB5=yes | 15730 | fi |
15136 | fi | 15731 | if test ! -z "$need_dash_r" ; then |
15732 | LDFLAGS="$LDFLAGS -R${KRB5ROOT}/lib" | ||
15733 | fi | ||
15734 | if test ! -z "$blibpath" ; then | ||
15735 | blibpath="$blibpath:${KRB5ROOT}/lib" | ||
15736 | fi | ||
15737 | fi | ||
15738 | |||
15739 | for ac_header in gssapi.h gssapi/gssapi.h | ||
15740 | do | ||
15741 | as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` | ||
15742 | echo "$as_me:15742: checking for $ac_header" >&5 | ||
15743 | echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 | ||
15744 | if eval "test \"\${$as_ac_Header+set}\" = set"; then | ||
15745 | echo $ECHO_N "(cached) $ECHO_C" >&6 | ||
15746 | else | ||
15747 | cat >conftest.$ac_ext <<_ACEOF | ||
15748 | #line 15748 "configure" | ||
15749 | #include "confdefs.h" | ||
15750 | #include <$ac_header> | ||
15751 | _ACEOF | ||
15752 | if { (eval echo "$as_me:15752: \"$ac_cpp conftest.$ac_ext\"") >&5 | ||
15753 | (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 | ||
15754 | ac_status=$? | ||
15755 | egrep -v '^ *\+' conftest.er1 >conftest.err | ||
15756 | rm -f conftest.er1 | ||
15757 | cat conftest.err >&5 | ||
15758 | echo "$as_me:15758: \$? = $ac_status" >&5 | ||
15759 | (exit $ac_status); } >/dev/null; then | ||
15760 | if test -s conftest.err; then | ||
15761 | ac_cpp_err=$ac_c_preproc_warn_flag | ||
15762 | else | ||
15763 | ac_cpp_err= | ||
15764 | fi | ||
15765 | else | ||
15766 | ac_cpp_err=yes | ||
15767 | fi | ||
15768 | if test -z "$ac_cpp_err"; then | ||
15769 | eval "$as_ac_Header=yes" | ||
15770 | else | ||
15771 | echo "$as_me: failed program was:" >&5 | ||
15772 | cat conftest.$ac_ext >&5 | ||
15773 | eval "$as_ac_Header=no" | ||
15774 | fi | ||
15775 | rm -f conftest.err conftest.$ac_ext | ||
15776 | fi | ||
15777 | echo "$as_me:15777: result: `eval echo '${'$as_ac_Header'}'`" >&5 | ||
15778 | echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 | ||
15779 | if test `eval echo '${'$as_ac_Header'}'` = yes; then | ||
15780 | cat >>confdefs.h <<EOF | ||
15781 | #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 | ||
15782 | EOF | ||
15783 | |||
15784 | fi | ||
15785 | done | ||
15786 | |||
15787 | for ac_header in gssapi_krb5.h gssapi/gssapi_krb5.h | ||
15788 | do | ||
15789 | as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` | ||
15790 | echo "$as_me:15790: checking for $ac_header" >&5 | ||
15791 | echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 | ||
15792 | if eval "test \"\${$as_ac_Header+set}\" = set"; then | ||
15793 | echo $ECHO_N "(cached) $ECHO_C" >&6 | ||
15794 | else | ||
15795 | cat >conftest.$ac_ext <<_ACEOF | ||
15796 | #line 15796 "configure" | ||
15797 | #include "confdefs.h" | ||
15798 | #include <$ac_header> | ||
15799 | _ACEOF | ||
15800 | if { (eval echo "$as_me:15800: \"$ac_cpp conftest.$ac_ext\"") >&5 | ||
15801 | (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 | ||
15802 | ac_status=$? | ||
15803 | egrep -v '^ *\+' conftest.er1 >conftest.err | ||
15804 | rm -f conftest.er1 | ||
15805 | cat conftest.err >&5 | ||
15806 | echo "$as_me:15806: \$? = $ac_status" >&5 | ||
15807 | (exit $ac_status); } >/dev/null; then | ||
15808 | if test -s conftest.err; then | ||
15809 | ac_cpp_err=$ac_c_preproc_warn_flag | ||
15810 | else | ||
15811 | ac_cpp_err= | ||
15812 | fi | ||
15813 | else | ||
15814 | ac_cpp_err=yes | ||
15815 | fi | ||
15816 | if test -z "$ac_cpp_err"; then | ||
15817 | eval "$as_ac_Header=yes" | ||
15818 | else | ||
15819 | echo "$as_me: failed program was:" >&5 | ||
15820 | cat conftest.$ac_ext >&5 | ||
15821 | eval "$as_ac_Header=no" | ||
15822 | fi | ||
15823 | rm -f conftest.err conftest.$ac_ext | ||
15824 | fi | ||
15825 | echo "$as_me:15825: result: `eval echo '${'$as_ac_Header'}'`" >&5 | ||
15826 | echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 | ||
15827 | if test `eval echo '${'$as_ac_Header'}'` = yes; then | ||
15828 | cat >>confdefs.h <<EOF | ||
15829 | #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 | ||
15830 | EOF | ||
15831 | |||
15832 | fi | ||
15833 | done | ||
15834 | |||
15835 | for ac_header in gssapi_generic.h gssapi/gssapi_generic.h | ||
15836 | do | ||
15837 | as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` | ||
15838 | echo "$as_me:15838: checking for $ac_header" >&5 | ||
15839 | echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 | ||
15840 | if eval "test \"\${$as_ac_Header+set}\" = set"; then | ||
15841 | echo $ECHO_N "(cached) $ECHO_C" >&6 | ||
15842 | else | ||
15843 | cat >conftest.$ac_ext <<_ACEOF | ||
15844 | #line 15844 "configure" | ||
15845 | #include "confdefs.h" | ||
15846 | #include <$ac_header> | ||
15847 | _ACEOF | ||
15848 | if { (eval echo "$as_me:15848: \"$ac_cpp conftest.$ac_ext\"") >&5 | ||
15849 | (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 | ||
15850 | ac_status=$? | ||
15851 | egrep -v '^ *\+' conftest.er1 >conftest.err | ||
15852 | rm -f conftest.er1 | ||
15853 | cat conftest.err >&5 | ||
15854 | echo "$as_me:15854: \$? = $ac_status" >&5 | ||
15855 | (exit $ac_status); } >/dev/null; then | ||
15856 | if test -s conftest.err; then | ||
15857 | ac_cpp_err=$ac_c_preproc_warn_flag | ||
15858 | else | ||
15859 | ac_cpp_err= | ||
15860 | fi | ||
15861 | else | ||
15862 | ac_cpp_err=yes | ||
15863 | fi | ||
15864 | if test -z "$ac_cpp_err"; then | ||
15865 | eval "$as_ac_Header=yes" | ||
15866 | else | ||
15867 | echo "$as_me: failed program was:" >&5 | ||
15868 | cat conftest.$ac_ext >&5 | ||
15869 | eval "$as_ac_Header=no" | ||
15870 | fi | ||
15871 | rm -f conftest.err conftest.$ac_ext | ||
15872 | fi | ||
15873 | echo "$as_me:15873: result: `eval echo '${'$as_ac_Header'}'`" >&5 | ||
15874 | echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 | ||
15875 | if test `eval echo '${'$as_ac_Header'}'` = yes; then | ||
15876 | cat >>confdefs.h <<EOF | ||
15877 | #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 | ||
15878 | EOF | ||
15879 | |||
15880 | fi | ||
15881 | done | ||
15882 | |||
15883 | LIBS="$LIBS $K5LIBS" | ||
15884 | echo "$as_me:15884: checking for library containing k_hasafs" >&5 | ||
15885 | echo $ECHO_N "checking for library containing k_hasafs... $ECHO_C" >&6 | ||
15886 | if test "${ac_cv_search_k_hasafs+set}" = set; then | ||
15887 | echo $ECHO_N "(cached) $ECHO_C" >&6 | ||
15888 | else | ||
15889 | ac_func_search_save_LIBS=$LIBS | ||
15890 | ac_cv_search_k_hasafs=no | ||
15891 | cat >conftest.$ac_ext <<_ACEOF | ||
15892 | #line 15892 "configure" | ||
15893 | #include "confdefs.h" | ||
15894 | |||
15895 | /* Override any gcc2 internal prototype to avoid an error. */ | ||
15896 | #ifdef __cplusplus | ||
15897 | extern "C" | ||
15898 | #endif | ||
15899 | /* We use char because int might match the return type of a gcc2 | ||
15900 | builtin and then its argument prototype would still apply. */ | ||
15901 | char k_hasafs (); | ||
15902 | int | ||
15903 | main () | ||
15904 | { | ||
15905 | k_hasafs (); | ||
15906 | ; | ||
15907 | return 0; | ||
15908 | } | ||
15909 | _ACEOF | ||
15910 | rm -f conftest.$ac_objext conftest$ac_exeext | ||
15911 | if { (eval echo "$as_me:15911: \"$ac_link\"") >&5 | ||
15912 | (eval $ac_link) 2>&5 | ||
15913 | ac_status=$? | ||
15914 | echo "$as_me:15914: \$? = $ac_status" >&5 | ||
15915 | (exit $ac_status); } && | ||
15916 | { ac_try='test -s conftest$ac_exeext' | ||
15917 | { (eval echo "$as_me:15917: \"$ac_try\"") >&5 | ||
15918 | (eval $ac_try) 2>&5 | ||
15919 | ac_status=$? | ||
15920 | echo "$as_me:15920: \$? = $ac_status" >&5 | ||
15921 | (exit $ac_status); }; }; then | ||
15922 | ac_cv_search_k_hasafs="none required" | ||
15923 | else | ||
15924 | echo "$as_me: failed program was:" >&5 | ||
15925 | cat conftest.$ac_ext >&5 | ||
15926 | fi | ||
15927 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | ||
15928 | if test "$ac_cv_search_k_hasafs" = no; then | ||
15929 | for ac_lib in kafs; do | ||
15930 | LIBS="-l$ac_lib $ac_func_search_save_LIBS" | ||
15931 | cat >conftest.$ac_ext <<_ACEOF | ||
15932 | #line 15932 "configure" | ||
15933 | #include "confdefs.h" | ||
15934 | |||
15935 | /* Override any gcc2 internal prototype to avoid an error. */ | ||
15936 | #ifdef __cplusplus | ||
15937 | extern "C" | ||
15938 | #endif | ||
15939 | /* We use char because int might match the return type of a gcc2 | ||
15940 | builtin and then its argument prototype would still apply. */ | ||
15941 | char k_hasafs (); | ||
15942 | int | ||
15943 | main () | ||
15944 | { | ||
15945 | k_hasafs (); | ||
15946 | ; | ||
15947 | return 0; | ||
15948 | } | ||
15949 | _ACEOF | ||
15950 | rm -f conftest.$ac_objext conftest$ac_exeext | ||
15951 | if { (eval echo "$as_me:15951: \"$ac_link\"") >&5 | ||
15952 | (eval $ac_link) 2>&5 | ||
15953 | ac_status=$? | ||
15954 | echo "$as_me:15954: \$? = $ac_status" >&5 | ||
15955 | (exit $ac_status); } && | ||
15956 | { ac_try='test -s conftest$ac_exeext' | ||
15957 | { (eval echo "$as_me:15957: \"$ac_try\"") >&5 | ||
15958 | (eval $ac_try) 2>&5 | ||
15959 | ac_status=$? | ||
15960 | echo "$as_me:15960: \$? = $ac_status" >&5 | ||
15961 | (exit $ac_status); }; }; then | ||
15962 | ac_cv_search_k_hasafs="-l$ac_lib" | ||
15963 | break | ||
15964 | else | ||
15965 | echo "$as_me: failed program was:" >&5 | ||
15966 | cat conftest.$ac_ext >&5 | ||
15967 | fi | ||
15968 | rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext | ||
15969 | done | ||
15970 | fi | ||
15971 | LIBS=$ac_func_search_save_LIBS | ||
15972 | fi | ||
15973 | echo "$as_me:15973: result: $ac_cv_search_k_hasafs" >&5 | ||
15974 | echo "${ECHO_T}$ac_cv_search_k_hasafs" >&6 | ||
15975 | if test "$ac_cv_search_k_hasafs" != no; then | ||
15976 | test "$ac_cv_search_k_hasafs" = "none required" || LIBS="$ac_cv_search_k_hasafs $LIBS" | ||
15977 | cat >>confdefs.h <<\EOF | ||
15978 | #define USE_AFS 1 | ||
15979 | EOF | ||
15980 | |||
15981 | fi | ||
15137 | 15982 | ||
15138 | fi; | 15983 | fi; |
15139 | LIBS="$LIBS $K5LIBS" | ||
15140 | 15984 | ||
15141 | # Looking for programs, paths and files | 15985 | # Looking for programs, paths and files |
15142 | 15986 | ||
@@ -15169,7 +16013,7 @@ else | |||
15169 | TestPath="${TestPath}${PATH_SEPARATOR}/usr/openwin/bin" | 16013 | TestPath="${TestPath}${PATH_SEPARATOR}/usr/openwin/bin" |
15170 | # Extract the first word of "xauth", so it can be a program name with args. | 16014 | # Extract the first word of "xauth", so it can be a program name with args. |
15171 | set dummy xauth; ac_word=$2 | 16015 | set dummy xauth; ac_word=$2 |
15172 | echo "$as_me:15172: checking for $ac_word" >&5 | 16016 | echo "$as_me:16016: checking for $ac_word" >&5 |
15173 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 | 16017 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 |
15174 | if test "${ac_cv_path_xauth_path+set}" = set; then | 16018 | if test "${ac_cv_path_xauth_path+set}" = set; then |
15175 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 16019 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -15186,7 +16030,7 @@ for ac_dir in $ac_dummy; do | |||
15186 | test -z "$ac_dir" && ac_dir=. | 16030 | test -z "$ac_dir" && ac_dir=. |
15187 | if $as_executable_p "$ac_dir/$ac_word"; then | 16031 | if $as_executable_p "$ac_dir/$ac_word"; then |
15188 | ac_cv_path_xauth_path="$ac_dir/$ac_word" | 16032 | ac_cv_path_xauth_path="$ac_dir/$ac_word" |
15189 | echo "$as_me:15189: found $ac_dir/$ac_word" >&5 | 16033 | echo "$as_me:16033: found $ac_dir/$ac_word" >&5 |
15190 | break | 16034 | break |
15191 | fi | 16035 | fi |
15192 | done | 16036 | done |
@@ -15197,10 +16041,10 @@ fi | |||
15197 | xauth_path=$ac_cv_path_xauth_path | 16041 | xauth_path=$ac_cv_path_xauth_path |
15198 | 16042 | ||
15199 | if test -n "$xauth_path"; then | 16043 | if test -n "$xauth_path"; then |
15200 | echo "$as_me:15200: result: $xauth_path" >&5 | 16044 | echo "$as_me:16044: result: $xauth_path" >&5 |
15201 | echo "${ECHO_T}$xauth_path" >&6 | 16045 | echo "${ECHO_T}$xauth_path" >&6 |
15202 | else | 16046 | else |
15203 | echo "$as_me:15203: result: no" >&5 | 16047 | echo "$as_me:16047: result: no" >&5 |
15204 | echo "${ECHO_T}no" >&6 | 16048 | echo "${ECHO_T}no" >&6 |
15205 | fi | 16049 | fi |
15206 | 16050 | ||
@@ -15244,13 +16088,13 @@ fi | |||
15244 | 16088 | ||
15245 | if test -z "$no_dev_ptmx" ; then | 16089 | if test -z "$no_dev_ptmx" ; then |
15246 | if test "x$disable_ptmx_check" != "xyes" ; then | 16090 | if test "x$disable_ptmx_check" != "xyes" ; then |
15247 | echo "$as_me:15247: checking for \"/dev/ptmx\"" >&5 | 16091 | echo "$as_me:16091: checking for \"/dev/ptmx\"" >&5 |
15248 | echo $ECHO_N "checking for \"/dev/ptmx\"... $ECHO_C" >&6 | 16092 | echo $ECHO_N "checking for \"/dev/ptmx\"... $ECHO_C" >&6 |
15249 | if test "${ac_cv_file___dev_ptmx_+set}" = set; then | 16093 | if test "${ac_cv_file___dev_ptmx_+set}" = set; then |
15250 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 16094 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
15251 | else | 16095 | else |
15252 | test "$cross_compiling" = yes && | 16096 | test "$cross_compiling" = yes && |
15253 | { { echo "$as_me:15253: error: cannot check for file existence when cross compiling" >&5 | 16097 | { { echo "$as_me:16097: error: cannot check for file existence when cross compiling" >&5 |
15254 | echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} | 16098 | echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} |
15255 | { (exit 1); exit 1; }; } | 16099 | { (exit 1); exit 1; }; } |
15256 | if test -r ""/dev/ptmx""; then | 16100 | if test -r ""/dev/ptmx""; then |
@@ -15259,7 +16103,7 @@ else | |||
15259 | ac_cv_file___dev_ptmx_=no | 16103 | ac_cv_file___dev_ptmx_=no |
15260 | fi | 16104 | fi |
15261 | fi | 16105 | fi |
15262 | echo "$as_me:15262: result: $ac_cv_file___dev_ptmx_" >&5 | 16106 | echo "$as_me:16106: result: $ac_cv_file___dev_ptmx_" >&5 |
15263 | echo "${ECHO_T}$ac_cv_file___dev_ptmx_" >&6 | 16107 | echo "${ECHO_T}$ac_cv_file___dev_ptmx_" >&6 |
15264 | if test $ac_cv_file___dev_ptmx_ = yes; then | 16108 | if test $ac_cv_file___dev_ptmx_ = yes; then |
15265 | 16109 | ||
@@ -15273,13 +16117,13 @@ fi | |||
15273 | 16117 | ||
15274 | fi | 16118 | fi |
15275 | fi | 16119 | fi |
15276 | echo "$as_me:15276: checking for \"/dev/ptc\"" >&5 | 16120 | echo "$as_me:16120: checking for \"/dev/ptc\"" >&5 |
15277 | echo $ECHO_N "checking for \"/dev/ptc\"... $ECHO_C" >&6 | 16121 | echo $ECHO_N "checking for \"/dev/ptc\"... $ECHO_C" >&6 |
15278 | if test "${ac_cv_file___dev_ptc_+set}" = set; then | 16122 | if test "${ac_cv_file___dev_ptc_+set}" = set; then |
15279 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 16123 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
15280 | else | 16124 | else |
15281 | test "$cross_compiling" = yes && | 16125 | test "$cross_compiling" = yes && |
15282 | { { echo "$as_me:15282: error: cannot check for file existence when cross compiling" >&5 | 16126 | { { echo "$as_me:16126: error: cannot check for file existence when cross compiling" >&5 |
15283 | echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} | 16127 | echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} |
15284 | { (exit 1); exit 1; }; } | 16128 | { (exit 1); exit 1; }; } |
15285 | if test -r ""/dev/ptc""; then | 16129 | if test -r ""/dev/ptc""; then |
@@ -15288,7 +16132,7 @@ else | |||
15288 | ac_cv_file___dev_ptc_=no | 16132 | ac_cv_file___dev_ptc_=no |
15289 | fi | 16133 | fi |
15290 | fi | 16134 | fi |
15291 | echo "$as_me:15291: result: $ac_cv_file___dev_ptc_" >&5 | 16135 | echo "$as_me:16135: result: $ac_cv_file___dev_ptc_" >&5 |
15292 | echo "${ECHO_T}$ac_cv_file___dev_ptc_" >&6 | 16136 | echo "${ECHO_T}$ac_cv_file___dev_ptc_" >&6 |
15293 | if test $ac_cv_file___dev_ptc_ = yes; then | 16137 | if test $ac_cv_file___dev_ptc_ = yes; then |
15294 | 16138 | ||
@@ -15311,7 +16155,7 @@ if test "${with_mantype+set}" = set; then | |||
15311 | MANTYPE=$withval | 16155 | MANTYPE=$withval |
15312 | ;; | 16156 | ;; |
15313 | *) | 16157 | *) |
15314 | { { echo "$as_me:15314: error: invalid man type: $withval" >&5 | 16158 | { { echo "$as_me:16158: error: invalid man type: $withval" >&5 |
15315 | echo "$as_me: error: invalid man type: $withval" >&2;} | 16159 | echo "$as_me: error: invalid man type: $withval" >&2;} |
15316 | { (exit 1); exit 1; }; } | 16160 | { (exit 1); exit 1; }; } |
15317 | ;; | 16161 | ;; |
@@ -15324,7 +16168,7 @@ if test -z "$MANTYPE"; then | |||
15324 | do | 16168 | do |
15325 | # Extract the first word of "$ac_prog", so it can be a program name with args. | 16169 | # Extract the first word of "$ac_prog", so it can be a program name with args. |
15326 | set dummy $ac_prog; ac_word=$2 | 16170 | set dummy $ac_prog; ac_word=$2 |
15327 | echo "$as_me:15327: checking for $ac_word" >&5 | 16171 | echo "$as_me:16171: checking for $ac_word" >&5 |
15328 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 | 16172 | echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 |
15329 | if test "${ac_cv_path_NROFF+set}" = set; then | 16173 | if test "${ac_cv_path_NROFF+set}" = set; then |
15330 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 16174 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
@@ -15341,7 +16185,7 @@ for ac_dir in $ac_dummy; do | |||
15341 | test -z "$ac_dir" && ac_dir=. | 16185 | test -z "$ac_dir" && ac_dir=. |
15342 | if $as_executable_p "$ac_dir/$ac_word"; then | 16186 | if $as_executable_p "$ac_dir/$ac_word"; then |
15343 | ac_cv_path_NROFF="$ac_dir/$ac_word" | 16187 | ac_cv_path_NROFF="$ac_dir/$ac_word" |
15344 | echo "$as_me:15344: found $ac_dir/$ac_word" >&5 | 16188 | echo "$as_me:16188: found $ac_dir/$ac_word" >&5 |
15345 | break | 16189 | break |
15346 | fi | 16190 | fi |
15347 | done | 16191 | done |
@@ -15352,10 +16196,10 @@ fi | |||
15352 | NROFF=$ac_cv_path_NROFF | 16196 | NROFF=$ac_cv_path_NROFF |
15353 | 16197 | ||
15354 | if test -n "$NROFF"; then | 16198 | if test -n "$NROFF"; then |
15355 | echo "$as_me:15355: result: $NROFF" >&5 | 16199 | echo "$as_me:16199: result: $NROFF" >&5 |
15356 | echo "${ECHO_T}$NROFF" >&6 | 16200 | echo "${ECHO_T}$NROFF" >&6 |
15357 | else | 16201 | else |
15358 | echo "$as_me:15358: result: no" >&5 | 16202 | echo "$as_me:16202: result: no" >&5 |
15359 | echo "${ECHO_T}no" >&6 | 16203 | echo "${ECHO_T}no" >&6 |
15360 | fi | 16204 | fi |
15361 | 16205 | ||
@@ -15412,10 +16256,10 @@ EOF | |||
15412 | fi; | 16256 | fi; |
15413 | 16257 | ||
15414 | if test -z "$disable_shadow" ; then | 16258 | if test -z "$disable_shadow" ; then |
15415 | echo "$as_me:15415: checking if the systems has expire shadow information" >&5 | 16259 | echo "$as_me:16259: checking if the systems has expire shadow information" >&5 |
15416 | echo $ECHO_N "checking if the systems has expire shadow information... $ECHO_C" >&6 | 16260 | echo $ECHO_N "checking if the systems has expire shadow information... $ECHO_C" >&6 |
15417 | cat >conftest.$ac_ext <<_ACEOF | 16261 | cat >conftest.$ac_ext <<_ACEOF |
15418 | #line 15418 "configure" | 16262 | #line 16262 "configure" |
15419 | #include "confdefs.h" | 16263 | #include "confdefs.h" |
15420 | 16264 | ||
15421 | #include <sys/types.h> | 16265 | #include <sys/types.h> |
@@ -15431,16 +16275,16 @@ main () | |||
15431 | } | 16275 | } |
15432 | _ACEOF | 16276 | _ACEOF |
15433 | rm -f conftest.$ac_objext | 16277 | rm -f conftest.$ac_objext |
15434 | if { (eval echo "$as_me:15434: \"$ac_compile\"") >&5 | 16278 | if { (eval echo "$as_me:16278: \"$ac_compile\"") >&5 |
15435 | (eval $ac_compile) 2>&5 | 16279 | (eval $ac_compile) 2>&5 |
15436 | ac_status=$? | 16280 | ac_status=$? |
15437 | echo "$as_me:15437: \$? = $ac_status" >&5 | 16281 | echo "$as_me:16281: \$? = $ac_status" >&5 |
15438 | (exit $ac_status); } && | 16282 | (exit $ac_status); } && |
15439 | { ac_try='test -s conftest.$ac_objext' | 16283 | { ac_try='test -s conftest.$ac_objext' |
15440 | { (eval echo "$as_me:15440: \"$ac_try\"") >&5 | 16284 | { (eval echo "$as_me:16284: \"$ac_try\"") >&5 |
15441 | (eval $ac_try) 2>&5 | 16285 | (eval $ac_try) 2>&5 |
15442 | ac_status=$? | 16286 | ac_status=$? |
15443 | echo "$as_me:15443: \$? = $ac_status" >&5 | 16287 | echo "$as_me:16287: \$? = $ac_status" >&5 |
15444 | (exit $ac_status); }; }; then | 16288 | (exit $ac_status); }; }; then |
15445 | sp_expire_available=yes | 16289 | sp_expire_available=yes |
15446 | else | 16290 | else |
@@ -15451,14 +16295,14 @@ fi | |||
15451 | rm -f conftest.$ac_objext conftest.$ac_ext | 16295 | rm -f conftest.$ac_objext conftest.$ac_ext |
15452 | 16296 | ||
15453 | if test "x$sp_expire_available" = "xyes" ; then | 16297 | if test "x$sp_expire_available" = "xyes" ; then |
15454 | echo "$as_me:15454: result: yes" >&5 | 16298 | echo "$as_me:16298: result: yes" >&5 |
15455 | echo "${ECHO_T}yes" >&6 | 16299 | echo "${ECHO_T}yes" >&6 |
15456 | cat >>confdefs.h <<\EOF | 16300 | cat >>confdefs.h <<\EOF |
15457 | #define HAS_SHADOW_EXPIRE 1 | 16301 | #define HAS_SHADOW_EXPIRE 1 |
15458 | EOF | 16302 | EOF |
15459 | 16303 | ||
15460 | else | 16304 | else |
15461 | echo "$as_me:15461: result: no" >&5 | 16305 | echo "$as_me:16305: result: no" >&5 |
15462 | echo "${ECHO_T}no" >&6 | 16306 | echo "${ECHO_T}no" >&6 |
15463 | fi | 16307 | fi |
15464 | fi | 16308 | fi |
@@ -15495,13 +16339,13 @@ if test "${enable_etc_default_login+set}" = set; then | |||
15495 | 16339 | ||
15496 | else | 16340 | else |
15497 | 16341 | ||
15498 | echo "$as_me:15498: checking for \"/etc/default/login\"" >&5 | 16342 | echo "$as_me:16342: checking for \"/etc/default/login\"" >&5 |
15499 | echo $ECHO_N "checking for \"/etc/default/login\"... $ECHO_C" >&6 | 16343 | echo $ECHO_N "checking for \"/etc/default/login\"... $ECHO_C" >&6 |
15500 | if test "${ac_cv_file___etc_default_login_+set}" = set; then | 16344 | if test "${ac_cv_file___etc_default_login_+set}" = set; then |
15501 | echo $ECHO_N "(cached) $ECHO_C" >&6 | 16345 | echo $ECHO_N "(cached) $ECHO_C" >&6 |
15502 | else | 16346 | else |
15503 | test "$cross_compiling" = yes && | 16347 | test "$cross_compiling" = yes && |
15504 | { { echo "$as_me:15504: error: cannot check for file existence when cross compiling" >&5 | 16348 | { { echo "$as_me:16348: error: cannot check for file existence when cross compiling" >&5 |
15505 | echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} | 16349 | echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} |
15506 | { (exit 1); exit 1; }; } | 16350 | { (exit 1); exit 1; }; } |
15507 | if test -r ""/etc/default/login""; then | 16351 | if test -r ""/etc/default/login""; then |
@@ -15510,7 +16354,7 @@ else | |||
15510 | ac_cv_file___etc_default_login_=no | 16354 | ac_cv_file___etc_default_login_=no |
15511 | fi | 16355 | fi |
15512 | fi | 16356 | fi |
15513 | echo "$as_me:15513: result: $ac_cv_file___etc_default_login_" >&5 | 16357 | echo "$as_me:16357: result: $ac_cv_file___etc_default_login_" >&5 |
15514 | echo "${ECHO_T}$ac_cv_file___etc_default_login_" >&6 | 16358 | echo "${ECHO_T}$ac_cv_file___etc_default_login_" >&6 |
15515 | if test $ac_cv_file___etc_default_login_ = yes; then | 16359 | if test $ac_cv_file___etc_default_login_ = yes; then |
15516 | external_path_file=/etc/default/login | 16360 | external_path_file=/etc/default/login |
@@ -15538,7 +16382,7 @@ if test "${with_default_path+set}" = set; then | |||
15538 | withval="$with_default_path" | 16382 | withval="$with_default_path" |
15539 | 16383 | ||
15540 | if test "x$external_path_file" = "x/etc/login.conf" ; then | 16384 | if test "x$external_path_file" = "x/etc/login.conf" ; then |
15541 | { echo "$as_me:15541: WARNING: | 16385 | { echo "$as_me:16385: WARNING: |
15542 | --with-default-path=PATH has no effect on this system. | 16386 | --with-default-path=PATH has no effect on this system. |
15543 | Edit /etc/login.conf instead." >&5 | 16387 | Edit /etc/login.conf instead." >&5 |
15544 | echo "$as_me: WARNING: | 16388 | echo "$as_me: WARNING: |
@@ -15546,7 +16390,7 @@ echo "$as_me: WARNING: | |||
15546 | Edit /etc/login.conf instead." >&2;} | 16390 | Edit /etc/login.conf instead." >&2;} |
15547 | elif test "x$withval" != "xno" ; then | 16391 | elif test "x$withval" != "xno" ; then |
15548 | if test ! -z "$external_path_file" ; then | 16392 | if test ! -z "$external_path_file" ; then |
15549 | { echo "$as_me:15549: WARNING: | 16393 | { echo "$as_me:16393: WARNING: |
15550 | --with-default-path=PATH will only be used if PATH is not defined in | 16394 | --with-default-path=PATH will only be used if PATH is not defined in |
15551 | $external_path_file ." >&5 | 16395 | $external_path_file ." >&5 |
15552 | echo "$as_me: WARNING: | 16396 | echo "$as_me: WARNING: |
@@ -15559,11 +16403,11 @@ $external_path_file ." >&2;} | |||
15559 | 16403 | ||
15560 | else | 16404 | else |
15561 | if test "x$external_path_file" = "x/etc/login.conf" ; then | 16405 | if test "x$external_path_file" = "x/etc/login.conf" ; then |
15562 | { echo "$as_me:15562: WARNING: Make sure the path to scp is in /etc/login.conf" >&5 | 16406 | { echo "$as_me:16406: WARNING: Make sure the path to scp is in /etc/login.conf" >&5 |
15563 | echo "$as_me: WARNING: Make sure the path to scp is in /etc/login.conf" >&2;} | 16407 | echo "$as_me: WARNING: Make sure the path to scp is in /etc/login.conf" >&2;} |
15564 | else | 16408 | else |
15565 | if test ! -z "$external_path_file" ; then | 16409 | if test ! -z "$external_path_file" ; then |
15566 | { echo "$as_me:15566: WARNING: | 16410 | { echo "$as_me:16410: WARNING: |
15567 | If PATH is defined in $external_path_file, ensure the path to scp is included, | 16411 | If PATH is defined in $external_path_file, ensure the path to scp is included, |
15568 | otherwise scp will not work." >&5 | 16412 | otherwise scp will not work." >&5 |
15569 | echo "$as_me: WARNING: | 16413 | echo "$as_me: WARNING: |
@@ -15575,7 +16419,7 @@ otherwise scp will not work." >&2;} | |||
15575 | 16419 | ||
15576 | else | 16420 | else |
15577 | cat >conftest.$ac_ext <<_ACEOF | 16421 | cat >conftest.$ac_ext <<_ACEOF |
15578 | #line 15578 "configure" | 16422 | #line 16422 "configure" |
15579 | #include "confdefs.h" | 16423 | #include "confdefs.h" |
15580 | 16424 | ||
15581 | /* find out what STDPATH is */ | 16425 | /* find out what STDPATH is */ |
@@ -15612,15 +16456,15 @@ main() | |||
15612 | 16456 | ||
15613 | _ACEOF | 16457 | _ACEOF |
15614 | rm -f conftest$ac_exeext | 16458 | rm -f conftest$ac_exeext |
15615 | if { (eval echo "$as_me:15615: \"$ac_link\"") >&5 | 16459 | if { (eval echo "$as_me:16459: \"$ac_link\"") >&5 |
15616 | (eval $ac_link) 2>&5 | 16460 | (eval $ac_link) 2>&5 |
15617 | ac_status=$? | 16461 | ac_status=$? |
15618 | echo "$as_me:15618: \$? = $ac_status" >&5 | 16462 | echo "$as_me:16462: \$? = $ac_status" >&5 |
15619 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' | 16463 | (exit $ac_status); } && { ac_try='./conftest$ac_exeext' |
15620 | { (eval echo "$as_me:15620: \"$ac_try\"") >&5 | 16464 | { (eval echo "$as_me:16464: \"$ac_try\"") >&5 |
15621 | (eval $ac_try) 2>&5 | 16465 | (eval $ac_try) 2>&5 |
15622 | ac_status=$? | 16466 | ac_status=$? |
15623 | echo "$as_me:15623: \$? = $ac_status" >&5 | 16467 | echo "$as_me:16467: \$? = $ac_status" >&5 |
15624 | (exit $ac_status); }; }; then | 16468 | (exit $ac_status); }; }; then |
15625 | user_path=`cat conftest.stdpath` | 16469 | user_path=`cat conftest.stdpath` |
15626 | else | 16470 | else |
@@ -15644,7 +16488,7 @@ fi | |||
15644 | echo $user_path | grep "^$t_bindir" > /dev/null 2>&1 | 16488 | echo $user_path | grep "^$t_bindir" > /dev/null 2>&1 |
15645 | if test $? -ne 0 ; then | 16489 | if test $? -ne 0 ; then |
15646 | user_path=$user_path:$t_bindir | 16490 | user_path=$user_path:$t_bindir |
15647 | echo "$as_me:15647: result: Adding $t_bindir to USER_PATH so scp will work" >&5 | 16491 | echo "$as_me:16491: result: Adding $t_bindir to USER_PATH so scp will work" >&5 |
15648 | echo "${ECHO_T}Adding $t_bindir to USER_PATH so scp will work" >&6 | 16492 | echo "${ECHO_T}Adding $t_bindir to USER_PATH so scp will work" >&6 |
15649 | fi | 16493 | fi |
15650 | fi | 16494 | fi |
@@ -15674,7 +16518,7 @@ EOF | |||
15674 | 16518 | ||
15675 | fi; | 16519 | fi; |
15676 | 16520 | ||
15677 | echo "$as_me:15677: checking if we need to convert IPv4 in IPv6-mapped addresses" >&5 | 16521 | echo "$as_me:16521: checking if we need to convert IPv4 in IPv6-mapped addresses" >&5 |
15678 | echo $ECHO_N "checking if we need to convert IPv4 in IPv6-mapped addresses... $ECHO_C" >&6 | 16522 | echo $ECHO_N "checking if we need to convert IPv4 in IPv6-mapped addresses... $ECHO_C" >&6 |
15679 | IPV4_IN6_HACK_MSG="no" | 16523 | IPV4_IN6_HACK_MSG="no" |
15680 | 16524 | ||
@@ -15683,7 +16527,7 @@ if test "${with_4in6+set}" = set; then | |||
15683 | withval="$with_4in6" | 16527 | withval="$with_4in6" |
15684 | 16528 | ||
15685 | if test "x$withval" != "xno" ; then | 16529 | if test "x$withval" != "xno" ; then |
15686 | echo "$as_me:15686: result: yes" >&5 | 16530 | echo "$as_me:16530: result: yes" >&5 |
15687 | echo "${ECHO_T}yes" >&6 | 16531 | echo "${ECHO_T}yes" >&6 |
15688 | cat >>confdefs.h <<\EOF | 16532 | cat >>confdefs.h <<\EOF |
15689 | #define IPV4_IN_IPV6 1 | 16533 | #define IPV4_IN_IPV6 1 |
@@ -15691,14 +16535,14 @@ EOF | |||
15691 | 16535 | ||
15692 | IPV4_IN6_HACK_MSG="yes" | 16536 | IPV4_IN6_HACK_MSG="yes" |
15693 | else | 16537 | else |
15694 | echo "$as_me:15694: result: no" >&5 | 16538 | echo "$as_me:16538: result: no" >&5 |
15695 | echo "${ECHO_T}no" >&6 | 16539 | echo "${ECHO_T}no" >&6 |
15696 | fi | 16540 | fi |
15697 | 16541 | ||
15698 | else | 16542 | else |
15699 | 16543 | ||
15700 | if test "x$inet6_default_4in6" = "xyes"; then | 16544 | if test "x$inet6_default_4in6" = "xyes"; then |
15701 | echo "$as_me:15701: result: yes (default)" >&5 | 16545 | echo "$as_me:16545: result: yes (default)" >&5 |
15702 | echo "${ECHO_T}yes (default)" >&6 | 16546 | echo "${ECHO_T}yes (default)" >&6 |
15703 | cat >>confdefs.h <<\EOF | 16547 | cat >>confdefs.h <<\EOF |
15704 | #define IPV4_IN_IPV6 1 | 16548 | #define IPV4_IN_IPV6 1 |
@@ -15706,7 +16550,7 @@ EOF | |||
15706 | 16550 | ||
15707 | IPV4_IN6_HACK_MSG="yes" | 16551 | IPV4_IN6_HACK_MSG="yes" |
15708 | else | 16552 | else |
15709 | echo "$as_me:15709: result: no (default)" >&5 | 16553 | echo "$as_me:16553: result: no (default)" >&5 |
15710 | echo "${ECHO_T}no (default)" >&6 | 16554 | echo "${ECHO_T}no (default)" >&6 |
15711 | fi | 16555 | fi |
15712 | 16556 | ||
@@ -15735,7 +16579,7 @@ piddir=/var/run | |||
15735 | if test ! -d $piddir ; then | 16579 | if test ! -d $piddir ; then |
15736 | piddir=`eval echo ${sysconfdir}` | 16580 | piddir=`eval echo ${sysconfdir}` |
15737 | case $piddir in | 16581 | case $piddir in |
15738 | NONE/*) piddir=`echo $piddir | sed "s~NONE~$ac_default_prefix~"` ;; | 16582 | NONE/*) piddir=`echo $piddir | sed "s~NONE~$ac_default_prefix~"` ;; |
15739 | esac | 16583 | esac |
15740 | fi | 16584 | fi |
15741 | 16585 | ||
@@ -15746,7 +16590,7 @@ if test "${with_pid_dir+set}" = set; then | |||
15746 | if test "x$withval" != "xno" ; then | 16590 | if test "x$withval" != "xno" ; then |
15747 | piddir=$withval | 16591 | piddir=$withval |
15748 | if test ! -d $piddir ; then | 16592 | if test ! -d $piddir ; then |
15749 | { echo "$as_me:15749: WARNING: ** no $piddir directory on this system **" >&5 | 16593 | { echo "$as_me:16593: WARNING: ** no $piddir directory on this system **" >&5 |
15750 | echo "$as_me: WARNING: ** no $piddir directory on this system **" >&2;} | 16594 | echo "$as_me: WARNING: ** no $piddir directory on this system **" >&2;} |
15751 | fi | 16595 | fi |
15752 | fi | 16596 | fi |
@@ -15869,10 +16713,10 @@ EOF | |||
15869 | 16713 | ||
15870 | fi; | 16714 | fi; |
15871 | 16715 | ||
15872 | echo "$as_me:15872: checking if your system defines LASTLOG_FILE" >&5 | 16716 | echo "$as_me:16716: checking if your system defines LASTLOG_FILE" >&5 |
15873 | echo $ECHO_N "checking if your system defines LASTLOG_FILE... $ECHO_C" >&6 | 16717 | echo $ECHO_N "checking if your system defines LASTLOG_FILE... $ECHO_C" >&6 |
15874 | cat >conftest.$ac_ext <<_ACEOF | 16718 | cat >conftest.$ac_ext <<_ACEOF |
15875 | #line 15875 "configure" | 16719 | #line 16719 "configure" |
15876 | #include "confdefs.h" | 16720 | #include "confdefs.h" |
15877 | 16721 | ||
15878 | #include <sys/types.h> | 16722 | #include <sys/types.h> |
@@ -15896,29 +16740,29 @@ main () | |||
15896 | } | 16740 | } |
15897 | _ACEOF | 16741 | _ACEOF |
15898 | rm -f conftest.$ac_objext | 16742 | rm -f conftest.$ac_objext |
15899 | if { (eval echo "$as_me:15899: \"$ac_compile\"") >&5 | 16743 | if { (eval echo "$as_me:16743: \"$ac_compile\"") >&5 |
15900 | (eval $ac_compile) 2>&5 | 16744 | (eval $ac_compile) 2>&5 |
15901 | ac_status=$? | 16745 | ac_status=$? |
15902 | echo "$as_me:15902: \$? = $ac_status" >&5 | 16746 | echo "$as_me:16746: \$? = $ac_status" >&5 |
15903 | (exit $ac_status); } && | 16747 | (exit $ac_status); } && |
15904 | { ac_try='test -s conftest.$ac_objext' | 16748 | { ac_try='test -s conftest.$ac_objext' |
15905 | { (eval echo "$as_me:15905: \"$ac_try\"") >&5 | 16749 | { (eval echo "$as_me:16749: \"$ac_try\"") >&5 |
15906 | (eval $ac_try) 2>&5 | 16750 | (eval $ac_try) 2>&5 |
15907 | ac_status=$? | 16751 | ac_status=$? |
15908 | echo "$as_me:15908: \$? = $ac_status" >&5 | 16752 | echo "$as_me:16752: \$? = $ac_status" >&5 |
15909 | (exit $ac_status); }; }; then | 16753 | (exit $ac_status); }; }; then |
15910 | echo "$as_me:15910: result: yes" >&5 | 16754 | echo "$as_me:16754: result: yes" >&5 |
15911 | echo "${ECHO_T}yes" >&6 | 16755 | echo "${ECHO_T}yes" >&6 |
15912 | else | 16756 | else |
15913 | echo "$as_me: failed program was:" >&5 | 16757 | echo "$as_me: failed program was:" >&5 |
15914 | cat conftest.$ac_ext >&5 | 16758 | cat conftest.$ac_ext >&5 |
15915 | 16759 | ||
15916 | echo "$as_me:15916: result: no" >&5 | 16760 | echo "$as_me:16760: result: no" >&5 |
15917 | echo "${ECHO_T}no" >&6 | 16761 | echo "${ECHO_T}no" >&6 |
15918 | echo "$as_me:15918: checking if your system defines _PATH_LASTLOG" >&5 | 16762 | echo "$as_me:16762: checking if your system defines _PATH_LASTLOG" >&5 |
15919 | echo $ECHO_N "checking if your system defines _PATH_LASTLOG... $ECHO_C" >&6 | 16763 | echo $ECHO_N "checking if your system defines _PATH_LASTLOG... $ECHO_C" >&6 |
15920 | cat >conftest.$ac_ext <<_ACEOF | 16764 | cat >conftest.$ac_ext <<_ACEOF |
15921 | #line 15921 "configure" | 16765 | #line 16765 "configure" |
15922 | #include "confdefs.h" | 16766 | #include "confdefs.h" |
15923 | 16767 | ||
15924 | #include <sys/types.h> | 16768 | #include <sys/types.h> |
@@ -15939,24 +16783,24 @@ main () | |||
15939 | } | 16783 | } |
15940 | _ACEOF | 16784 | _ACEOF |
15941 | rm -f conftest.$ac_objext | 16785 | rm -f conftest.$ac_objext |
15942 | if { (eval echo "$as_me:15942: \"$ac_compile\"") >&5 | 16786 | if { (eval echo "$as_me:16786: \"$ac_compile\"") >&5 |
15943 | (eval $ac_compile) 2>&5 | 16787 | (eval $ac_compile) 2>&5 |
15944 | ac_status=$? | 16788 | ac_status=$? |
15945 | echo "$as_me:15945: \$? = $ac_status" >&5 | 16789 | echo "$as_me:16789: \$? = $ac_status" >&5 |
15946 | (exit $ac_status); } && | 16790 | (exit $ac_status); } && |
15947 | { ac_try='test -s conftest.$ac_objext' | 16791 | { ac_try='test -s conftest.$ac_objext' |
15948 | { (eval echo "$as_me:15948: \"$ac_try\"") >&5 | 16792 | { (eval echo "$as_me:16792: \"$ac_try\"") >&5 |
15949 | (eval $ac_try) 2>&5 | 16793 | (eval $ac_try) 2>&5 |
15950 | ac_status=$? | 16794 | ac_status=$? |
15951 | echo "$as_me:15951: \$? = $ac_status" >&5 | 16795 | echo "$as_me:16795: \$? = $ac_status" >&5 |
15952 | (exit $ac_status); }; }; then | 16796 | (exit $ac_status); }; }; then |
15953 | echo "$as_me:15953: result: yes" >&5 | 16797 | echo "$as_me:16797: result: yes" >&5 |
15954 | echo "${ECHO_T}yes" >&6 | 16798 | echo "${ECHO_T}yes" >&6 |
15955 | else | 16799 | else |
15956 | echo "$as_me: failed program was:" >&5 | 16800 | echo "$as_me: failed program was:" >&5 |
15957 | cat conftest.$ac_ext >&5 | 16801 | cat conftest.$ac_ext >&5 |
15958 | 16802 | ||
15959 | echo "$as_me:15959: result: no" >&5 | 16803 | echo "$as_me:16803: result: no" >&5 |
15960 | echo "${ECHO_T}no" >&6 | 16804 | echo "${ECHO_T}no" >&6 |
15961 | system_lastlog_path=no | 16805 | system_lastlog_path=no |
15962 | 16806 | ||
@@ -15974,7 +16818,7 @@ if test -z "$conf_lastlog_location"; then | |||
15974 | fi | 16818 | fi |
15975 | done | 16819 | done |
15976 | if test -z "$conf_lastlog_location"; then | 16820 | if test -z "$conf_lastlog_location"; then |
15977 | { echo "$as_me:15977: WARNING: ** Cannot find lastlog **" >&5 | 16821 | { echo "$as_me:16821: WARNING: ** Cannot find lastlog **" >&5 |
15978 | echo "$as_me: WARNING: ** Cannot find lastlog **" >&2;} | 16822 | echo "$as_me: WARNING: ** Cannot find lastlog **" >&2;} |
15979 | fi | 16823 | fi |
15980 | fi | 16824 | fi |
@@ -15987,10 +16831,10 @@ EOF | |||
15987 | 16831 | ||
15988 | fi | 16832 | fi |
15989 | 16833 | ||
15990 | echo "$as_me:15990: checking if your system defines UTMP_FILE" >&5 | 16834 | echo "$as_me:16834: checking if your system defines UTMP_FILE" >&5 |
15991 | echo $ECHO_N "checking if your system defines UTMP_FILE... $ECHO_C" >&6 | 16835 | echo $ECHO_N "checking if your system defines UTMP_FILE... $ECHO_C" >&6 |
15992 | cat >conftest.$ac_ext <<_ACEOF | 16836 | cat >conftest.$ac_ext <<_ACEOF |
15993 | #line 15993 "configure" | 16837 | #line 16837 "configure" |
15994 | #include "confdefs.h" | 16838 | #include "confdefs.h" |
15995 | 16839 | ||
15996 | #include <sys/types.h> | 16840 | #include <sys/types.h> |
@@ -16008,23 +16852,23 @@ main () | |||
16008 | } | 16852 | } |
16009 | _ACEOF | 16853 | _ACEOF |
16010 | rm -f conftest.$ac_objext | 16854 | rm -f conftest.$ac_objext |
16011 | if { (eval echo "$as_me:16011: \"$ac_compile\"") >&5 | 16855 | if { (eval echo "$as_me:16855: \"$ac_compile\"") >&5 |
16012 | (eval $ac_compile) 2>&5 | 16856 | (eval $ac_compile) 2>&5 |
16013 | ac_status=$? | 16857 | ac_status=$? |
16014 | echo "$as_me:16014: \$? = $ac_status" >&5 | 16858 | echo "$as_me:16858: \$? = $ac_status" >&5 |
16015 | (exit $ac_status); } && | 16859 | (exit $ac_status); } && |
16016 | { ac_try='test -s conftest.$ac_objext' | 16860 | { ac_try='test -s conftest.$ac_objext' |
16017 | { (eval echo "$as_me:16017: \"$ac_try\"") >&5 | 16861 | { (eval echo "$as_me:16861: \"$ac_try\"") >&5 |
16018 | (eval $ac_try) 2>&5 | 16862 | (eval $ac_try) 2>&5 |
16019 | ac_status=$? | 16863 | ac_status=$? |
16020 | echo "$as_me:16020: \$? = $ac_status" >&5 | 16864 | echo "$as_me:16864: \$? = $ac_status" >&5 |
16021 | (exit $ac_status); }; }; then | 16865 | (exit $ac_status); }; }; then |
16022 | echo "$as_me:16022: result: yes" >&5 | 16866 | echo "$as_me:16866: result: yes" >&5 |
16023 | echo "${ECHO_T}yes" >&6 | 16867 | echo "${ECHO_T}yes" >&6 |
16024 | else | 16868 | else |
16025 | echo "$as_me: failed program was:" >&5 | 16869 | echo "$as_me: failed program was:" >&5 |
16026 | cat conftest.$ac_ext >&5 | 16870 | cat conftest.$ac_ext >&5 |
16027 | echo "$as_me:16027: result: no" >&5 | 16871 | echo "$as_me:16871: result: no" >&5 |
16028 | echo "${ECHO_T}no" >&6 | 16872 | echo "${ECHO_T}no" >&6 |
16029 | system_utmp_path=no | 16873 | system_utmp_path=no |
16030 | 16874 | ||
@@ -16052,10 +16896,10 @@ EOF | |||
16052 | 16896 | ||
16053 | fi | 16897 | fi |
16054 | 16898 | ||
16055 | echo "$as_me:16055: checking if your system defines WTMP_FILE" >&5 | 16899 | echo "$as_me:16899: checking if your system defines WTMP_FILE" >&5 |
16056 | echo $ECHO_N "checking if your system defines WTMP_FILE... $ECHO_C" >&6 | 16900 | echo $ECHO_N "checking if your system defines WTMP_FILE... $ECHO_C" >&6 |
16057 | cat >conftest.$ac_ext <<_ACEOF | 16901 | cat >conftest.$ac_ext <<_ACEOF |
16058 | #line 16058 "configure" | 16902 | #line 16902 "configure" |
16059 | #include "confdefs.h" | 16903 | #include "confdefs.h" |
16060 | 16904 | ||
16061 | #include <sys/types.h> | 16905 | #include <sys/types.h> |
@@ -16073,23 +16917,23 @@ main () | |||
16073 | } | 16917 | } |
16074 | _ACEOF | 16918 | _ACEOF |
16075 | rm -f conftest.$ac_objext | 16919 | rm -f conftest.$ac_objext |
16076 | if { (eval echo "$as_me:16076: \"$ac_compile\"") >&5 | 16920 | if { (eval echo "$as_me:16920: \"$ac_compile\"") >&5 |
16077 | (eval $ac_compile) 2>&5 | 16921 | (eval $ac_compile) 2>&5 |
16078 | ac_status=$? | 16922 | ac_status=$? |
16079 | echo "$as_me:16079: \$? = $ac_status" >&5 | 16923 | echo "$as_me:16923: \$? = $ac_status" >&5 |
16080 | (exit $ac_status); } && | 16924 | (exit $ac_status); } && |
16081 | { ac_try='test -s conftest.$ac_objext' | 16925 | { ac_try='test -s conftest.$ac_objext' |
16082 | { (eval echo "$as_me:16082: \"$ac_try\"") >&5 | 16926 | { (eval echo "$as_me:16926: \"$ac_try\"") >&5 |
16083 | (eval $ac_try) 2>&5 | 16927 | (eval $ac_try) 2>&5 |
16084 | ac_status=$? | 16928 | ac_status=$? |
16085 | echo "$as_me:16085: \$? = $ac_status" >&5 | 16929 | echo "$as_me:16929: \$? = $ac_status" >&5 |
16086 | (exit $ac_status); }; }; then | 16930 | (exit $ac_status); }; }; then |
16087 | echo "$as_me:16087: result: yes" >&5 | 16931 | echo "$as_me:16931: result: yes" >&5 |
16088 | echo "${ECHO_T}yes" >&6 | 16932 | echo "${ECHO_T}yes" >&6 |
16089 | else | 16933 | else |
16090 | echo "$as_me: failed program was:" >&5 | 16934 | echo "$as_me: failed program was:" >&5 |
16091 | cat conftest.$ac_ext >&5 | 16935 | cat conftest.$ac_ext >&5 |
16092 | echo "$as_me:16092: result: no" >&5 | 16936 | echo "$as_me:16936: result: no" >&5 |
16093 | echo "${ECHO_T}no" >&6 | 16937 | echo "${ECHO_T}no" >&6 |
16094 | system_wtmp_path=no | 16938 | system_wtmp_path=no |
16095 | 16939 | ||
@@ -16117,10 +16961,10 @@ EOF | |||
16117 | 16961 | ||
16118 | fi | 16962 | fi |
16119 | 16963 | ||
16120 | echo "$as_me:16120: checking if your system defines UTMPX_FILE" >&5 | 16964 | echo "$as_me:16964: checking if your system defines UTMPX_FILE" >&5 |
16121 | echo $ECHO_N "checking if your system defines UTMPX_FILE... $ECHO_C" >&6 | 16965 | echo $ECHO_N "checking if your system defines UTMPX_FILE... $ECHO_C" >&6 |
16122 | cat >conftest.$ac_ext <<_ACEOF | 16966 | cat >conftest.$ac_ext <<_ACEOF |
16123 | #line 16123 "configure" | 16967 | #line 16967 "configure" |
16124 | #include "confdefs.h" | 16968 | #include "confdefs.h" |
16125 | 16969 | ||
16126 | #include <sys/types.h> | 16970 | #include <sys/types.h> |
@@ -16141,23 +16985,23 @@ main () | |||
16141 | } | 16985 | } |
16142 | _ACEOF | 16986 | _ACEOF |
16143 | rm -f conftest.$ac_objext | 16987 | rm -f conftest.$ac_objext |
16144 | if { (eval echo "$as_me:16144: \"$ac_compile\"") >&5 | 16988 | if { (eval echo "$as_me:16988: \"$ac_compile\"") >&5 |
16145 | (eval $ac_compile) 2>&5 | 16989 | (eval $ac_compile) 2>&5 |
16146 | ac_status=$? | 16990 | ac_status=$? |
16147 | echo "$as_me:16147: \$? = $ac_status" >&5 | 16991 | echo "$as_me:16991: \$? = $ac_status" >&5 |
16148 | (exit $ac_status); } && | 16992 | (exit $ac_status); } && |
16149 | { ac_try='test -s conftest.$ac_objext' | 16993 | { ac_try='test -s conftest.$ac_objext' |
16150 | { (eval echo "$as_me:16150: \"$ac_try\"") >&5 | 16994 | { (eval echo "$as_me:16994: \"$ac_try\"") >&5 |
16151 | (eval $ac_try) 2>&5 | 16995 | (eval $ac_try) 2>&5 |
16152 | ac_status=$? | 16996 | ac_status=$? |
16153 | echo "$as_me:16153: \$? = $ac_status" >&5 | 16997 | echo "$as_me:16997: \$? = $ac_status" >&5 |
16154 | (exit $ac_status); }; }; then | 16998 | (exit $ac_status); }; }; then |
16155 | echo "$as_me:16155: result: yes" >&5 | 16999 | echo "$as_me:16999: result: yes" >&5 |
16156 | echo "${ECHO_T}yes" >&6 | 17000 | echo "${ECHO_T}yes" >&6 |
16157 | else | 17001 | else |
16158 | echo "$as_me: failed program was:" >&5 | 17002 | echo "$as_me: failed program was:" >&5 |
16159 | cat conftest.$ac_ext >&5 | 17003 | cat conftest.$ac_ext >&5 |
16160 | echo "$as_me:16160: result: no" >&5 | 17004 | echo "$as_me:17004: result: no" >&5 |
16161 | echo "${ECHO_T}no" >&6 | 17005 | echo "${ECHO_T}no" >&6 |
16162 | system_utmpx_path=no | 17006 | system_utmpx_path=no |
16163 | 17007 | ||
@@ -16177,10 +17021,10 @@ EOF | |||
16177 | 17021 | ||
16178 | fi | 17022 | fi |
16179 | 17023 | ||
16180 | echo "$as_me:16180: checking if your system defines WTMPX_FILE" >&5 | 17024 | echo "$as_me:17024: checking if your system defines WTMPX_FILE" >&5 |
16181 | echo $ECHO_N "checking if your system defines WTMPX_FILE... $ECHO_C" >&6 | 17025 | echo $ECHO_N "checking if your system defines WTMPX_FILE... $ECHO_C" >&6 |
16182 | cat >conftest.$ac_ext <<_ACEOF | 17026 | cat >conftest.$ac_ext <<_ACEOF |
16183 | #line 16183 "configure" | 17027 | #line 17027 "configure" |
16184 | #include "confdefs.h" | 17028 | #include "confdefs.h" |
16185 | 17029 | ||
16186 | #include <sys/types.h> | 17030 | #include <sys/types.h> |
@@ -16201,23 +17045,23 @@ main () | |||
16201 | } | 17045 | } |
16202 | _ACEOF | 17046 | _ACEOF |
16203 | rm -f conftest.$ac_objext | 17047 | rm -f conftest.$ac_objext |
16204 | if { (eval echo "$as_me:16204: \"$ac_compile\"") >&5 | 17048 | if { (eval echo "$as_me:17048: \"$ac_compile\"") >&5 |
16205 | (eval $ac_compile) 2>&5 | 17049 | (eval $ac_compile) 2>&5 |
16206 | ac_status=$? | 17050 | ac_status=$? |
16207 | echo "$as_me:16207: \$? = $ac_status" >&5 | 17051 | echo "$as_me:17051: \$? = $ac_status" >&5 |
16208 | (exit $ac_status); } && | 17052 | (exit $ac_status); } && |
16209 | { ac_try='test -s conftest.$ac_objext' | 17053 | { ac_try='test -s conftest.$ac_objext' |
16210 | { (eval echo "$as_me:16210: \"$ac_try\"") >&5 | 17054 | { (eval echo "$as_me:17054: \"$ac_try\"") >&5 |
16211 | (eval $ac_try) 2>&5 | 17055 | (eval $ac_try) 2>&5 |
16212 | ac_status=$? | 17056 | ac_status=$? |
16213 | echo "$as_me:16213: \$? = $ac_status" >&5 | 17057 | echo "$as_me:17057: \$? = $ac_status" >&5 |
16214 | (exit $ac_status); }; }; then | 17058 | (exit $ac_status); }; }; then |
16215 | echo "$as_me:16215: result: yes" >&5 | 17059 | echo "$as_me:17059: result: yes" >&5 |
16216 | echo "${ECHO_T}yes" >&6 | 17060 | echo "${ECHO_T}yes" >&6 |
16217 | else | 17061 | else |
16218 | echo "$as_me: failed program was:" >&5 | 17062 | echo "$as_me: failed program was:" >&5 |
16219 | cat conftest.$ac_ext >&5 | 17063 | cat conftest.$ac_ext >&5 |
16220 | echo "$as_me:16220: result: no" >&5 | 17064 | echo "$as_me:17064: result: no" >&5 |
16221 | echo "${ECHO_T}no" >&6 | 17065 | echo "${ECHO_T}no" >&6 |
16222 | system_wtmpx_path=no | 17066 | system_wtmpx_path=no |
16223 | 17067 | ||
@@ -16239,7 +17083,7 @@ fi | |||
16239 | 17083 | ||
16240 | if test ! -z "$blibpath" ; then | 17084 | if test ! -z "$blibpath" ; then |
16241 | LDFLAGS="$LDFLAGS $blibflags$blibpath" | 17085 | LDFLAGS="$LDFLAGS $blibflags$blibpath" |
16242 | { echo "$as_me:16242: WARNING: Please check and edit blibpath in LDFLAGS in Makefile" >&5 | 17086 | { echo "$as_me:17086: WARNING: Please check and edit blibpath in LDFLAGS in Makefile" >&5 |
16243 | echo "$as_me: WARNING: Please check and edit blibpath in LDFLAGS in Makefile" >&2;} | 17087 | echo "$as_me: WARNING: Please check and edit blibpath in LDFLAGS in Makefile" >&2;} |
16244 | fi | 17088 | fi |
16245 | 17089 | ||
@@ -16331,7 +17175,7 @@ DEFS=-DHAVE_CONFIG_H | |||
16331 | : ${CONFIG_STATUS=./config.status} | 17175 | : ${CONFIG_STATUS=./config.status} |
16332 | ac_clean_files_save=$ac_clean_files | 17176 | ac_clean_files_save=$ac_clean_files |
16333 | ac_clean_files="$ac_clean_files $CONFIG_STATUS" | 17177 | ac_clean_files="$ac_clean_files $CONFIG_STATUS" |
16334 | { echo "$as_me:16334: creating $CONFIG_STATUS" >&5 | 17178 | { echo "$as_me:17178: creating $CONFIG_STATUS" >&5 |
16335 | echo "$as_me: creating $CONFIG_STATUS" >&6;} | 17179 | echo "$as_me: creating $CONFIG_STATUS" >&6;} |
16336 | cat >$CONFIG_STATUS <<_ACEOF | 17180 | cat >$CONFIG_STATUS <<_ACEOF |
16337 | #! $SHELL | 17181 | #! $SHELL |
@@ -16504,7 +17348,7 @@ cat >>$CONFIG_STATUS <<\EOF | |||
16504 | echo "$ac_cs_version"; exit 0 ;; | 17348 | echo "$ac_cs_version"; exit 0 ;; |
16505 | --he | --h) | 17349 | --he | --h) |
16506 | # Conflict between --help and --header | 17350 | # Conflict between --help and --header |
16507 | { { echo "$as_me:16507: error: ambiguous option: $1 | 17351 | { { echo "$as_me:17351: error: ambiguous option: $1 |
16508 | Try \`$0 --help' for more information." >&5 | 17352 | Try \`$0 --help' for more information." >&5 |
16509 | echo "$as_me: error: ambiguous option: $1 | 17353 | echo "$as_me: error: ambiguous option: $1 |
16510 | Try \`$0 --help' for more information." >&2;} | 17354 | Try \`$0 --help' for more information." >&2;} |
@@ -16523,7 +17367,7 @@ Try \`$0 --help' for more information." >&2;} | |||
16523 | ac_need_defaults=false;; | 17367 | ac_need_defaults=false;; |
16524 | 17368 | ||
16525 | # This is an error. | 17369 | # This is an error. |
16526 | -*) { { echo "$as_me:16526: error: unrecognized option: $1 | 17370 | -*) { { echo "$as_me:17370: error: unrecognized option: $1 |
16527 | Try \`$0 --help' for more information." >&5 | 17371 | Try \`$0 --help' for more information." >&5 |
16528 | echo "$as_me: error: unrecognized option: $1 | 17372 | echo "$as_me: error: unrecognized option: $1 |
16529 | Try \`$0 --help' for more information." >&2;} | 17373 | Try \`$0 --help' for more information." >&2;} |
@@ -16563,7 +17407,7 @@ do | |||
16563 | "scard/Makefile" ) CONFIG_FILES="$CONFIG_FILES scard/Makefile" ;; | 17407 | "scard/Makefile" ) CONFIG_FILES="$CONFIG_FILES scard/Makefile" ;; |
16564 | "ssh_prng_cmds" ) CONFIG_FILES="$CONFIG_FILES ssh_prng_cmds" ;; | 17408 | "ssh_prng_cmds" ) CONFIG_FILES="$CONFIG_FILES ssh_prng_cmds" ;; |
16565 | "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; | 17409 | "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; |
16566 | *) { { echo "$as_me:16566: error: invalid argument: $ac_config_target" >&5 | 17410 | *) { { echo "$as_me:17410: error: invalid argument: $ac_config_target" >&5 |
16567 | echo "$as_me: error: invalid argument: $ac_config_target" >&2;} | 17411 | echo "$as_me: error: invalid argument: $ac_config_target" >&2;} |
16568 | { (exit 1); exit 1; }; };; | 17412 | { (exit 1); exit 1; }; };; |
16569 | esac | 17413 | esac |
@@ -16673,6 +17517,7 @@ s,@ENT@,$ENT,;t t | |||
16673 | s,@TEST_MINUS_S_SH@,$TEST_MINUS_S_SH,;t t | 17517 | s,@TEST_MINUS_S_SH@,$TEST_MINUS_S_SH,;t t |
16674 | s,@SH@,$SH,;t t | 17518 | s,@SH@,$SH,;t t |
16675 | s,@LOGIN_PROGRAM_FALLBACK@,$LOGIN_PROGRAM_FALLBACK,;t t | 17519 | s,@LOGIN_PROGRAM_FALLBACK@,$LOGIN_PROGRAM_FALLBACK,;t t |
17520 | s,@PATH_PASSWD_PROG@,$PATH_PASSWD_PROG,;t t | ||
16676 | s,@LD@,$LD,;t t | 17521 | s,@LD@,$LD,;t t |
16677 | s,@LIBWRAP@,$LIBWRAP,;t t | 17522 | s,@LIBWRAP@,$LIBWRAP,;t t |
16678 | s,@LIBPAM@,$LIBPAM,;t t | 17523 | s,@LIBPAM@,$LIBPAM,;t t |
@@ -16819,7 +17664,7 @@ done; } | |||
16819 | esac | 17664 | esac |
16820 | 17665 | ||
16821 | if test x"$ac_file" != x-; then | 17666 | if test x"$ac_file" != x-; then |
16822 | { echo "$as_me:16822: creating $ac_file" >&5 | 17667 | { echo "$as_me:17667: creating $ac_file" >&5 |
16823 | echo "$as_me: creating $ac_file" >&6;} | 17668 | echo "$as_me: creating $ac_file" >&6;} |
16824 | rm -f "$ac_file" | 17669 | rm -f "$ac_file" |
16825 | fi | 17670 | fi |
@@ -16837,7 +17682,7 @@ echo "$as_me: creating $ac_file" >&6;} | |||
16837 | -) echo $tmp/stdin ;; | 17682 | -) echo $tmp/stdin ;; |
16838 | [\\/$]*) | 17683 | [\\/$]*) |
16839 | # Absolute (can't be DOS-style, as IFS=:) | 17684 | # Absolute (can't be DOS-style, as IFS=:) |
16840 | test -f "$f" || { { echo "$as_me:16840: error: cannot find input file: $f" >&5 | 17685 | test -f "$f" || { { echo "$as_me:17685: error: cannot find input file: $f" >&5 |
16841 | echo "$as_me: error: cannot find input file: $f" >&2;} | 17686 | echo "$as_me: error: cannot find input file: $f" >&2;} |
16842 | { (exit 1); exit 1; }; } | 17687 | { (exit 1); exit 1; }; } |
16843 | echo $f;; | 17688 | echo $f;; |
@@ -16850,7 +17695,7 @@ echo "$as_me: error: cannot find input file: $f" >&2;} | |||
16850 | echo $srcdir/$f | 17695 | echo $srcdir/$f |
16851 | else | 17696 | else |
16852 | # /dev/null tree | 17697 | # /dev/null tree |
16853 | { { echo "$as_me:16853: error: cannot find input file: $f" >&5 | 17698 | { { echo "$as_me:17698: error: cannot find input file: $f" >&5 |
16854 | echo "$as_me: error: cannot find input file: $f" >&2;} | 17699 | echo "$as_me: error: cannot find input file: $f" >&2;} |
16855 | { (exit 1); exit 1; }; } | 17700 | { (exit 1); exit 1; }; } |
16856 | fi;; | 17701 | fi;; |
@@ -16911,7 +17756,7 @@ for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue | |||
16911 | * ) ac_file_in=$ac_file.in ;; | 17756 | * ) ac_file_in=$ac_file.in ;; |
16912 | esac | 17757 | esac |
16913 | 17758 | ||
16914 | test x"$ac_file" != x- && { echo "$as_me:16914: creating $ac_file" >&5 | 17759 | test x"$ac_file" != x- && { echo "$as_me:17759: creating $ac_file" >&5 |
16915 | echo "$as_me: creating $ac_file" >&6;} | 17760 | echo "$as_me: creating $ac_file" >&6;} |
16916 | 17761 | ||
16917 | # First look for the input files in the build tree, otherwise in the | 17762 | # First look for the input files in the build tree, otherwise in the |
@@ -16922,7 +17767,7 @@ echo "$as_me: creating $ac_file" >&6;} | |||
16922 | -) echo $tmp/stdin ;; | 17767 | -) echo $tmp/stdin ;; |
16923 | [\\/$]*) | 17768 | [\\/$]*) |
16924 | # Absolute (can't be DOS-style, as IFS=:) | 17769 | # Absolute (can't be DOS-style, as IFS=:) |
16925 | test -f "$f" || { { echo "$as_me:16925: error: cannot find input file: $f" >&5 | 17770 | test -f "$f" || { { echo "$as_me:17770: error: cannot find input file: $f" >&5 |
16926 | echo "$as_me: error: cannot find input file: $f" >&2;} | 17771 | echo "$as_me: error: cannot find input file: $f" >&2;} |
16927 | { (exit 1); exit 1; }; } | 17772 | { (exit 1); exit 1; }; } |
16928 | echo $f;; | 17773 | echo $f;; |
@@ -16935,7 +17780,7 @@ echo "$as_me: error: cannot find input file: $f" >&2;} | |||
16935 | echo $srcdir/$f | 17780 | echo $srcdir/$f |
16936 | else | 17781 | else |
16937 | # /dev/null tree | 17782 | # /dev/null tree |
16938 | { { echo "$as_me:16938: error: cannot find input file: $f" >&5 | 17783 | { { echo "$as_me:17783: error: cannot find input file: $f" >&5 |
16939 | echo "$as_me: error: cannot find input file: $f" >&2;} | 17784 | echo "$as_me: error: cannot find input file: $f" >&2;} |
16940 | { (exit 1); exit 1; }; } | 17785 | { (exit 1); exit 1; }; } |
16941 | fi;; | 17786 | fi;; |
@@ -16965,7 +17810,7 @@ s/[\\&,]/\\&/g | |||
16965 | s,[\\$`],\\&,g | 17810 | s,[\\$`],\\&,g |
16966 | t clear | 17811 | t clear |
16967 | : clear | 17812 | : clear |
16968 | s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp | 17813 | s,^[ ]*#[ ]*define[ ][ ]*\(\([^ (][^ (]*\)([^)]*)\)[ ]*\(.*\)$,${ac_dA}\2${ac_dB}\1${ac_dC}\3${ac_dD},gp |
16969 | t end | 17814 | t end |
16970 | s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp | 17815 | s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp |
16971 | : end | 17816 | : end |
@@ -17052,7 +17897,7 @@ cat >>$CONFIG_STATUS <<\EOF | |||
17052 | rm -f $tmp/in | 17897 | rm -f $tmp/in |
17053 | if test x"$ac_file" != x-; then | 17898 | if test x"$ac_file" != x-; then |
17054 | if cmp -s $ac_file $tmp/config.h 2>/dev/null; then | 17899 | if cmp -s $ac_file $tmp/config.h 2>/dev/null; then |
17055 | { echo "$as_me:17055: $ac_file is unchanged" >&5 | 17900 | { echo "$as_me:17900: $ac_file is unchanged" >&5 |
17056 | echo "$as_me: $ac_file is unchanged" >&6;} | 17901 | echo "$as_me: $ac_file is unchanged" >&6;} |
17057 | else | 17902 | else |
17058 | ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ | 17903 | ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ |
@@ -17156,7 +18001,6 @@ if test ! -z "$superuser_path" ; then | |||
17156 | echo " sshd superuser user PATH: $J" | 18001 | echo " sshd superuser user PATH: $J" |
17157 | fi | 18002 | fi |
17158 | echo " Manpage format: $MANTYPE" | 18003 | echo " Manpage format: $MANTYPE" |
17159 | echo " DNS support: $DNS_MSG" | ||
17160 | echo " PAM support: $PAM_MSG" | 18004 | echo " PAM support: $PAM_MSG" |
17161 | echo " KerberosV support: $KRB5_MSG" | 18005 | echo " KerberosV support: $KRB5_MSG" |
17162 | echo " Smartcard support: $SCARD_MSG" | 18006 | echo " Smartcard support: $SCARD_MSG" |
diff --git a/configure.ac b/configure.ac index 916dc1075..836e31730 100644 --- a/configure.ac +++ b/configure.ac | |||
@@ -1,4 +1,4 @@ | |||
1 | # $Id: configure.ac,v 1.154.2.11 2003/09/23 09:24:21 djm Exp $ | 1 | # $Id: configure.ac,v 1.202 2004/02/24 05:47:04 tim Exp $ |
2 | 2 | ||
3 | AC_INIT | 3 | AC_INIT |
4 | AC_CONFIG_SRCDIR([ssh.c]) | 4 | AC_CONFIG_SRCDIR([ssh.c]) |
@@ -42,24 +42,39 @@ else | |||
42 | fi | 42 | fi |
43 | fi | 43 | fi |
44 | 44 | ||
45 | AC_PATH_PROG(PATH_PASSWD_PROG, passwd) | ||
46 | if test ! -z "$PATH_PASSWD_PROG" ; then | ||
47 | AC_DEFINE_UNQUOTED(_PATH_PASSWD_PROG, "$PATH_PASSWD_PROG") | ||
48 | fi | ||
49 | |||
45 | if test -z "$LD" ; then | 50 | if test -z "$LD" ; then |
46 | LD=$CC | 51 | LD=$CC |
47 | fi | 52 | fi |
48 | AC_SUBST(LD) | 53 | AC_SUBST(LD) |
49 | 54 | ||
50 | AC_C_INLINE | 55 | AC_C_INLINE |
51 | if test "$GCC" = "yes" || test "$GCC" = "egcs"; then | 56 | if test "$GCC" = "yes" || test "$GCC" = "egcs"; then |
52 | CFLAGS="$CFLAGS -Wall -Wpointer-arith -Wno-uninitialized" | 57 | CFLAGS="$CFLAGS -Wall -Wpointer-arith -Wno-uninitialized" |
53 | fi | 58 | fi |
54 | 59 | ||
60 | AC_ARG_WITH(rpath, | ||
61 | [ --without-rpath Disable auto-added -R linker paths], | ||
62 | [ | ||
63 | if test "x$withval" = "xno" ; then | ||
64 | need_dash_r="" | ||
65 | fi | ||
66 | if test "x$withval" = "xyes" ; then | ||
67 | need_dash_r=1 | ||
68 | fi | ||
69 | ] | ||
70 | ) | ||
71 | |||
55 | # Check for some target-specific stuff | 72 | # Check for some target-specific stuff |
56 | case "$host" in | 73 | case "$host" in |
57 | *-*-aix*) | 74 | *-*-aix*) |
58 | CPPFLAGS="$CPPFLAGS -I/usr/local/include" | 75 | AC_MSG_CHECKING([how to specify blibpath for linker ($LD)]) |
59 | LDFLAGS="$LDFLAGS -L/usr/local/lib" | ||
60 | AC_MSG_CHECKING([how to specify blibpath for linker ($LD)]) | ||
61 | if (test -z "$blibpath"); then | 76 | if (test -z "$blibpath"); then |
62 | blibpath="/usr/lib:/lib:/usr/local/lib" | 77 | blibpath="/usr/lib:/lib" |
63 | fi | 78 | fi |
64 | saved_LDFLAGS="$LDFLAGS" | 79 | saved_LDFLAGS="$LDFLAGS" |
65 | for tryflags in -blibpath: -Wl,-blibpath: -Wl,-rpath, ;do | 80 | for tryflags in -blibpath: -Wl,-blibpath: -Wl,-rpath, ;do |
@@ -120,6 +135,9 @@ case "$host" in | |||
120 | ;; | 135 | ;; |
121 | *-*-dgux*) | 136 | *-*-dgux*) |
122 | AC_DEFINE(IP_TOS_IS_BROKEN) | 137 | AC_DEFINE(IP_TOS_IS_BROKEN) |
138 | AC_DEFINE(SETEUID_BREAKS_SETUID) | ||
139 | AC_DEFINE(BROKEN_SETREUID) | ||
140 | AC_DEFINE(BROKEN_SETREGID) | ||
123 | ;; | 141 | ;; |
124 | *-*-darwin*) | 142 | *-*-darwin*) |
125 | AC_MSG_CHECKING(if we have working getaddrinfo) | 143 | AC_MSG_CHECKING(if we have working getaddrinfo) |
@@ -135,6 +153,7 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16)) | |||
135 | AC_DEFINE(SETEUID_BREAKS_SETUID) | 153 | AC_DEFINE(SETEUID_BREAKS_SETUID) |
136 | AC_DEFINE(BROKEN_SETREUID) | 154 | AC_DEFINE(BROKEN_SETREUID) |
137 | AC_DEFINE(BROKEN_SETREGID) | 155 | AC_DEFINE(BROKEN_SETREGID) |
156 | AC_DEFINE_UNQUOTED(BIND_8_COMPAT, 1) | ||
138 | ;; | 157 | ;; |
139 | *-*-hpux10.26) | 158 | *-*-hpux10.26) |
140 | if test -z "$GCC"; then | 159 | if test -z "$GCC"; then |
@@ -146,8 +165,6 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16)) | |||
146 | AC_DEFINE(USE_PIPES) | 165 | AC_DEFINE(USE_PIPES) |
147 | AC_DEFINE(LOGIN_NO_ENDOPT) | 166 | AC_DEFINE(LOGIN_NO_ENDOPT) |
148 | AC_DEFINE(LOGIN_NEEDS_UTMPX) | 167 | AC_DEFINE(LOGIN_NEEDS_UTMPX) |
149 | AC_DEFINE(DISABLE_SHADOW) | ||
150 | AC_DEFINE(DISABLE_UTMP) | ||
151 | AC_DEFINE(LOCKED_PASSWD_STRING, "*") | 168 | AC_DEFINE(LOCKED_PASSWD_STRING, "*") |
152 | AC_DEFINE(SPT_TYPE,SPT_PSTAT) | 169 | AC_DEFINE(SPT_TYPE,SPT_PSTAT) |
153 | LIBS="$LIBS -lsec -lsecpw" | 170 | LIBS="$LIBS -lsec -lsecpw" |
@@ -163,8 +180,6 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16)) | |||
163 | AC_DEFINE(USE_PIPES) | 180 | AC_DEFINE(USE_PIPES) |
164 | AC_DEFINE(LOGIN_NO_ENDOPT) | 181 | AC_DEFINE(LOGIN_NO_ENDOPT) |
165 | AC_DEFINE(LOGIN_NEEDS_UTMPX) | 182 | AC_DEFINE(LOGIN_NEEDS_UTMPX) |
166 | AC_DEFINE(DISABLE_SHADOW) | ||
167 | AC_DEFINE(DISABLE_UTMP) | ||
168 | AC_DEFINE(LOCKED_PASSWD_STRING, "*") | 183 | AC_DEFINE(LOCKED_PASSWD_STRING, "*") |
169 | AC_DEFINE(SPT_TYPE,SPT_PSTAT) | 184 | AC_DEFINE(SPT_TYPE,SPT_PSTAT) |
170 | LIBS="$LIBS -lsec" | 185 | LIBS="$LIBS -lsec" |
@@ -177,24 +192,26 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16)) | |||
177 | AC_DEFINE(USE_PIPES) | 192 | AC_DEFINE(USE_PIPES) |
178 | AC_DEFINE(LOGIN_NO_ENDOPT) | 193 | AC_DEFINE(LOGIN_NO_ENDOPT) |
179 | AC_DEFINE(LOGIN_NEEDS_UTMPX) | 194 | AC_DEFINE(LOGIN_NEEDS_UTMPX) |
180 | AC_DEFINE(DISABLE_SHADOW) | ||
181 | AC_DEFINE(DISABLE_UTMP) | 195 | AC_DEFINE(DISABLE_UTMP) |
182 | AC_DEFINE(LOCKED_PASSWD_STRING, "*") | 196 | AC_DEFINE(LOCKED_PASSWD_STRING, "*") |
183 | AC_DEFINE(SPT_TYPE,SPT_PSTAT) | 197 | AC_DEFINE(SPT_TYPE,SPT_PSTAT) |
198 | case "$host" in | ||
199 | *-*-hpux11.11*) | ||
200 | AC_DEFINE(BROKEN_GETADDRINFO);; | ||
201 | esac | ||
184 | LIBS="$LIBS -lsec" | 202 | LIBS="$LIBS -lsec" |
185 | AC_CHECK_LIB(xnet, t_error, ,AC_MSG_ERROR([*** -lxnet needed on HP-UX - check config.log ***])) | 203 | AC_CHECK_LIB(xnet, t_error, ,AC_MSG_ERROR([*** -lxnet needed on HP-UX - check config.log ***])) |
186 | ;; | 204 | ;; |
187 | *-*-irix5*) | 205 | *-*-irix5*) |
188 | CPPFLAGS="$CPPFLAGS -I/usr/local/include" | ||
189 | LDFLAGS="$LDFLAGS" | ||
190 | PATH="$PATH:/usr/etc" | 206 | PATH="$PATH:/usr/etc" |
191 | AC_DEFINE(BROKEN_INET_NTOA) | 207 | AC_DEFINE(BROKEN_INET_NTOA) |
208 | AC_DEFINE(SETEUID_BREAKS_SETUID) | ||
209 | AC_DEFINE(BROKEN_SETREUID) | ||
210 | AC_DEFINE(BROKEN_SETREGID) | ||
192 | AC_DEFINE(WITH_ABBREV_NO_TTY) | 211 | AC_DEFINE(WITH_ABBREV_NO_TTY) |
193 | AC_DEFINE(LOCKED_PASSWD_STRING, "*LK*") | 212 | AC_DEFINE(LOCKED_PASSWD_STRING, "*LK*") |
194 | ;; | 213 | ;; |
195 | *-*-irix6*) | 214 | *-*-irix6*) |
196 | CPPFLAGS="$CPPFLAGS -I/usr/local/include" | ||
197 | LDFLAGS="$LDFLAGS" | ||
198 | PATH="$PATH:/usr/etc" | 215 | PATH="$PATH:/usr/etc" |
199 | AC_DEFINE(WITH_IRIX_ARRAY) | 216 | AC_DEFINE(WITH_IRIX_ARRAY) |
200 | AC_DEFINE(WITH_IRIX_PROJECT) | 217 | AC_DEFINE(WITH_IRIX_PROJECT) |
@@ -228,7 +245,9 @@ mips-sony-bsd|mips-sony-newsos4) | |||
228 | ;; | 245 | ;; |
229 | *-*-netbsd*) | 246 | *-*-netbsd*) |
230 | check_for_libcrypt_before=1 | 247 | check_for_libcrypt_before=1 |
231 | need_dash_r=1 | 248 | if test "x$withval" != "xno" ; then |
249 | need_dash_r=1 | ||
250 | fi | ||
232 | ;; | 251 | ;; |
233 | *-*-freebsd*) | 252 | *-*-freebsd*) |
234 | check_for_libcrypt_later=1 | 253 | check_for_libcrypt_later=1 |
@@ -247,13 +266,8 @@ mips-sony-bsd|mips-sony-newsos4) | |||
247 | AC_DEFINE(BROKEN_REALPATH) | 266 | AC_DEFINE(BROKEN_REALPATH) |
248 | AC_DEFINE(USE_PIPES) | 267 | AC_DEFINE(USE_PIPES) |
249 | AC_DEFINE(BROKEN_SAVED_UIDS) | 268 | AC_DEFINE(BROKEN_SAVED_UIDS) |
250 | CPPFLAGS="$CPPFLAGS -I/usr/local/include" | ||
251 | CFLAGS="$CFLAGS" | ||
252 | ;; | 269 | ;; |
253 | *-*-solaris*) | 270 | *-*-solaris*) |
254 | CPPFLAGS="$CPPFLAGS -I/usr/local/include" | ||
255 | LDFLAGS="$LDFLAGS -L/usr/local/lib -R/usr/local/lib" | ||
256 | need_dash_r=1 | ||
257 | AC_DEFINE(PAM_SUN_CODEBASE) | 271 | AC_DEFINE(PAM_SUN_CODEBASE) |
258 | AC_DEFINE(LOGIN_NEEDS_UTMPX) | 272 | AC_DEFINE(LOGIN_NEEDS_UTMPX) |
259 | AC_DEFINE(LOGIN_NEEDS_TERM) | 273 | AC_DEFINE(LOGIN_NEEDS_TERM) |
@@ -284,8 +298,6 @@ mips-sony-bsd|mips-sony-newsos4) | |||
284 | AC_DEFINE(USE_PIPES) | 298 | AC_DEFINE(USE_PIPES) |
285 | ;; | 299 | ;; |
286 | *-ncr-sysv*) | 300 | *-ncr-sysv*) |
287 | CPPFLAGS="$CPPFLAGS -I/usr/local/include" | ||
288 | LDFLAGS="$LDFLAGS -L/usr/local/lib" | ||
289 | LIBS="$LIBS -lc89" | 301 | LIBS="$LIBS -lc89" |
290 | AC_DEFINE(USE_PIPES) | 302 | AC_DEFINE(USE_PIPES) |
291 | AC_DEFINE(SSHD_ACQUIRES_CTTY) | 303 | AC_DEFINE(SSHD_ACQUIRES_CTTY) |
@@ -294,12 +306,14 @@ mips-sony-bsd|mips-sony-newsos4) | |||
294 | AC_DEFINE(BROKEN_SETREGID) | 306 | AC_DEFINE(BROKEN_SETREGID) |
295 | ;; | 307 | ;; |
296 | *-sni-sysv*) | 308 | *-sni-sysv*) |
297 | CPPFLAGS="$CPPFLAGS -I/usr/local/include" | ||
298 | # /usr/ucblib MUST NOT be searched on ReliantUNIX | 309 | # /usr/ucblib MUST NOT be searched on ReliantUNIX |
299 | LDFLAGS="$LDFLAGS -L/usr/local/lib" | 310 | AC_CHECK_LIB(dl, dlsym, ,) |
300 | IPADDR_IN_DISPLAY=yes | 311 | IPADDR_IN_DISPLAY=yes |
301 | AC_DEFINE(USE_PIPES) | 312 | AC_DEFINE(USE_PIPES) |
302 | AC_DEFINE(IP_TOS_IS_BROKEN) | 313 | AC_DEFINE(IP_TOS_IS_BROKEN) |
314 | AC_DEFINE(SETEUID_BREAKS_SETUID) | ||
315 | AC_DEFINE(BROKEN_SETREUID) | ||
316 | AC_DEFINE(BROKEN_SETREGID) | ||
303 | AC_DEFINE(SSHD_ACQUIRES_CTTY) | 317 | AC_DEFINE(SSHD_ACQUIRES_CTTY) |
304 | external_path_file=/etc/default/login | 318 | external_path_file=/etc/default/login |
305 | # /usr/ucblib/libucb.a no longer needed on ReliantUNIX | 319 | # /usr/ucblib/libucb.a no longer needed on ReliantUNIX |
@@ -307,29 +321,22 @@ mips-sony-bsd|mips-sony-newsos4) | |||
307 | # otherwise you will find lots of "SIOCGPGRP errno 22" on syslog | 321 | # otherwise you will find lots of "SIOCGPGRP errno 22" on syslog |
308 | ;; | 322 | ;; |
309 | *-*-sysv4.2*) | 323 | *-*-sysv4.2*) |
310 | CPPFLAGS="$CPPFLAGS -I/usr/local/include" | ||
311 | LDFLAGS="$LDFLAGS -L/usr/local/lib" | ||
312 | AC_DEFINE(USE_PIPES) | 324 | AC_DEFINE(USE_PIPES) |
313 | AC_DEFINE(SETEUID_BREAKS_SETUID) | 325 | AC_DEFINE(SETEUID_BREAKS_SETUID) |
314 | AC_DEFINE(BROKEN_SETREUID) | 326 | AC_DEFINE(BROKEN_SETREUID) |
315 | AC_DEFINE(BROKEN_SETREGID) | 327 | AC_DEFINE(BROKEN_SETREGID) |
316 | ;; | 328 | ;; |
317 | *-*-sysv5*) | 329 | *-*-sysv5*) |
318 | CPPFLAGS="$CPPFLAGS -I/usr/local/include" | ||
319 | LDFLAGS="$LDFLAGS -L/usr/local/lib" | ||
320 | AC_DEFINE(USE_PIPES) | 330 | AC_DEFINE(USE_PIPES) |
321 | AC_DEFINE(SETEUID_BREAKS_SETUID) | 331 | AC_DEFINE(SETEUID_BREAKS_SETUID) |
322 | AC_DEFINE(BROKEN_SETREUID) | 332 | AC_DEFINE(BROKEN_SETREUID) |
323 | AC_DEFINE(BROKEN_SETREGID) | 333 | AC_DEFINE(BROKEN_SETREGID) |
324 | ;; | 334 | ;; |
325 | *-*-sysv*) | 335 | *-*-sysv*) |
326 | CPPFLAGS="$CPPFLAGS -I/usr/local/include" | ||
327 | LDFLAGS="$LDFLAGS -L/usr/local/lib" | ||
328 | ;; | 336 | ;; |
329 | *-*-sco3.2v4*) | 337 | *-*-sco3.2v4*) |
330 | CPPFLAGS="$CPPFLAGS -Dftruncate=chsize -I/usr/local/include" | 338 | CPPFLAGS="$CPPFLAGS -Dftruncate=chsize" |
331 | LDFLAGS="$LDFLAGS -L/usr/local/lib" | 339 | LIBS="$LIBS -los -lprot -lcrypt_i -lx -ltinfo -lm" |
332 | LIBS="$LIBS -los -lprot -lx -ltinfo -lm" | ||
333 | RANLIB=true | 340 | RANLIB=true |
334 | no_dev_ptmx=1 | 341 | no_dev_ptmx=1 |
335 | AC_DEFINE(BROKEN_SYS_TERMIO_H) | 342 | AC_DEFINE(BROKEN_SYS_TERMIO_H) |
@@ -346,8 +353,6 @@ mips-sony-bsd|mips-sony-newsos4) | |||
346 | if test -z "$GCC"; then | 353 | if test -z "$GCC"; then |
347 | CFLAGS="$CFLAGS -belf" | 354 | CFLAGS="$CFLAGS -belf" |
348 | fi | 355 | fi |
349 | CPPFLAGS="$CPPFLAGS -I/usr/local/include" | ||
350 | LDFLAGS="$LDFLAGS -L/usr/local/lib" | ||
351 | LIBS="$LIBS -lprot -lx -ltinfo -lm" | 356 | LIBS="$LIBS -lprot -lx -ltinfo -lm" |
352 | no_dev_ptmx=1 | 357 | no_dev_ptmx=1 |
353 | AC_DEFINE(USE_PIPES) | 358 | AC_DEFINE(USE_PIPES) |
@@ -362,6 +367,10 @@ mips-sony-bsd|mips-sony-newsos4) | |||
362 | MANTYPE=man | 367 | MANTYPE=man |
363 | ;; | 368 | ;; |
364 | *-*-unicosmk*) | 369 | *-*-unicosmk*) |
370 | AC_DEFINE(NO_SSH_LASTLOG) | ||
371 | AC_DEFINE(SETEUID_BREAKS_SETUID) | ||
372 | AC_DEFINE(BROKEN_SETREUID) | ||
373 | AC_DEFINE(BROKEN_SETREGID) | ||
365 | AC_DEFINE(USE_PIPES) | 374 | AC_DEFINE(USE_PIPES) |
366 | AC_DEFINE(DISABLE_FD_PASSING) | 375 | AC_DEFINE(DISABLE_FD_PASSING) |
367 | LDFLAGS="$LDFLAGS" | 376 | LDFLAGS="$LDFLAGS" |
@@ -369,14 +378,20 @@ mips-sony-bsd|mips-sony-newsos4) | |||
369 | MANTYPE=cat | 378 | MANTYPE=cat |
370 | ;; | 379 | ;; |
371 | *-*-unicosmp*) | 380 | *-*-unicosmp*) |
381 | AC_DEFINE(SETEUID_BREAKS_SETUID) | ||
382 | AC_DEFINE(BROKEN_SETREUID) | ||
383 | AC_DEFINE(BROKEN_SETREGID) | ||
372 | AC_DEFINE(WITH_ABBREV_NO_TTY) | 384 | AC_DEFINE(WITH_ABBREV_NO_TTY) |
373 | AC_DEFINE(USE_PIPES) | 385 | AC_DEFINE(USE_PIPES) |
374 | AC_DEFINE(DISABLE_FD_PASSING) | 386 | AC_DEFINE(DISABLE_FD_PASSING) |
375 | LDFLAGS="$LDFLAGS" | 387 | LDFLAGS="$LDFLAGS" |
376 | LIBS="$LIBS -lgen -lacid" | 388 | LIBS="$LIBS -lgen -lacid -ldb" |
377 | MANTYPE=cat | 389 | MANTYPE=cat |
378 | ;; | 390 | ;; |
379 | *-*-unicos*) | 391 | *-*-unicos*) |
392 | AC_DEFINE(SETEUID_BREAKS_SETUID) | ||
393 | AC_DEFINE(BROKEN_SETREUID) | ||
394 | AC_DEFINE(BROKEN_SETREGID) | ||
380 | AC_DEFINE(USE_PIPES) | 395 | AC_DEFINE(USE_PIPES) |
381 | AC_DEFINE(DISABLE_FD_PASSING) | 396 | AC_DEFINE(DISABLE_FD_PASSING) |
382 | AC_DEFINE(NO_SSH_LASTLOG) | 397 | AC_DEFINE(NO_SSH_LASTLOG) |
@@ -405,14 +420,13 @@ mips-sony-bsd|mips-sony-newsos4) | |||
405 | LIBS="$LIBS -lsecurity -ldb -lm -laud" | 420 | LIBS="$LIBS -lsecurity -ldb -lm -laud" |
406 | else | 421 | else |
407 | AC_MSG_RESULT(no) | 422 | AC_MSG_RESULT(no) |
423 | AC_DEFINE(LOCKED_PASSWD_SUBSTR, "Nologin") | ||
408 | fi | 424 | fi |
409 | fi | 425 | fi |
410 | AC_DEFINE(DISABLE_FD_PASSING) | ||
411 | AC_DEFINE(BROKEN_GETADDRINFO) | 426 | AC_DEFINE(BROKEN_GETADDRINFO) |
412 | AC_DEFINE(SETEUID_BREAKS_SETUID) | 427 | AC_DEFINE(SETEUID_BREAKS_SETUID) |
413 | AC_DEFINE(BROKEN_SETREUID) | 428 | AC_DEFINE(BROKEN_SETREUID) |
414 | AC_DEFINE(BROKEN_SETREGID) | 429 | AC_DEFINE(BROKEN_SETREGID) |
415 | AC_DEFINE(LOCKED_PASSWD_SUBSTR, "Nologin") | ||
416 | ;; | 430 | ;; |
417 | 431 | ||
418 | *-*-nto-qnx) | 432 | *-*-nto-qnx) |
@@ -474,11 +488,11 @@ int main(){exit(0);} | |||
474 | AC_CHECK_HEADERS(bstring.h crypt.h endian.h features.h floatingpoint.h \ | 488 | AC_CHECK_HEADERS(bstring.h crypt.h endian.h features.h floatingpoint.h \ |
475 | getopt.h glob.h ia.h lastlog.h limits.h login.h \ | 489 | getopt.h glob.h ia.h lastlog.h limits.h login.h \ |
476 | login_cap.h maillock.h netdb.h netgroup.h \ | 490 | login_cap.h maillock.h netdb.h netgroup.h \ |
477 | netinet/in_systm.h paths.h pty.h readpassphrase.h \ | 491 | netinet/in_systm.h pam/pam_appl.h paths.h pty.h readpassphrase.h \ |
478 | rpc/types.h security/pam_appl.h shadow.h stddef.h stdint.h \ | 492 | rpc/types.h security/pam_appl.h shadow.h stddef.h stdint.h \ |
479 | strings.h sys/strtio.h sys/audit.h sys/bitypes.h sys/bsdtty.h \ | 493 | strings.h sys/strtio.h sys/audit.h sys/bitypes.h sys/bsdtty.h \ |
480 | sys/cdefs.h sys/mman.h sys/pstat.h sys/select.h sys/stat.h \ | 494 | sys/cdefs.h sys/mman.h sys/pstat.h sys/ptms.h sys/select.h sys/stat.h \ |
481 | sys/stropts.h sys/sysmacros.h sys/time.h sys/timers.h \ | 495 | sys/stream.h sys/stropts.h sys/sysmacros.h sys/time.h sys/timers.h \ |
482 | sys/un.h time.h tmpdir.h ttyent.h usersec.h \ | 496 | sys/un.h time.h tmpdir.h ttyent.h usersec.h \ |
483 | util.h utime.h utmp.h utmpx.h vis.h) | 497 | util.h utime.h utmp.h utmpx.h vis.h) |
484 | 498 | ||
@@ -534,18 +548,6 @@ AC_CHECK_FUNC(getspnam, , | |||
534 | AC_CHECK_LIB(gen, getspnam, LIBS="$LIBS -lgen")) | 548 | AC_CHECK_LIB(gen, getspnam, LIBS="$LIBS -lgen")) |
535 | AC_SEARCH_LIBS(basename, gen, AC_DEFINE(HAVE_BASENAME)) | 549 | AC_SEARCH_LIBS(basename, gen, AC_DEFINE(HAVE_BASENAME)) |
536 | 550 | ||
537 | AC_ARG_WITH(rpath, | ||
538 | [ --without-rpath Disable auto-added -R linker paths], | ||
539 | [ | ||
540 | if test "x$withval" = "xno" ; then | ||
541 | need_dash_r="" | ||
542 | fi | ||
543 | if test "x$withval" = "xyes" ; then | ||
544 | need_dash_r=1 | ||
545 | fi | ||
546 | ] | ||
547 | ) | ||
548 | |||
549 | dnl zlib is required | 551 | dnl zlib is required |
550 | AC_ARG_WITH(zlib, | 552 | AC_ARG_WITH(zlib, |
551 | [ --with-zlib=PATH Use zlib in PATH], | 553 | [ --with-zlib=PATH Use zlib in PATH], |
@@ -574,13 +576,70 @@ AC_ARG_WITH(zlib, | |||
574 | ] | 576 | ] |
575 | ) | 577 | ) |
576 | 578 | ||
577 | AC_CHECK_LIB(z, deflate, ,AC_MSG_ERROR([*** zlib missing - please install first or check config.log ***])) | 579 | AC_CHECK_LIB(z, deflate, , |
580 | [ | ||
581 | saved_CPPFLAGS="$CPPFLAGS" | ||
582 | saved_LDFLAGS="$LDFLAGS" | ||
583 | save_LIBS="$LIBS" | ||
584 | dnl Check default zlib install dir | ||
585 | if test -n "${need_dash_r}"; then | ||
586 | LDFLAGS="-L/usr/local/lib -R/usr/local/lib ${saved_LDFLAGS}" | ||
587 | else | ||
588 | LDFLAGS="-L/usr/local/lib ${saved_LDFLAGS}" | ||
589 | fi | ||
590 | CPPFLAGS="-I/usr/local/include ${saved_CPPFLAGS}" | ||
591 | LIBS="$LIBS -lz" | ||
592 | AC_TRY_LINK_FUNC(deflate, AC_DEFINE(HAVE_LIBZ), | ||
593 | [ | ||
594 | AC_MSG_ERROR([*** zlib missing - please install first or check config.log ***]) | ||
595 | ] | ||
596 | ) | ||
597 | ] | ||
598 | ) | ||
599 | AC_CHECK_HEADER([zlib.h], ,AC_MSG_ERROR([*** zlib.h missing - please install first or check config.log ***])) | ||
600 | |||
601 | AC_ARG_WITH(zlib-version-check, | ||
602 | [ --without-zlib-version-check Disable zlib version check], | ||
603 | [ if test "x$withval" = "xno" ; then | ||
604 | zlib_check_nonfatal=1 | ||
605 | fi | ||
606 | ] | ||
607 | ) | ||
608 | |||
609 | AC_MSG_CHECKING(for zlib 1.1.4 or greater) | ||
610 | AC_TRY_RUN([ | ||
611 | #include <zlib.h> | ||
612 | int main() | ||
613 | { | ||
614 | int a, b, c, v; | ||
615 | if (sscanf(ZLIB_VERSION, "%d.%d.%d", &a, &b, &c) != 3) | ||
616 | exit(1); | ||
617 | v = a*1000000 + b*1000 + c; | ||
618 | if (v >= 1001004) | ||
619 | exit(0); | ||
620 | exit(2); | ||
621 | } | ||
622 | ], | ||
623 | AC_MSG_RESULT(yes), | ||
624 | [ AC_MSG_RESULT(no) | ||
625 | if test -z "$zlib_check_nonfatal" ; then | ||
626 | AC_MSG_ERROR([*** zlib too old - check config.log *** | ||
627 | Your reported zlib version has known security problems. It's possible your | ||
628 | vendor has fixed these problems without changing the version number. If you | ||
629 | are sure this is the case, you can disable the check by running | ||
630 | "./configure --without-zlib-version-check". | ||
631 | If you are in doubt, upgrade zlib to version 1.1.4 or greater.]) | ||
632 | else | ||
633 | AC_MSG_WARN([zlib version may have security problems]) | ||
634 | fi | ||
635 | ] | ||
636 | ) | ||
578 | 637 | ||
579 | dnl UnixWare 2.x | 638 | dnl UnixWare 2.x |
580 | AC_CHECK_FUNC(strcasecmp, | 639 | AC_CHECK_FUNC(strcasecmp, |
581 | [], [ AC_CHECK_LIB(resolv, strcasecmp, LIBS="$LIBS -lresolv") ] | 640 | [], [ AC_CHECK_LIB(resolv, strcasecmp, LIBS="$LIBS -lresolv") ] |
582 | ) | 641 | ) |
583 | AC_CHECK_FUNC(utimes, | 642 | AC_CHECK_FUNC(utimes, |
584 | [], [ AC_CHECK_LIB(c89, utimes, [AC_DEFINE(HAVE_UTIMES) | 643 | [], [ AC_CHECK_LIB(c89, utimes, [AC_DEFINE(HAVE_UTIMES) |
585 | LIBS="$LIBS -lc89"]) ] | 644 | LIBS="$LIBS -lc89"]) ] |
586 | ) | 645 | ) |
@@ -600,7 +659,7 @@ AC_EGREP_CPP(FOUNDIT, | |||
600 | #ifdef GLOB_ALTDIRFUNC | 659 | #ifdef GLOB_ALTDIRFUNC |
601 | FOUNDIT | 660 | FOUNDIT |
602 | #endif | 661 | #endif |
603 | ], | 662 | ], |
604 | [ | 663 | [ |
605 | AC_DEFINE(GLOB_HAS_ALTDIRFUNC) | 664 | AC_DEFINE(GLOB_HAS_ALTDIRFUNC) |
606 | AC_MSG_RESULT(yes) | 665 | AC_MSG_RESULT(yes) |
@@ -613,17 +672,17 @@ AC_EGREP_CPP(FOUNDIT, | |||
613 | # Check for g.gl_matchc glob() extension | 672 | # Check for g.gl_matchc glob() extension |
614 | AC_MSG_CHECKING(for gl_matchc field in glob_t) | 673 | AC_MSG_CHECKING(for gl_matchc field in glob_t) |
615 | AC_EGREP_CPP(FOUNDIT, | 674 | AC_EGREP_CPP(FOUNDIT, |
616 | [ | 675 | [ |
617 | #include <glob.h> | 676 | #include <glob.h> |
618 | int main(void){glob_t g; g.gl_matchc = 1;} | 677 | int main(void){glob_t g; g.gl_matchc = 1;} |
619 | ], | 678 | ], |
620 | [ | 679 | [ |
621 | AC_DEFINE(GLOB_HAS_GL_MATCHC) | 680 | AC_DEFINE(GLOB_HAS_GL_MATCHC) |
622 | AC_MSG_RESULT(yes) | 681 | AC_MSG_RESULT(yes) |
623 | ], | 682 | ], |
624 | [ | 683 | [ |
625 | AC_MSG_RESULT(no) | 684 | AC_MSG_RESULT(no) |
626 | ] | 685 | ] |
627 | ) | 686 | ) |
628 | 687 | ||
629 | AC_MSG_CHECKING([whether struct dirent allocates space for d_name]) | 688 | AC_MSG_CHECKING([whether struct dirent allocates space for d_name]) |
@@ -633,7 +692,7 @@ AC_TRY_RUN( | |||
633 | #include <dirent.h> | 692 | #include <dirent.h> |
634 | int main(void){struct dirent d;exit(sizeof(d.d_name)<=sizeof(char));} | 693 | int main(void){struct dirent d;exit(sizeof(d.d_name)<=sizeof(char));} |
635 | ], | 694 | ], |
636 | [AC_MSG_RESULT(yes)], | 695 | [AC_MSG_RESULT(yes)], |
637 | [ | 696 | [ |
638 | AC_MSG_RESULT(no) | 697 | AC_MSG_RESULT(no) |
639 | AC_DEFINE(BROKEN_ONE_BYTE_DIRENT_D_NAME) | 698 | AC_DEFINE(BROKEN_ONE_BYTE_DIRENT_D_NAME) |
@@ -641,10 +700,10 @@ int main(void){struct dirent d;exit(sizeof(d.d_name)<=sizeof(char));} | |||
641 | ) | 700 | ) |
642 | 701 | ||
643 | # Check whether user wants S/Key support | 702 | # Check whether user wants S/Key support |
644 | SKEY_MSG="no" | 703 | SKEY_MSG="no" |
645 | AC_ARG_WITH(skey, | 704 | AC_ARG_WITH(skey, |
646 | [ --with-skey[[=PATH]] Enable S/Key support | 705 | [ --with-skey[[=PATH]] Enable S/Key support |
647 | (optionally in PATH)], | 706 | (optionally in PATH)], |
648 | [ | 707 | [ |
649 | if test "x$withval" != "xno" ; then | 708 | if test "x$withval" != "xno" ; then |
650 | 709 | ||
@@ -655,7 +714,7 @@ AC_ARG_WITH(skey, | |||
655 | 714 | ||
656 | AC_DEFINE(SKEY) | 715 | AC_DEFINE(SKEY) |
657 | LIBS="-lskey $LIBS" | 716 | LIBS="-lskey $LIBS" |
658 | SKEY_MSG="yes" | 717 | SKEY_MSG="yes" |
659 | 718 | ||
660 | AC_MSG_CHECKING([for s/key support]) | 719 | AC_MSG_CHECKING([for s/key support]) |
661 | AC_TRY_RUN( | 720 | AC_TRY_RUN( |
@@ -677,7 +736,7 @@ int main() { char *ff = skey_keyinfo(""); ff=""; exit(0); } | |||
677 | TCPW_MSG="no" | 736 | TCPW_MSG="no" |
678 | AC_ARG_WITH(tcp-wrappers, | 737 | AC_ARG_WITH(tcp-wrappers, |
679 | [ --with-tcp-wrappers[[=PATH]] Enable tcpwrappers support | 738 | [ --with-tcp-wrappers[[=PATH]] Enable tcpwrappers support |
680 | (optionally in PATH)], | 739 | (optionally in PATH)], |
681 | [ | 740 | [ |
682 | if test "x$withval" != "xno" ; then | 741 | if test "x$withval" != "xno" ; then |
683 | saved_LIBS="$LIBS" | 742 | saved_LIBS="$LIBS" |
@@ -729,7 +788,7 @@ AC_ARG_WITH(tcp-wrappers, | |||
729 | 788 | ||
730 | dnl Checks for library functions. Please keep in alphabetical order | 789 | dnl Checks for library functions. Please keep in alphabetical order |
731 | AC_CHECK_FUNCS(\ | 790 | AC_CHECK_FUNCS(\ |
732 | arc4random __b64_ntop b64_ntop __b64_pton b64_pton basename \ | 791 | arc4random __b64_ntop b64_ntop __b64_pton b64_pton \ |
733 | bcopy bindresvport_sa clock fchmod fchown freeaddrinfo futimes \ | 792 | bcopy bindresvport_sa clock fchmod fchown freeaddrinfo futimes \ |
734 | getaddrinfo getcwd getgrouplist getnameinfo getopt \ | 793 | getaddrinfo getcwd getgrouplist getnameinfo getopt \ |
735 | getpeereid _getpty getrlimit getttyent glob inet_aton \ | 794 | getpeereid _getpty getrlimit getttyent glob inet_aton \ |
@@ -737,10 +796,10 @@ AC_CHECK_FUNCS(\ | |||
737 | mkdtemp mmap ngetaddrinfo nsleep ogetaddrinfo openlog_r openpty \ | 796 | mkdtemp mmap ngetaddrinfo nsleep ogetaddrinfo openlog_r openpty \ |
738 | pstat readpassphrase realpath recvmsg rresvport_af sendmsg \ | 797 | pstat readpassphrase realpath recvmsg rresvport_af sendmsg \ |
739 | setdtablesize setegid setenv seteuid setgroups setlogin setpcred \ | 798 | setdtablesize setegid setenv seteuid setgroups setlogin setpcred \ |
740 | setproctitle setregid setresgid setresuid setreuid setrlimit \ | 799 | setproctitle setregid setreuid setrlimit \ |
741 | setsid setvbuf sigaction sigvec snprintf socketpair strerror \ | 800 | setsid setvbuf sigaction sigvec snprintf socketpair strerror \ |
742 | strlcat strlcpy strmode strnvis sysconf tcgetpgrp \ | 801 | strlcat strlcpy strmode strnvis strtoul sysconf tcgetpgrp \ |
743 | truncate utimes vhangup vsnprintf waitpid \ | 802 | truncate updwtmpx utimes vhangup vsnprintf waitpid \ |
744 | ) | 803 | ) |
745 | 804 | ||
746 | # IRIX has a const char return value for gai_strerror() | 805 | # IRIX has a const char return value for gai_strerror() |
@@ -767,10 +826,38 @@ AC_CHECK_DECL(getrusage, [AC_CHECK_FUNCS(getrusage)]) | |||
767 | dnl tcsendbreak might be a macro | 826 | dnl tcsendbreak might be a macro |
768 | AC_CHECK_DECL(tcsendbreak, | 827 | AC_CHECK_DECL(tcsendbreak, |
769 | [AC_DEFINE(HAVE_TCSENDBREAK)], | 828 | [AC_DEFINE(HAVE_TCSENDBREAK)], |
770 | [AC_CHECK_FUNCS(tcsendbreak)], | 829 | [AC_CHECK_FUNCS(tcsendbreak)], |
771 | [#include <termios.h>] | 830 | [#include <termios.h>] |
772 | ) | 831 | ) |
773 | 832 | ||
833 | AC_CHECK_FUNCS(setresuid, [ | ||
834 | dnl Some platorms have setresuid that isn't implemented, test for this | ||
835 | AC_MSG_CHECKING(if setresuid seems to work) | ||
836 | AC_TRY_RUN([ | ||
837 | #include <stdlib.h> | ||
838 | #include <errno.h> | ||
839 | int main(){errno=0; setresuid(0,0,0); if (errno==ENOSYS) exit(1); else exit(0);} | ||
840 | ], | ||
841 | [AC_MSG_RESULT(yes)], | ||
842 | [AC_DEFINE(BROKEN_SETRESUID) | ||
843 | AC_MSG_RESULT(not implemented)] | ||
844 | ) | ||
845 | ]) | ||
846 | |||
847 | AC_CHECK_FUNCS(setresgid, [ | ||
848 | dnl Some platorms have setresgid that isn't implemented, test for this | ||
849 | AC_MSG_CHECKING(if setresgid seems to work) | ||
850 | AC_TRY_RUN([ | ||
851 | #include <stdlib.h> | ||
852 | #include <errno.h> | ||
853 | int main(){errno=0; setresgid(0,0,0); if (errno==ENOSYS) exit(1); else exit(0);} | ||
854 | ], | ||
855 | [AC_MSG_RESULT(yes)], | ||
856 | [AC_DEFINE(BROKEN_SETRESGID) | ||
857 | AC_MSG_RESULT(not implemented)] | ||
858 | ) | ||
859 | ]) | ||
860 | |||
774 | dnl Checks for time functions | 861 | dnl Checks for time functions |
775 | AC_CHECK_FUNCS(gettimeofday time) | 862 | AC_CHECK_FUNCS(gettimeofday time) |
776 | dnl Checks for utmp functions | 863 | dnl Checks for utmp functions |
@@ -780,12 +867,12 @@ dnl Checks for utmpx functions | |||
780 | AC_CHECK_FUNCS(endutxent getutxent getutxid getutxline pututxline ) | 867 | AC_CHECK_FUNCS(endutxent getutxent getutxid getutxline pututxline ) |
781 | AC_CHECK_FUNCS(setutxent utmpxname) | 868 | AC_CHECK_FUNCS(setutxent utmpxname) |
782 | 869 | ||
783 | AC_CHECK_FUNC(daemon, | 870 | AC_CHECK_FUNC(daemon, |
784 | [AC_DEFINE(HAVE_DAEMON)], | 871 | [AC_DEFINE(HAVE_DAEMON)], |
785 | [AC_CHECK_LIB(bsd, daemon, [LIBS="$LIBS -lbsd"; AC_DEFINE(HAVE_DAEMON)])] | 872 | [AC_CHECK_LIB(bsd, daemon, [LIBS="$LIBS -lbsd"; AC_DEFINE(HAVE_DAEMON)])] |
786 | ) | 873 | ) |
787 | 874 | ||
788 | AC_CHECK_FUNC(getpagesize, | 875 | AC_CHECK_FUNC(getpagesize, |
789 | [AC_DEFINE(HAVE_GETPAGESIZE)], | 876 | [AC_DEFINE(HAVE_GETPAGESIZE)], |
790 | [AC_CHECK_LIB(ucb, getpagesize, [LIBS="$LIBS -lucb"; AC_DEFINE(HAVE_GETPAGESIZE)])] | 877 | [AC_CHECK_LIB(ucb, getpagesize, [LIBS="$LIBS -lucb"; AC_DEFINE(HAVE_GETPAGESIZE)])] |
791 | ) | 878 | ) |
@@ -798,7 +885,7 @@ if test "x$ac_cv_func_snprintf" = "xyes" ; then | |||
798 | #include <stdio.h> | 885 | #include <stdio.h> |
799 | int main(void){char b[5];snprintf(b,5,"123456789");exit(b[4]!='\0');} | 886 | int main(void){char b[5];snprintf(b,5,"123456789");exit(b[4]!='\0');} |
800 | ], | 887 | ], |
801 | [AC_MSG_RESULT(yes)], | 888 | [AC_MSG_RESULT(yes)], |
802 | [ | 889 | [ |
803 | AC_MSG_RESULT(no) | 890 | AC_MSG_RESULT(no) |
804 | AC_DEFINE(BROKEN_SNPRINTF) | 891 | AC_DEFINE(BROKEN_SNPRINTF) |
@@ -822,14 +909,14 @@ unlink(template); exit(0); | |||
822 | [ | 909 | [ |
823 | AC_MSG_RESULT(no) | 910 | AC_MSG_RESULT(no) |
824 | ], | 911 | ], |
825 | [ | 912 | [ |
826 | AC_MSG_RESULT(yes) | 913 | AC_MSG_RESULT(yes) |
827 | AC_DEFINE(HAVE_STRICT_MKSTEMP) | 914 | AC_DEFINE(HAVE_STRICT_MKSTEMP) |
828 | ], | 915 | ], |
829 | [ | 916 | [ |
830 | AC_MSG_RESULT(yes) | 917 | AC_MSG_RESULT(yes) |
831 | AC_DEFINE(HAVE_STRICT_MKSTEMP) | 918 | AC_DEFINE(HAVE_STRICT_MKSTEMP) |
832 | ] | 919 | ] |
833 | ) | 920 | ) |
834 | fi | 921 | fi |
835 | 922 | ||
@@ -854,7 +941,7 @@ main() | |||
854 | exit(1); | 941 | exit(1); |
855 | } else if (pid > 0) { /* parent */ | 942 | } else if (pid > 0) { /* parent */ |
856 | waitpid(pid, &status, 0); | 943 | waitpid(pid, &status, 0); |
857 | if (WIFEXITED(status)) | 944 | if (WIFEXITED(status)) |
858 | exit(WEXITSTATUS(status)); | 945 | exit(WEXITSTATUS(status)); |
859 | else | 946 | else |
860 | exit(2); | 947 | exit(2); |
@@ -888,7 +975,8 @@ AC_ARG_WITH(pam, | |||
888 | [ --with-pam Enable PAM support ], | 975 | [ --with-pam Enable PAM support ], |
889 | [ | 976 | [ |
890 | if test "x$withval" != "xno" ; then | 977 | if test "x$withval" != "xno" ; then |
891 | if test "x$ac_cv_header_security_pam_appl_h" != "xyes" ; then | 978 | if test "x$ac_cv_header_security_pam_appl_h" != "xyes" && \ |
979 | test "x$ac_cv_header_pam_pam_appl_h" != "xyes" ; then | ||
892 | AC_MSG_ERROR([PAM headers not found]) | 980 | AC_MSG_ERROR([PAM headers not found]) |
893 | fi | 981 | fi |
894 | 982 | ||
@@ -897,7 +985,6 @@ AC_ARG_WITH(pam, | |||
897 | AC_CHECK_FUNCS(pam_getenvlist) | 985 | AC_CHECK_FUNCS(pam_getenvlist) |
898 | AC_CHECK_FUNCS(pam_putenv) | 986 | AC_CHECK_FUNCS(pam_putenv) |
899 | 987 | ||
900 | disable_shadow=yes | ||
901 | PAM_MSG="yes" | 988 | PAM_MSG="yes" |
902 | 989 | ||
903 | AC_DEFINE(USE_PAM) | 990 | AC_DEFINE(USE_PAM) |
@@ -918,9 +1005,13 @@ if test "x$PAM_MSG" = "xyes" ; then | |||
918 | AC_TRY_COMPILE( | 1005 | AC_TRY_COMPILE( |
919 | [ | 1006 | [ |
920 | #include <stdlib.h> | 1007 | #include <stdlib.h> |
1008 | #if defined(HAVE_SECURITY_PAM_APPL_H) | ||
921 | #include <security/pam_appl.h> | 1009 | #include <security/pam_appl.h> |
922 | ], | 1010 | #elif defined (HAVE_PAM_PAM_APPL_H) |
923 | [(void)pam_strerror((pam_handle_t *)NULL, -1);], | 1011 | #include <pam/pam_appl.h> |
1012 | #endif | ||
1013 | ], | ||
1014 | [(void)pam_strerror((pam_handle_t *)NULL, -1);], | ||
924 | [AC_MSG_RESULT(no)], | 1015 | [AC_MSG_RESULT(no)], |
925 | [ | 1016 | [ |
926 | AC_DEFINE(HAVE_OLD_PAM) | 1017 | AC_DEFINE(HAVE_OLD_PAM) |
@@ -930,12 +1021,6 @@ if test "x$PAM_MSG" = "xyes" ; then | |||
930 | ) | 1021 | ) |
931 | fi | 1022 | fi |
932 | 1023 | ||
933 | # Some systems want crypt() from libcrypt, *not* the version in OpenSSL, | ||
934 | # because the system crypt() is more featureful. | ||
935 | if test "x$check_for_libcrypt_before" = "x1"; then | ||
936 | AC_CHECK_LIB(crypt, crypt) | ||
937 | fi | ||
938 | |||
939 | # Search for OpenSSL | 1024 | # Search for OpenSSL |
940 | saved_CPPFLAGS="$CPPFLAGS" | 1025 | saved_CPPFLAGS="$CPPFLAGS" |
941 | saved_LDFLAGS="$LDFLAGS" | 1026 | saved_LDFLAGS="$LDFLAGS" |
@@ -964,7 +1049,7 @@ AC_ARG_WITH(ssl-dir, | |||
964 | fi | 1049 | fi |
965 | ] | 1050 | ] |
966 | ) | 1051 | ) |
967 | LIBS="$LIBS -lcrypto" | 1052 | LIBS="-lcrypto $LIBS" |
968 | AC_TRY_LINK_FUNC(RAND_add, AC_DEFINE(HAVE_OPENSSL), | 1053 | AC_TRY_LINK_FUNC(RAND_add, AC_DEFINE(HAVE_OPENSSL), |
969 | [ | 1054 | [ |
970 | dnl Check default openssl install dir | 1055 | dnl Check default openssl install dir |
@@ -991,12 +1076,12 @@ AC_TRY_RUN( | |||
991 | #include <openssl/opensslv.h> | 1076 | #include <openssl/opensslv.h> |
992 | #define DATA "conftest.sslincver" | 1077 | #define DATA "conftest.sslincver" |
993 | int main(void) { | 1078 | int main(void) { |
994 | FILE *fd; | 1079 | FILE *fd; |
995 | int rc; | 1080 | int rc; |
996 | 1081 | ||
997 | fd = fopen(DATA,"w"); | 1082 | fd = fopen(DATA,"w"); |
998 | if(fd == NULL) | 1083 | if(fd == NULL) |
999 | exit(1); | 1084 | exit(1); |
1000 | 1085 | ||
1001 | if ((rc = fprintf(fd ,"%x (%s)\n", OPENSSL_VERSION_NUMBER, OPENSSL_VERSION_TEXT)) <0) | 1086 | if ((rc = fprintf(fd ,"%x (%s)\n", OPENSSL_VERSION_NUMBER, OPENSSL_VERSION_TEXT)) <0) |
1002 | exit(1); | 1087 | exit(1); |
@@ -1024,12 +1109,12 @@ AC_TRY_RUN( | |||
1024 | #include <openssl/crypto.h> | 1109 | #include <openssl/crypto.h> |
1025 | #define DATA "conftest.ssllibver" | 1110 | #define DATA "conftest.ssllibver" |
1026 | int main(void) { | 1111 | int main(void) { |
1027 | FILE *fd; | 1112 | FILE *fd; |
1028 | int rc; | 1113 | int rc; |
1029 | 1114 | ||
1030 | fd = fopen(DATA,"w"); | 1115 | fd = fopen(DATA,"w"); |
1031 | if(fd == NULL) | 1116 | if(fd == NULL) |
1032 | exit(1); | 1117 | exit(1); |
1033 | 1118 | ||
1034 | if ((rc = fprintf(fd ,"%x (%s)\n", SSLeay(), SSLeay_version(SSLEAY_VERSION))) <0) | 1119 | if ((rc = fprintf(fd ,"%x (%s)\n", SSLeay(), SSLeay_version(SSLEAY_VERSION))) <0) |
1035 | exit(1); | 1120 | exit(1); |
@@ -1066,8 +1151,14 @@ Also see contrib/findssl.sh for help identifying header/library mismatches.]) | |||
1066 | ] | 1151 | ] |
1067 | ) | 1152 | ) |
1068 | 1153 | ||
1069 | # Some Linux systems (Slackware) need crypt() from libcrypt, *not* the | 1154 | # Some systems want crypt() from libcrypt, *not* the version in OpenSSL, |
1070 | # version in OpenSSL. Skip this for PAM | 1155 | # because the system crypt() is more featureful. |
1156 | if test "x$check_for_libcrypt_before" = "x1"; then | ||
1157 | AC_CHECK_LIB(crypt, crypt) | ||
1158 | fi | ||
1159 | |||
1160 | # Some Linux systems (Slackware) need crypt() from libcrypt, *not* the | ||
1161 | # version in OpenSSL. | ||
1071 | if test "x$check_for_libcrypt_later" = "x1"; then | 1162 | if test "x$check_for_libcrypt_later" = "x1"; then |
1072 | AC_CHECK_LIB(crypt, crypt, LIBS="$LIBS -lcrypt") | 1163 | AC_CHECK_LIB(crypt, crypt, LIBS="$LIBS -lcrypt") |
1073 | fi | 1164 | fi |
@@ -1101,7 +1192,7 @@ AC_ARG_WITH(rand-helper, | |||
1101 | [ --with-rand-helper Use subprocess to gather strong randomness ], | 1192 | [ --with-rand-helper Use subprocess to gather strong randomness ], |
1102 | [ | 1193 | [ |
1103 | if test "x$withval" = "xno" ; then | 1194 | if test "x$withval" = "xno" ; then |
1104 | # Force use of OpenSSL's internal RNG, even if | 1195 | # Force use of OpenSSL's internal RNG, even if |
1105 | # the previous test showed it to be unseeded. | 1196 | # the previous test showed it to be unseeded. |
1106 | if test -z "$OPENSSL_SEEDS_ITSELF" ; then | 1197 | if test -z "$OPENSSL_SEEDS_ITSELF" ; then |
1107 | AC_MSG_WARN([*** Forcing use of OpenSSL's non-self-seeding PRNG]) | 1198 | AC_MSG_WARN([*** Forcing use of OpenSSL's non-self-seeding PRNG]) |
@@ -1238,7 +1329,7 @@ test -d /sbin && PATH=$PATH:/sbin | |||
1238 | test -d /usr/sbin && PATH=$PATH:/usr/sbin | 1329 | test -d /usr/sbin && PATH=$PATH:/usr/sbin |
1239 | PATH=$PATH:/etc:$OPATH | 1330 | PATH=$PATH:/etc:$OPATH |
1240 | 1331 | ||
1241 | # These programs are used by the command hashing source to gather entropy | 1332 | # These programs are used by the command hashing source to gather entropy |
1242 | OSSH_PATH_ENTROPY_PROG(PROG_LS, ls) | 1333 | OSSH_PATH_ENTROPY_PROG(PROG_LS, ls) |
1243 | OSSH_PATH_ENTROPY_PROG(PROG_NETSTAT, netstat) | 1334 | OSSH_PATH_ENTROPY_PROG(PROG_NETSTAT, netstat) |
1244 | OSSH_PATH_ENTROPY_PROG(PROG_ARP, arp) | 1335 | OSSH_PATH_ENTROPY_PROG(PROG_ARP, arp) |
@@ -1294,8 +1385,8 @@ fi | |||
1294 | # More checks for data types | 1385 | # More checks for data types |
1295 | AC_CACHE_CHECK([for u_int type], ac_cv_have_u_int, [ | 1386 | AC_CACHE_CHECK([for u_int type], ac_cv_have_u_int, [ |
1296 | AC_TRY_COMPILE( | 1387 | AC_TRY_COMPILE( |
1297 | [ #include <sys/types.h> ], | 1388 | [ #include <sys/types.h> ], |
1298 | [ u_int a; a = 1;], | 1389 | [ u_int a; a = 1;], |
1299 | [ ac_cv_have_u_int="yes" ], | 1390 | [ ac_cv_have_u_int="yes" ], |
1300 | [ ac_cv_have_u_int="no" ] | 1391 | [ ac_cv_have_u_int="no" ] |
1301 | ) | 1392 | ) |
@@ -1307,8 +1398,8 @@ fi | |||
1307 | 1398 | ||
1308 | AC_CACHE_CHECK([for intXX_t types], ac_cv_have_intxx_t, [ | 1399 | AC_CACHE_CHECK([for intXX_t types], ac_cv_have_intxx_t, [ |
1309 | AC_TRY_COMPILE( | 1400 | AC_TRY_COMPILE( |
1310 | [ #include <sys/types.h> ], | 1401 | [ #include <sys/types.h> ], |
1311 | [ int8_t a; int16_t b; int32_t c; a = b = c = 1;], | 1402 | [ int8_t a; int16_t b; int32_t c; a = b = c = 1;], |
1312 | [ ac_cv_have_intxx_t="yes" ], | 1403 | [ ac_cv_have_intxx_t="yes" ], |
1313 | [ ac_cv_have_intxx_t="no" ] | 1404 | [ ac_cv_have_intxx_t="no" ] |
1314 | ) | 1405 | ) |
@@ -1319,12 +1410,12 @@ if test "x$ac_cv_have_intxx_t" = "xyes" ; then | |||
1319 | fi | 1410 | fi |
1320 | 1411 | ||
1321 | if (test -z "$have_intxx_t" && \ | 1412 | if (test -z "$have_intxx_t" && \ |
1322 | test "x$ac_cv_header_stdint_h" = "xyes") | 1413 | test "x$ac_cv_header_stdint_h" = "xyes") |
1323 | then | 1414 | then |
1324 | AC_MSG_CHECKING([for intXX_t types in stdint.h]) | 1415 | AC_MSG_CHECKING([for intXX_t types in stdint.h]) |
1325 | AC_TRY_COMPILE( | 1416 | AC_TRY_COMPILE( |
1326 | [ #include <stdint.h> ], | 1417 | [ #include <stdint.h> ], |
1327 | [ int8_t a; int16_t b; int32_t c; a = b = c = 1;], | 1418 | [ int8_t a; int16_t b; int32_t c; a = b = c = 1;], |
1328 | [ | 1419 | [ |
1329 | AC_DEFINE(HAVE_INTXX_T) | 1420 | AC_DEFINE(HAVE_INTXX_T) |
1330 | AC_MSG_RESULT(yes) | 1421 | AC_MSG_RESULT(yes) |
@@ -1344,8 +1435,8 @@ AC_CACHE_CHECK([for int64_t type], ac_cv_have_int64_t, [ | |||
1344 | #ifdef HAVE_SYS_BITYPES_H | 1435 | #ifdef HAVE_SYS_BITYPES_H |
1345 | # include <sys/bitypes.h> | 1436 | # include <sys/bitypes.h> |
1346 | #endif | 1437 | #endif |
1347 | ], | 1438 | ], |
1348 | [ int64_t a; a = 1;], | 1439 | [ int64_t a; a = 1;], |
1349 | [ ac_cv_have_int64_t="yes" ], | 1440 | [ ac_cv_have_int64_t="yes" ], |
1350 | [ ac_cv_have_int64_t="no" ] | 1441 | [ ac_cv_have_int64_t="no" ] |
1351 | ) | 1442 | ) |
@@ -1356,8 +1447,8 @@ fi | |||
1356 | 1447 | ||
1357 | AC_CACHE_CHECK([for u_intXX_t types], ac_cv_have_u_intxx_t, [ | 1448 | AC_CACHE_CHECK([for u_intXX_t types], ac_cv_have_u_intxx_t, [ |
1358 | AC_TRY_COMPILE( | 1449 | AC_TRY_COMPILE( |
1359 | [ #include <sys/types.h> ], | 1450 | [ #include <sys/types.h> ], |
1360 | [ u_int8_t a; u_int16_t b; u_int32_t c; a = b = c = 1;], | 1451 | [ u_int8_t a; u_int16_t b; u_int32_t c; a = b = c = 1;], |
1361 | [ ac_cv_have_u_intxx_t="yes" ], | 1452 | [ ac_cv_have_u_intxx_t="yes" ], |
1362 | [ ac_cv_have_u_intxx_t="no" ] | 1453 | [ ac_cv_have_u_intxx_t="no" ] |
1363 | ) | 1454 | ) |
@@ -1370,8 +1461,8 @@ fi | |||
1370 | if test -z "$have_u_intxx_t" ; then | 1461 | if test -z "$have_u_intxx_t" ; then |
1371 | AC_MSG_CHECKING([for u_intXX_t types in sys/socket.h]) | 1462 | AC_MSG_CHECKING([for u_intXX_t types in sys/socket.h]) |
1372 | AC_TRY_COMPILE( | 1463 | AC_TRY_COMPILE( |
1373 | [ #include <sys/socket.h> ], | 1464 | [ #include <sys/socket.h> ], |
1374 | [ u_int8_t a; u_int16_t b; u_int32_t c; a = b = c = 1;], | 1465 | [ u_int8_t a; u_int16_t b; u_int32_t c; a = b = c = 1;], |
1375 | [ | 1466 | [ |
1376 | AC_DEFINE(HAVE_U_INTXX_T) | 1467 | AC_DEFINE(HAVE_U_INTXX_T) |
1377 | AC_MSG_RESULT(yes) | 1468 | AC_MSG_RESULT(yes) |
@@ -1382,8 +1473,8 @@ fi | |||
1382 | 1473 | ||
1383 | AC_CACHE_CHECK([for u_int64_t types], ac_cv_have_u_int64_t, [ | 1474 | AC_CACHE_CHECK([for u_int64_t types], ac_cv_have_u_int64_t, [ |
1384 | AC_TRY_COMPILE( | 1475 | AC_TRY_COMPILE( |
1385 | [ #include <sys/types.h> ], | 1476 | [ #include <sys/types.h> ], |
1386 | [ u_int64_t a; a = 1;], | 1477 | [ u_int64_t a; a = 1;], |
1387 | [ ac_cv_have_u_int64_t="yes" ], | 1478 | [ ac_cv_have_u_int64_t="yes" ], |
1388 | [ ac_cv_have_u_int64_t="no" ] | 1479 | [ ac_cv_have_u_int64_t="no" ] |
1389 | ) | 1480 | ) |
@@ -1396,7 +1487,7 @@ fi | |||
1396 | if test -z "$have_u_int64_t" ; then | 1487 | if test -z "$have_u_int64_t" ; then |
1397 | AC_MSG_CHECKING([for u_int64_t type in sys/bitypes.h]) | 1488 | AC_MSG_CHECKING([for u_int64_t type in sys/bitypes.h]) |
1398 | AC_TRY_COMPILE( | 1489 | AC_TRY_COMPILE( |
1399 | [ #include <sys/bitypes.h> ], | 1490 | [ #include <sys/bitypes.h> ], |
1400 | [ u_int64_t a; a = 1], | 1491 | [ u_int64_t a; a = 1], |
1401 | [ | 1492 | [ |
1402 | AC_DEFINE(HAVE_U_INT64_T) | 1493 | AC_DEFINE(HAVE_U_INT64_T) |
@@ -1411,8 +1502,8 @@ if test -z "$have_u_intxx_t" ; then | |||
1411 | AC_TRY_COMPILE( | 1502 | AC_TRY_COMPILE( |
1412 | [ | 1503 | [ |
1413 | #include <sys/types.h> | 1504 | #include <sys/types.h> |
1414 | ], | 1505 | ], |
1415 | [ uint8_t a; uint16_t b; uint32_t c; a = b = c = 1; ], | 1506 | [ uint8_t a; uint16_t b; uint32_t c; a = b = c = 1; ], |
1416 | [ ac_cv_have_uintxx_t="yes" ], | 1507 | [ ac_cv_have_uintxx_t="yes" ], |
1417 | [ ac_cv_have_uintxx_t="no" ] | 1508 | [ ac_cv_have_uintxx_t="no" ] |
1418 | ) | 1509 | ) |
@@ -1425,8 +1516,8 @@ fi | |||
1425 | if test -z "$have_uintxx_t" ; then | 1516 | if test -z "$have_uintxx_t" ; then |
1426 | AC_MSG_CHECKING([for uintXX_t types in stdint.h]) | 1517 | AC_MSG_CHECKING([for uintXX_t types in stdint.h]) |
1427 | AC_TRY_COMPILE( | 1518 | AC_TRY_COMPILE( |
1428 | [ #include <stdint.h> ], | 1519 | [ #include <stdint.h> ], |
1429 | [ uint8_t a; uint16_t b; uint32_t c; a = b = c = 1;], | 1520 | [ uint8_t a; uint16_t b; uint32_t c; a = b = c = 1;], |
1430 | [ | 1521 | [ |
1431 | AC_DEFINE(HAVE_UINTXX_T) | 1522 | AC_DEFINE(HAVE_UINTXX_T) |
1432 | AC_MSG_RESULT(yes) | 1523 | AC_MSG_RESULT(yes) |
@@ -1436,25 +1527,25 @@ if test -z "$have_uintxx_t" ; then | |||
1436 | fi | 1527 | fi |
1437 | 1528 | ||
1438 | if (test -z "$have_u_intxx_t" || test -z "$have_intxx_t" && \ | 1529 | if (test -z "$have_u_intxx_t" || test -z "$have_intxx_t" && \ |
1439 | test "x$ac_cv_header_sys_bitypes_h" = "xyes") | 1530 | test "x$ac_cv_header_sys_bitypes_h" = "xyes") |
1440 | then | 1531 | then |
1441 | AC_MSG_CHECKING([for intXX_t and u_intXX_t types in sys/bitypes.h]) | 1532 | AC_MSG_CHECKING([for intXX_t and u_intXX_t types in sys/bitypes.h]) |
1442 | AC_TRY_COMPILE( | 1533 | AC_TRY_COMPILE( |
1443 | [ | 1534 | [ |
1444 | #include <sys/bitypes.h> | 1535 | #include <sys/bitypes.h> |
1445 | ], | 1536 | ], |
1446 | [ | 1537 | [ |
1447 | int8_t a; int16_t b; int32_t c; | 1538 | int8_t a; int16_t b; int32_t c; |
1448 | u_int8_t e; u_int16_t f; u_int32_t g; | 1539 | u_int8_t e; u_int16_t f; u_int32_t g; |
1449 | a = b = c = e = f = g = 1; | 1540 | a = b = c = e = f = g = 1; |
1450 | ], | 1541 | ], |
1451 | [ | 1542 | [ |
1452 | AC_DEFINE(HAVE_U_INTXX_T) | 1543 | AC_DEFINE(HAVE_U_INTXX_T) |
1453 | AC_DEFINE(HAVE_INTXX_T) | 1544 | AC_DEFINE(HAVE_INTXX_T) |
1454 | AC_MSG_RESULT(yes) | 1545 | AC_MSG_RESULT(yes) |
1455 | ], | 1546 | ], |
1456 | [AC_MSG_RESULT(no)] | 1547 | [AC_MSG_RESULT(no)] |
1457 | ) | 1548 | ) |
1458 | fi | 1549 | fi |
1459 | 1550 | ||
1460 | 1551 | ||
@@ -1635,8 +1726,8 @@ fi | |||
1635 | 1726 | ||
1636 | AC_CACHE_CHECK([for struct timeval], ac_cv_have_struct_timeval, [ | 1727 | AC_CACHE_CHECK([for struct timeval], ac_cv_have_struct_timeval, [ |
1637 | AC_TRY_COMPILE( | 1728 | AC_TRY_COMPILE( |
1638 | [ #include <sys/time.h> ], | 1729 | [ #include <sys/time.h> ], |
1639 | [ struct timeval tv; tv.tv_sec = 1;], | 1730 | [ struct timeval tv; tv.tv_sec = 1;], |
1640 | [ ac_cv_have_struct_timeval="yes" ], | 1731 | [ ac_cv_have_struct_timeval="yes" ], |
1641 | [ ac_cv_have_struct_timeval="no" ] | 1732 | [ ac_cv_have_struct_timeval="no" ] |
1642 | ) | 1733 | ) |
@@ -1676,7 +1767,7 @@ main() | |||
1676 | strcpy(expected_out, "9223372036854775807"); | 1767 | strcpy(expected_out, "9223372036854775807"); |
1677 | snprintf(buf, mazsize, "%lld", num); | 1768 | snprintf(buf, mazsize, "%lld", num); |
1678 | if(strcmp(buf, expected_out) != 0) | 1769 | if(strcmp(buf, expected_out) != 0) |
1679 | exit(1); | 1770 | exit(1); |
1680 | exit(0); | 1771 | exit(0); |
1681 | } | 1772 | } |
1682 | #else | 1773 | #else |
@@ -1834,8 +1925,8 @@ if test "x$ac_cv_have_control_in_msghdr" = "xyes" ; then | |||
1834 | fi | 1925 | fi |
1835 | 1926 | ||
1836 | AC_CACHE_CHECK([if libc defines __progname], ac_cv_libc_defines___progname, [ | 1927 | AC_CACHE_CHECK([if libc defines __progname], ac_cv_libc_defines___progname, [ |
1837 | AC_TRY_LINK([], | 1928 | AC_TRY_LINK([], |
1838 | [ extern char *__progname; printf("%s", __progname); ], | 1929 | [ extern char *__progname; printf("%s", __progname); ], |
1839 | [ ac_cv_libc_defines___progname="yes" ], | 1930 | [ ac_cv_libc_defines___progname="yes" ], |
1840 | [ ac_cv_libc_defines___progname="no" ] | 1931 | [ ac_cv_libc_defines___progname="no" ] |
1841 | ) | 1932 | ) |
@@ -1847,8 +1938,8 @@ fi | |||
1847 | AC_CACHE_CHECK([whether $CC implements __FUNCTION__], ac_cv_cc_implements___FUNCTION__, [ | 1938 | AC_CACHE_CHECK([whether $CC implements __FUNCTION__], ac_cv_cc_implements___FUNCTION__, [ |
1848 | AC_TRY_LINK([ | 1939 | AC_TRY_LINK([ |
1849 | #include <stdio.h> | 1940 | #include <stdio.h> |
1850 | ], | 1941 | ], |
1851 | [ printf("%s", __FUNCTION__); ], | 1942 | [ printf("%s", __FUNCTION__); ], |
1852 | [ ac_cv_cc_implements___FUNCTION__="yes" ], | 1943 | [ ac_cv_cc_implements___FUNCTION__="yes" ], |
1853 | [ ac_cv_cc_implements___FUNCTION__="no" ] | 1944 | [ ac_cv_cc_implements___FUNCTION__="no" ] |
1854 | ) | 1945 | ) |
@@ -1860,8 +1951,8 @@ fi | |||
1860 | AC_CACHE_CHECK([whether $CC implements __func__], ac_cv_cc_implements___func__, [ | 1951 | AC_CACHE_CHECK([whether $CC implements __func__], ac_cv_cc_implements___func__, [ |
1861 | AC_TRY_LINK([ | 1952 | AC_TRY_LINK([ |
1862 | #include <stdio.h> | 1953 | #include <stdio.h> |
1863 | ], | 1954 | ], |
1864 | [ printf("%s", __func__); ], | 1955 | [ printf("%s", __func__); ], |
1865 | [ ac_cv_cc_implements___func__="yes" ], | 1956 | [ ac_cv_cc_implements___func__="yes" ], |
1866 | [ ac_cv_cc_implements___func__="no" ] | 1957 | [ ac_cv_cc_implements___func__="no" ] |
1867 | ) | 1958 | ) |
@@ -1886,8 +1977,8 @@ if test "x$ac_cv_have_getopt_optreset" = "xyes" ; then | |||
1886 | fi | 1977 | fi |
1887 | 1978 | ||
1888 | AC_CACHE_CHECK([if libc defines sys_errlist], ac_cv_libc_defines_sys_errlist, [ | 1979 | AC_CACHE_CHECK([if libc defines sys_errlist], ac_cv_libc_defines_sys_errlist, [ |
1889 | AC_TRY_LINK([], | 1980 | AC_TRY_LINK([], |
1890 | [ extern const char *const sys_errlist[]; printf("%s", sys_errlist[0]);], | 1981 | [ extern const char *const sys_errlist[]; printf("%s", sys_errlist[0]);], |
1891 | [ ac_cv_libc_defines_sys_errlist="yes" ], | 1982 | [ ac_cv_libc_defines_sys_errlist="yes" ], |
1892 | [ ac_cv_libc_defines_sys_errlist="no" ] | 1983 | [ ac_cv_libc_defines_sys_errlist="no" ] |
1893 | ) | 1984 | ) |
@@ -1898,8 +1989,8 @@ fi | |||
1898 | 1989 | ||
1899 | 1990 | ||
1900 | AC_CACHE_CHECK([if libc defines sys_nerr], ac_cv_libc_defines_sys_nerr, [ | 1991 | AC_CACHE_CHECK([if libc defines sys_nerr], ac_cv_libc_defines_sys_nerr, [ |
1901 | AC_TRY_LINK([], | 1992 | AC_TRY_LINK([], |
1902 | [ extern int sys_nerr; printf("%i", sys_nerr);], | 1993 | [ extern int sys_nerr; printf("%i", sys_nerr);], |
1903 | [ ac_cv_libc_defines_sys_nerr="yes" ], | 1994 | [ ac_cv_libc_defines_sys_nerr="yes" ], |
1904 | [ ac_cv_libc_defines_sys_nerr="no" ] | 1995 | [ ac_cv_libc_defines_sys_nerr="no" ] |
1905 | ) | 1996 | ) |
@@ -1908,7 +1999,7 @@ if test "x$ac_cv_libc_defines_sys_nerr" = "xyes" ; then | |||
1908 | AC_DEFINE(HAVE_SYS_NERR) | 1999 | AC_DEFINE(HAVE_SYS_NERR) |
1909 | fi | 2000 | fi |
1910 | 2001 | ||
1911 | SCARD_MSG="no" | 2002 | SCARD_MSG="no" |
1912 | # Check whether user wants sectok support | 2003 | # Check whether user wants sectok support |
1913 | AC_ARG_WITH(sectok, | 2004 | AC_ARG_WITH(sectok, |
1914 | [ --with-sectok Enable smartcard support using libsectok], | 2005 | [ --with-sectok Enable smartcard support using libsectok], |
@@ -1934,7 +2025,7 @@ AC_ARG_WITH(sectok, | |||
1934 | fi | 2025 | fi |
1935 | AC_DEFINE(SMARTCARD) | 2026 | AC_DEFINE(SMARTCARD) |
1936 | AC_DEFINE(USE_SECTOK) | 2027 | AC_DEFINE(USE_SECTOK) |
1937 | SCARD_MSG="yes, using sectok" | 2028 | SCARD_MSG="yes, using sectok" |
1938 | fi | 2029 | fi |
1939 | ] | 2030 | ] |
1940 | ) | 2031 | ) |
@@ -1954,65 +2045,76 @@ if test x$opensc_config_prefix != x ; then | |||
1954 | LDFLAGS="$LDFLAGS $LIBOPENSC_LIBS" | 2045 | LDFLAGS="$LDFLAGS $LIBOPENSC_LIBS" |
1955 | AC_DEFINE(SMARTCARD) | 2046 | AC_DEFINE(SMARTCARD) |
1956 | AC_DEFINE(USE_OPENSC) | 2047 | AC_DEFINE(USE_OPENSC) |
1957 | SCARD_MSG="yes, using OpenSC" | 2048 | SCARD_MSG="yes, using OpenSC" |
1958 | fi | 2049 | fi |
1959 | fi | 2050 | fi |
1960 | 2051 | ||
1961 | # Check whether user wants DNS support | 2052 | # Check libraries needed by DNS fingerprint support |
1962 | DNS_MSG="no" | 2053 | AC_SEARCH_LIBS(getrrsetbyname, resolv, |
1963 | AC_ARG_WITH(dns, | 2054 | [AC_DEFINE(HAVE_GETRRSETBYNAME)], |
1964 | [ --with-dns Support for fetching keys from DNS (experimental)], | ||
1965 | [ | 2055 | [ |
1966 | if test "x$withval" != "xno" ; then | 2056 | # Needed by our getrrsetbyname() |
1967 | DNS_MSG="yes" | 2057 | AC_SEARCH_LIBS(res_query, resolv) |
1968 | AC_DEFINE(DNS) | 2058 | AC_SEARCH_LIBS(dn_expand, resolv) |
1969 | AC_SEARCH_LIBS(getrrsetbyname, resolv, | 2059 | AC_CHECK_FUNCS(_getshort _getlong) |
1970 | [AC_DEFINE(HAVE_GETRRSETBYNAME)], | 2060 | AC_CHECK_MEMBER(HEADER.ad, |
1971 | [ | 2061 | [AC_DEFINE(HAVE_HEADER_AD)],, |
1972 | # Needed by our getrrsetbyname() | 2062 | [#include <arpa/nameser.h>]) |
1973 | AC_SEARCH_LIBS(res_query, resolv) | 2063 | ]) |
1974 | AC_SEARCH_LIBS(dn_expand, resolv) | ||
1975 | AC_CHECK_FUNCS(_getshort _getlong) | ||
1976 | AC_CHECK_MEMBER(HEADER.ad, | ||
1977 | [AC_DEFINE(HAVE_HEADER_AD)],, | ||
1978 | [#include <arpa/nameser.h>]) | ||
1979 | ]) | ||
1980 | fi | ||
1981 | ] | ||
1982 | ) | ||
1983 | 2064 | ||
1984 | # Check whether user wants Kerberos 5 support | 2065 | # Check whether user wants Kerberos 5 support |
1985 | KRB5_MSG="no" | 2066 | KRB5_MSG="no" |
1986 | AC_ARG_WITH(kerberos5, | 2067 | AC_ARG_WITH(kerberos5, |
1987 | [ --with-kerberos5=PATH Enable Kerberos 5 support], | 2068 | [ --with-kerberos5=PATH Enable Kerberos 5 support], |
1988 | [ | 2069 | [ if test "x$withval" != "xno" ; then |
1989 | if test "x$withval" != "xno" ; then | 2070 | if test "x$withval" = "xyes" ; then |
1990 | if test "x$withval" = "xyes" ; then | 2071 | KRB5ROOT="/usr/local" |
1991 | KRB5ROOT="/usr/local" | 2072 | else |
1992 | else | 2073 | KRB5ROOT=${withval} |
1993 | KRB5ROOT=${withval} | 2074 | fi |
1994 | fi | 2075 | |
2076 | AC_DEFINE(KRB5) | ||
2077 | KRB5_MSG="yes" | ||
2078 | |||
2079 | AC_MSG_CHECKING(for krb5-config) | ||
2080 | if test -x $KRB5ROOT/bin/krb5-config ; then | ||
2081 | KRB5CONF=$KRB5ROOT/bin/krb5-config | ||
2082 | AC_MSG_RESULT($KRB5CONF) | ||
2083 | |||
2084 | AC_MSG_CHECKING(for gssapi support) | ||
2085 | if $KRB5CONF | grep gssapi >/dev/null ; then | ||
2086 | AC_MSG_RESULT(yes) | ||
2087 | AC_DEFINE(GSSAPI) | ||
2088 | k5confopts=gssapi | ||
2089 | else | ||
2090 | AC_MSG_RESULT(no) | ||
2091 | k5confopts="" | ||
2092 | fi | ||
2093 | K5CFLAGS="`$KRB5CONF --cflags $k5confopts`" | ||
2094 | K5LIBS="`$KRB5CONF --libs $k5confopts`" | ||
2095 | CPPFLAGS="$CPPFLAGS $K5CFLAGS" | ||
2096 | AC_MSG_CHECKING(whether we are using Heimdal) | ||
2097 | AC_TRY_COMPILE([ #include <krb5.h> ], | ||
2098 | [ char *tmp = heimdal_version; ], | ||
2099 | [ AC_MSG_RESULT(yes) | ||
2100 | AC_DEFINE(HEIMDAL) ], | ||
2101 | AC_MSG_RESULT(no) | ||
2102 | ) | ||
2103 | else | ||
2104 | AC_MSG_RESULT(no) | ||
1995 | CPPFLAGS="$CPPFLAGS -I${KRB5ROOT}/include" | 2105 | CPPFLAGS="$CPPFLAGS -I${KRB5ROOT}/include" |
1996 | LDFLAGS="$LDFLAGS -L${KRB5ROOT}/lib" | 2106 | LDFLAGS="$LDFLAGS -L${KRB5ROOT}/lib" |
1997 | AC_DEFINE(KRB5) | 2107 | AC_MSG_CHECKING(whether we are using Heimdal) |
1998 | KRB5_MSG="yes" | 2108 | AC_TRY_COMPILE([ #include <krb5.h> ], |
1999 | AC_MSG_CHECKING(whether we are using Heimdal) | 2109 | [ char *tmp = heimdal_version; ], |
2000 | AC_TRY_COMPILE([ #include <krb5.h> ], | 2110 | [ AC_MSG_RESULT(yes) |
2001 | [ char *tmp = heimdal_version; ], | 2111 | AC_DEFINE(HEIMDAL) |
2002 | [ AC_MSG_RESULT(yes) | 2112 | K5LIBS="-lkrb5 -ldes -lcom_err -lasn1 -lroken" |
2003 | AC_DEFINE(HEIMDAL) | 2113 | ], |
2004 | K5LIBS="-lkrb5 -ldes -lcom_err -lasn1 -lroken" | 2114 | [ AC_MSG_RESULT(no) |
2005 | ], | 2115 | K5LIBS="-lkrb5 -lk5crypto -lcom_err" |
2006 | [ AC_MSG_RESULT(no) | 2116 | ] |
2007 | K5LIBS="-lkrb5 -lk5crypto -lcom_err" | 2117 | ) |
2008 | ] | ||
2009 | ) | ||
2010 | if test ! -z "$need_dash_r" ; then | ||
2011 | LDFLAGS="$LDFLAGS -R${KRB5ROOT}/lib" | ||
2012 | fi | ||
2013 | if test ! -z "$blibpath" ; then | ||
2014 | blibpath="$blibpath:${KRB5ROOT}/lib" | ||
2015 | fi | ||
2016 | AC_SEARCH_LIBS(dn_expand, resolv) | 2118 | AC_SEARCH_LIBS(dn_expand, resolv) |
2017 | 2119 | ||
2018 | AC_CHECK_LIB(gssapi,gss_init_sec_context, | 2120 | AC_CHECK_LIB(gssapi,gss_init_sec_context, |
@@ -2020,7 +2122,7 @@ AC_ARG_WITH(kerberos5, | |||
2020 | K5LIBS="-lgssapi $K5LIBS" ], | 2122 | K5LIBS="-lgssapi $K5LIBS" ], |
2021 | [ AC_CHECK_LIB(gssapi_krb5,gss_init_sec_context, | 2123 | [ AC_CHECK_LIB(gssapi_krb5,gss_init_sec_context, |
2022 | [ AC_DEFINE(GSSAPI) | 2124 | [ AC_DEFINE(GSSAPI) |
2023 | K5LIBS="-lgssapi_krb5 $K5LIBS" ], | 2125 | K5LIBS="-lgssapi_krb5 $K5LIBS" ], |
2024 | AC_MSG_WARN([Cannot find any suitable gss-api library - build may fail]), | 2126 | AC_MSG_WARN([Cannot find any suitable gss-api library - build may fail]), |
2025 | $K5LIBS) | 2127 | $K5LIBS) |
2026 | ], | 2128 | ], |
@@ -2028,10 +2130,10 @@ AC_ARG_WITH(kerberos5, | |||
2028 | 2130 | ||
2029 | AC_CHECK_HEADER(gssapi.h, , | 2131 | AC_CHECK_HEADER(gssapi.h, , |
2030 | [ unset ac_cv_header_gssapi_h | 2132 | [ unset ac_cv_header_gssapi_h |
2031 | CPPFLAGS="$CPPFLAGS -I${KRB5ROOT}/include/gssapi" | 2133 | CPPFLAGS="$CPPFLAGS -I${KRB5ROOT}/include/gssapi" |
2032 | AC_CHECK_HEADERS(gssapi.h, , | 2134 | AC_CHECK_HEADERS(gssapi.h, , |
2033 | AC_MSG_WARN([Cannot find any suitable gss-api header - build may fail]) | 2135 | AC_MSG_WARN([Cannot find any suitable gss-api header - build may fail]) |
2034 | ) | 2136 | ) |
2035 | ] | 2137 | ] |
2036 | ) | 2138 | ) |
2037 | 2139 | ||
@@ -2040,11 +2142,23 @@ AC_ARG_WITH(kerberos5, | |||
2040 | AC_CHECK_HEADER(gssapi_krb5.h, , | 2142 | AC_CHECK_HEADER(gssapi_krb5.h, , |
2041 | [ CPPFLAGS="$oldCPP" ]) | 2143 | [ CPPFLAGS="$oldCPP" ]) |
2042 | 2144 | ||
2043 | KRB5=yes | 2145 | fi |
2044 | fi | 2146 | if test ! -z "$need_dash_r" ; then |
2045 | ] | 2147 | LDFLAGS="$LDFLAGS -R${KRB5ROOT}/lib" |
2148 | fi | ||
2149 | if test ! -z "$blibpath" ; then | ||
2150 | blibpath="$blibpath:${KRB5ROOT}/lib" | ||
2151 | fi | ||
2152 | fi | ||
2153 | |||
2154 | AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h) | ||
2155 | AC_CHECK_HEADERS(gssapi_krb5.h gssapi/gssapi_krb5.h) | ||
2156 | AC_CHECK_HEADERS(gssapi_generic.h gssapi/gssapi_generic.h) | ||
2157 | |||
2158 | LIBS="$LIBS $K5LIBS" | ||
2159 | AC_SEARCH_LIBS(k_hasafs, kafs, AC_DEFINE(USE_AFS)) | ||
2160 | ] | ||
2046 | ) | 2161 | ) |
2047 | LIBS="$LIBS $K5LIBS" | ||
2048 | 2162 | ||
2049 | # Looking for programs, paths and files | 2163 | # Looking for programs, paths and files |
2050 | 2164 | ||
@@ -2107,7 +2221,7 @@ fi | |||
2107 | 2221 | ||
2108 | if test -z "$no_dev_ptmx" ; then | 2222 | if test -z "$no_dev_ptmx" ; then |
2109 | if test "x$disable_ptmx_check" != "xyes" ; then | 2223 | if test "x$disable_ptmx_check" != "xyes" ; then |
2110 | AC_CHECK_FILE("/dev/ptmx", | 2224 | AC_CHECK_FILE("/dev/ptmx", |
2111 | [ | 2225 | [ |
2112 | AC_DEFINE_UNQUOTED(HAVE_DEV_PTMX) | 2226 | AC_DEFINE_UNQUOTED(HAVE_DEV_PTMX) |
2113 | have_dev_ptmx=1 | 2227 | have_dev_ptmx=1 |
@@ -2115,7 +2229,7 @@ if test -z "$no_dev_ptmx" ; then | |||
2115 | ) | 2229 | ) |
2116 | fi | 2230 | fi |
2117 | fi | 2231 | fi |
2118 | AC_CHECK_FILE("/dev/ptc", | 2232 | AC_CHECK_FILE("/dev/ptc", |
2119 | [ | 2233 | [ |
2120 | AC_DEFINE_UNQUOTED(HAVE_DEV_PTS_AND_PTC) | 2234 | AC_DEFINE_UNQUOTED(HAVE_DEV_PTS_AND_PTC) |
2121 | have_dev_ptc=1 | 2235 | have_dev_ptc=1 |
@@ -2156,13 +2270,13 @@ fi | |||
2156 | AC_SUBST(mansubdir) | 2270 | AC_SUBST(mansubdir) |
2157 | 2271 | ||
2158 | # Check whether to enable MD5 passwords | 2272 | # Check whether to enable MD5 passwords |
2159 | MD5_MSG="no" | 2273 | MD5_MSG="no" |
2160 | AC_ARG_WITH(md5-passwords, | 2274 | AC_ARG_WITH(md5-passwords, |
2161 | [ --with-md5-passwords Enable use of MD5 passwords], | 2275 | [ --with-md5-passwords Enable use of MD5 passwords], |
2162 | [ | 2276 | [ |
2163 | if test "x$withval" != "xno" ; then | 2277 | if test "x$withval" != "xno" ; then |
2164 | AC_DEFINE(HAVE_MD5_PASSWORDS) | 2278 | AC_DEFINE(HAVE_MD5_PASSWORDS) |
2165 | MD5_MSG="yes" | 2279 | MD5_MSG="yes" |
2166 | fi | 2280 | fi |
2167 | ] | 2281 | ] |
2168 | ) | 2282 | ) |
@@ -2202,13 +2316,13 @@ if test ! -z "$IPADDR_IN_DISPLAY" ; then | |||
2202 | DISPLAY_HACK_MSG="yes" | 2316 | DISPLAY_HACK_MSG="yes" |
2203 | AC_DEFINE(IPADDR_IN_DISPLAY) | 2317 | AC_DEFINE(IPADDR_IN_DISPLAY) |
2204 | else | 2318 | else |
2205 | DISPLAY_HACK_MSG="no" | 2319 | DISPLAY_HACK_MSG="no" |
2206 | AC_ARG_WITH(ipaddr-display, | 2320 | AC_ARG_WITH(ipaddr-display, |
2207 | [ --with-ipaddr-display Use ip address instead of hostname in \$DISPLAY], | 2321 | [ --with-ipaddr-display Use ip address instead of hostname in \$DISPLAY], |
2208 | [ | 2322 | [ |
2209 | if test "x$withval" != "xno" ; then | 2323 | if test "x$withval" != "xno" ; then |
2210 | AC_DEFINE(IPADDR_IN_DISPLAY) | 2324 | AC_DEFINE(IPADDR_IN_DISPLAY) |
2211 | DISPLAY_HACK_MSG="yes" | 2325 | DISPLAY_HACK_MSG="yes" |
2212 | fi | 2326 | fi |
2213 | ] | 2327 | ] |
2214 | ) | 2328 | ) |
@@ -2232,7 +2346,7 @@ if test $ac_cv_func_login_getcapbool = "yes" -a \ | |||
2232 | fi | 2346 | fi |
2233 | 2347 | ||
2234 | # Whether to mess with the default path | 2348 | # Whether to mess with the default path |
2235 | SERVER_PATH_MSG="(default)" | 2349 | SERVER_PATH_MSG="(default)" |
2236 | AC_ARG_WITH(default-path, | 2350 | AC_ARG_WITH(default-path, |
2237 | [ --with-default-path= Specify default \$PATH environment for server], | 2351 | [ --with-default-path= Specify default \$PATH environment for server], |
2238 | [ | 2352 | [ |
@@ -2247,7 +2361,7 @@ Edit /etc/login.conf instead.]) | |||
2247 | $external_path_file .]) | 2361 | $external_path_file .]) |
2248 | fi | 2362 | fi |
2249 | user_path="$withval" | 2363 | user_path="$withval" |
2250 | SERVER_PATH_MSG="$withval" | 2364 | SERVER_PATH_MSG="$withval" |
2251 | fi | 2365 | fi |
2252 | ], | 2366 | ], |
2253 | [ if test "x$external_path_file" = "x/etc/login.conf" ; then | 2367 | [ if test "x$external_path_file" = "x/etc/login.conf" ; then |
@@ -2331,14 +2445,14 @@ AC_ARG_WITH(superuser-path, | |||
2331 | 2445 | ||
2332 | 2446 | ||
2333 | AC_MSG_CHECKING([if we need to convert IPv4 in IPv6-mapped addresses]) | 2447 | AC_MSG_CHECKING([if we need to convert IPv4 in IPv6-mapped addresses]) |
2334 | IPV4_IN6_HACK_MSG="no" | 2448 | IPV4_IN6_HACK_MSG="no" |
2335 | AC_ARG_WITH(4in6, | 2449 | AC_ARG_WITH(4in6, |
2336 | [ --with-4in6 Check for and convert IPv4 in IPv6 mapped addresses], | 2450 | [ --with-4in6 Check for and convert IPv4 in IPv6 mapped addresses], |
2337 | [ | 2451 | [ |
2338 | if test "x$withval" != "xno" ; then | 2452 | if test "x$withval" != "xno" ; then |
2339 | AC_MSG_RESULT(yes) | 2453 | AC_MSG_RESULT(yes) |
2340 | AC_DEFINE(IPV4_IN_IPV6) | 2454 | AC_DEFINE(IPV4_IN_IPV6) |
2341 | IPV4_IN6_HACK_MSG="yes" | 2455 | IPV4_IN6_HACK_MSG="yes" |
2342 | else | 2456 | else |
2343 | AC_MSG_RESULT(no) | 2457 | AC_MSG_RESULT(no) |
2344 | fi | 2458 | fi |
@@ -2346,7 +2460,7 @@ AC_ARG_WITH(4in6, | |||
2346 | if test "x$inet6_default_4in6" = "xyes"; then | 2460 | if test "x$inet6_default_4in6" = "xyes"; then |
2347 | AC_MSG_RESULT([yes (default)]) | 2461 | AC_MSG_RESULT([yes (default)]) |
2348 | AC_DEFINE(IPV4_IN_IPV6) | 2462 | AC_DEFINE(IPV4_IN_IPV6) |
2349 | IPV4_IN6_HACK_MSG="yes" | 2463 | IPV4_IN6_HACK_MSG="yes" |
2350 | else | 2464 | else |
2351 | AC_MSG_RESULT([no (default)]) | 2465 | AC_MSG_RESULT([no (default)]) |
2352 | fi | 2466 | fi |
@@ -2371,7 +2485,7 @@ piddir=/var/run | |||
2371 | if test ! -d $piddir ; then | 2485 | if test ! -d $piddir ; then |
2372 | piddir=`eval echo ${sysconfdir}` | 2486 | piddir=`eval echo ${sysconfdir}` |
2373 | case $piddir in | 2487 | case $piddir in |
2374 | NONE/*) piddir=`echo $piddir | sed "s~NONE~$ac_default_prefix~"` ;; | 2488 | NONE/*) piddir=`echo $piddir | sed "s~NONE~$ac_default_prefix~"` ;; |
2375 | esac | 2489 | esac |
2376 | fi | 2490 | fi |
2377 | 2491 | ||
@@ -2443,7 +2557,7 @@ AC_ARG_ENABLE(pututline, | |||
2443 | [ --disable-pututline disable use of pututline() etc. ([uw]tmp) [no]], | 2557 | [ --disable-pututline disable use of pututline() etc. ([uw]tmp) [no]], |
2444 | [ | 2558 | [ |
2445 | if test "x$enableval" = "xno" ; then | 2559 | if test "x$enableval" = "xno" ; then |
2446 | AC_DEFINE(DISABLE_PUTUTLINE) | 2560 | AC_DEFINE(DISABLE_PUTUTLINE) |
2447 | fi | 2561 | fi |
2448 | ] | 2562 | ] |
2449 | ) | 2563 | ) |
@@ -2697,7 +2811,6 @@ if test ! -z "$superuser_path" ; then | |||
2697 | echo " sshd superuser user PATH: $J" | 2811 | echo " sshd superuser user PATH: $J" |
2698 | fi | 2812 | fi |
2699 | echo " Manpage format: $MANTYPE" | 2813 | echo " Manpage format: $MANTYPE" |
2700 | echo " DNS support: $DNS_MSG" | ||
2701 | echo " PAM support: $PAM_MSG" | 2814 | echo " PAM support: $PAM_MSG" |
2702 | echo " KerberosV support: $KRB5_MSG" | 2815 | echo " KerberosV support: $KRB5_MSG" |
2703 | echo " Smartcard support: $SCARD_MSG" | 2816 | echo " Smartcard support: $SCARD_MSG" |
@@ -2726,7 +2839,7 @@ echo "" | |||
2726 | if test "x$PAM_MSG" = "xyes" ; then | 2839 | if test "x$PAM_MSG" = "xyes" ; then |
2727 | echo "PAM is enabled. You may need to install a PAM control file " | 2840 | echo "PAM is enabled. You may need to install a PAM control file " |
2728 | echo "for sshd, otherwise password authentication may fail. " | 2841 | echo "for sshd, otherwise password authentication may fail. " |
2729 | echo "Example PAM control files can be found in the contrib/ " | 2842 | echo "Example PAM control files can be found in the contrib/ " |
2730 | echo "subdirectory" | 2843 | echo "subdirectory" |
2731 | echo "" | 2844 | echo "" |
2732 | fi | 2845 | fi |
diff --git a/contrib/README b/contrib/README index 67dbbd277..9de3d961d 100644 --- a/contrib/README +++ b/contrib/README | |||
@@ -1,4 +1,4 @@ | |||
1 | Other patches and addons for OpenSSH. Please send submissions to | 1 | Other patches and addons for OpenSSH. Please send submissions to |
2 | djm@mindrot.org | 2 | djm@mindrot.org |
3 | 3 | ||
4 | Externally maintained | 4 | Externally maintained |
@@ -7,7 +7,7 @@ Externally maintained | |||
7 | SSH Proxy Command -- connect.c | 7 | SSH Proxy Command -- connect.c |
8 | 8 | ||
9 | Shun-ichi GOTO <gotoh@imasy.or.jp> has written a very useful ProxyCommand | 9 | Shun-ichi GOTO <gotoh@imasy.or.jp> has written a very useful ProxyCommand |
10 | which allows the use of outbound SSH from behind a SOCKS4, SOCKS5 or | 10 | which allows the use of outbound SSH from behind a SOCKS4, SOCKS5 or |
11 | https CONNECT style proxy server. His page for connect.c has extensive | 11 | https CONNECT style proxy server. His page for connect.c has extensive |
12 | documentation on its use as well as compiled versions for Win32. | 12 | documentation on its use as well as compiled versions for Win32. |
13 | 13 | ||
@@ -47,7 +47,7 @@ Dominik Brettnacher <domi@saargate.de> | |||
47 | mdoc2man.pl: | 47 | mdoc2man.pl: |
48 | 48 | ||
49 | Converts mdoc formated manpages into normal manpages. This can be used | 49 | Converts mdoc formated manpages into normal manpages. This can be used |
50 | on Solaris machines to provide manpages that are not preformated. | 50 | on Solaris machines to provide manpages that are not preformated. |
51 | Contributed by Mark D. Roth <roth@feep.net> | 51 | Contributed by Mark D. Roth <roth@feep.net> |
52 | 52 | ||
53 | redhat: | 53 | redhat: |
diff --git a/contrib/aix/buildbff.sh b/contrib/aix/buildbff.sh index 727ac446d..4a5c32b0e 100755 --- a/contrib/aix/buildbff.sh +++ b/contrib/aix/buildbff.sh | |||
@@ -1,12 +1,12 @@ | |||
1 | #!/bin/sh | 1 | #!/bin/sh |
2 | # | 2 | # |
3 | # buildbff.sh: Create AIX SMIT-installable OpenSSH packages | 3 | # buildbff.sh: Create AIX SMIT-installable OpenSSH packages |
4 | # $Id: buildbff.sh,v 1.6 2003/08/25 05:01:04 dtucker Exp $ | 4 | # $Id: buildbff.sh,v 1.7 2003/11/21 12:48:56 djm Exp $ |
5 | # | 5 | # |
6 | # Author: Darren Tucker (dtucker at zip dot com dot au) | 6 | # Author: Darren Tucker (dtucker at zip dot com dot au) |
7 | # This file is placed in the public domain and comes with absolutely | 7 | # This file is placed in the public domain and comes with absolutely |
8 | # no warranty. | 8 | # no warranty. |
9 | # | 9 | # |
10 | # Based originally on Ben Lindstrom's buildpkg.sh for Solaris | 10 | # Based originally on Ben Lindstrom's buildpkg.sh for Solaris |
11 | # | 11 | # |
12 | 12 | ||
@@ -45,7 +45,7 @@ fi | |||
45 | if [ ! -f Makefile ] | 45 | if [ ! -f Makefile ] |
46 | then | 46 | then |
47 | echo "Makefile not found (did you run configure?)" | 47 | echo "Makefile not found (did you run configure?)" |
48 | exit 1 | 48 | exit 1 |
49 | fi | 49 | fi |
50 | 50 | ||
51 | # | 51 | # |
@@ -96,12 +96,12 @@ then | |||
96 | PRIVSEP_PATH=/var/empty | 96 | PRIVSEP_PATH=/var/empty |
97 | fi | 97 | fi |
98 | 98 | ||
99 | # Clean package build directory | 99 | # Clean package build directory |
100 | rm -rf $objdir/$PKGDIR | 100 | rm -rf $objdir/$PKGDIR |
101 | FAKE_ROOT=$objdir/$PKGDIR/root | 101 | FAKE_ROOT=$objdir/$PKGDIR/root |
102 | mkdir -p $FAKE_ROOT | 102 | mkdir -p $FAKE_ROOT |
103 | 103 | ||
104 | # Start by faking root install | 104 | # Start by faking root install |
105 | echo "Faking root install..." | 105 | echo "Faking root install..." |
106 | cd $objdir | 106 | cd $objdir |
107 | make install-nokeys DESTDIR=$FAKE_ROOT | 107 | make install-nokeys DESTDIR=$FAKE_ROOT |
@@ -136,15 +136,15 @@ echo "Building BFF for $PKGNAME $VERSION (package version $BFFVERSION)" | |||
136 | # | 136 | # |
137 | # Set ssh and sshd parameters as per config.local | 137 | # Set ssh and sshd parameters as per config.local |
138 | # | 138 | # |
139 | if [ "${PERMIT_ROOT_LOGIN}" = no ] | 139 | if [ "${PERMIT_ROOT_LOGIN}" = no ] |
140 | then | 140 | then |
141 | perl -p -i -e "s/#PermitRootLogin yes/PermitRootLogin no/" \ | 141 | perl -p -i -e "s/#PermitRootLogin yes/PermitRootLogin no/" \ |
142 | $FAKE_ROOT/${sysconfdir}/sshd_config | 142 | $FAKE_ROOT/${sysconfdir}/sshd_config |
143 | fi | 143 | fi |
144 | if [ "${X11_FORWARDING}" = yes ] | 144 | if [ "${X11_FORWARDING}" = yes ] |
145 | then | 145 | then |
146 | perl -p -i -e "s/#X11Forwarding no/X11Forwarding yes/" \ | 146 | perl -p -i -e "s/#X11Forwarding no/X11Forwarding yes/" \ |
147 | $FAKE_ROOT/${sysconfdir}/sshd_config | 147 | $FAKE_ROOT/${sysconfdir}/sshd_config |
148 | fi | 148 | fi |
149 | 149 | ||
150 | 150 | ||
@@ -190,13 +190,13 @@ cat <<EOF >>../openssh.post_i | |||
190 | echo Creating configs from defaults if necessary. | 190 | echo Creating configs from defaults if necessary. |
191 | for cfgfile in ssh_config sshd_config ssh_prng_cmds | 191 | for cfgfile in ssh_config sshd_config ssh_prng_cmds |
192 | do | 192 | do |
193 | if [ ! -f $sysconfdir/\$cfgfile ] | 193 | if [ ! -f $sysconfdir/\$cfgfile ] |
194 | then | 194 | then |
195 | echo "Creating \$cfgfile from default" | 195 | echo "Creating \$cfgfile from default" |
196 | cp $sysconfdir/\$cfgfile.default $sysconfdir/\$cfgfile | 196 | cp $sysconfdir/\$cfgfile.default $sysconfdir/\$cfgfile |
197 | else | 197 | else |
198 | echo "\$cfgfile already exists." | 198 | echo "\$cfgfile already exists." |
199 | fi | 199 | fi |
200 | done | 200 | done |
201 | echo | 201 | echo |
202 | 202 | ||
@@ -244,19 +244,19 @@ echo | |||
244 | # Generate keys unless they already exist | 244 | # Generate keys unless they already exist |
245 | echo Creating host keys if required. | 245 | echo Creating host keys if required. |
246 | if [ -f "$sysconfdir/ssh_host_key" ] ; then | 246 | if [ -f "$sysconfdir/ssh_host_key" ] ; then |
247 | echo "$sysconfdir/ssh_host_key already exists, skipping." | 247 | echo "$sysconfdir/ssh_host_key already exists, skipping." |
248 | else | 248 | else |
249 | $bindir/ssh-keygen -t rsa1 -f $sysconfdir/ssh_host_key -N "" | 249 | $bindir/ssh-keygen -t rsa1 -f $sysconfdir/ssh_host_key -N "" |
250 | fi | 250 | fi |
251 | if [ -f $sysconfdir/ssh_host_dsa_key ] ; then | 251 | if [ -f $sysconfdir/ssh_host_dsa_key ] ; then |
252 | echo "$sysconfdir/ssh_host_dsa_key already exists, skipping." | 252 | echo "$sysconfdir/ssh_host_dsa_key already exists, skipping." |
253 | else | 253 | else |
254 | $bindir/ssh-keygen -t dsa -f $sysconfdir/ssh_host_dsa_key -N "" | 254 | $bindir/ssh-keygen -t dsa -f $sysconfdir/ssh_host_dsa_key -N "" |
255 | fi | 255 | fi |
256 | if [ -f $sysconfdir/ssh_host_rsa_key ] ; then | 256 | if [ -f $sysconfdir/ssh_host_rsa_key ] ; then |
257 | echo "$sysconfdir/ssh_host_rsa_key already exists, skipping." | 257 | echo "$sysconfdir/ssh_host_rsa_key already exists, skipping." |
258 | else | 258 | else |
259 | $bindir/ssh-keygen -t rsa -f $sysconfdir/ssh_host_rsa_key -N "" | 259 | $bindir/ssh-keygen -t rsa -f $sysconfdir/ssh_host_rsa_key -N "" |
260 | fi | 260 | fi |
261 | echo | 261 | echo |
262 | 262 | ||
@@ -369,7 +369,7 @@ echo Creating $PKGNAME-$VERSION.bff with backup... | |||
369 | rm -f $PKGNAME-$VERSION.bff | 369 | rm -f $PKGNAME-$VERSION.bff |
370 | ( | 370 | ( |
371 | echo "./lpp_name" | 371 | echo "./lpp_name" |
372 | find . ! -name lpp_name -a ! -name . -print | 372 | find . ! -name lpp_name -a ! -name . -print |
373 | ) | backup -i -q -f ../$PKGNAME-$VERSION.bff $filelist | 373 | ) | backup -i -q -f ../$PKGNAME-$VERSION.bff $filelist |
374 | 374 | ||
375 | # | 375 | # |
diff --git a/contrib/aix/inventory.sh b/contrib/aix/inventory.sh index 4f408e678..e2641e79c 100755 --- a/contrib/aix/inventory.sh +++ b/contrib/aix/inventory.sh | |||
@@ -1,7 +1,7 @@ | |||
1 | #!/bin/sh | 1 | #!/bin/sh |
2 | # | 2 | # |
3 | # inventory.sh | 3 | # inventory.sh |
4 | # $Id: inventory.sh,v 1.5 2003/08/26 03:43:13 dtucker Exp $ | 4 | # $Id: inventory.sh,v 1.6 2003/11/21 12:48:56 djm Exp $ |
5 | # | 5 | # |
6 | # Originally written by Ben Lindstrom, modified by Darren Tucker to use perl | 6 | # Originally written by Ben Lindstrom, modified by Darren Tucker to use perl |
7 | # This file is placed into the public domain. | 7 | # This file is placed into the public domain. |
@@ -59,5 +59,5 @@ find . ! -name . -print | perl -ne '{ | |||
59 | } elsif ( -d $_ ) { | 59 | } elsif ( -d $_ ) { |
60 | # Entry is Directory | 60 | # Entry is Directory |
61 | print "\ttype=DIRECTORY\n"; | 61 | print "\ttype=DIRECTORY\n"; |
62 | } | 62 | } |
63 | }' | 63 | }' |
diff --git a/contrib/caldera/openssh.spec b/contrib/caldera/openssh.spec index c58b1d4ff..599244b5d 100644 --- a/contrib/caldera/openssh.spec +++ b/contrib/caldera/openssh.spec | |||
@@ -17,11 +17,11 @@ | |||
17 | #old cvs stuff. please update before use. may be deprecated. | 17 | #old cvs stuff. please update before use. may be deprecated. |
18 | %define use_stable 1 | 18 | %define use_stable 1 |
19 | %if %{use_stable} | 19 | %if %{use_stable} |
20 | %define version 3.7.1p2 | 20 | %define version 3.8p1 |
21 | %define cvs %{nil} | 21 | %define cvs %{nil} |
22 | %define release 1 | 22 | %define release 1 |
23 | %else | 23 | %else |
24 | %define version 2.9.9p2 | 24 | %define version 3.8p1 |
25 | %define cvs cvs20011009 | 25 | %define cvs cvs20011009 |
26 | %define release 0r1 | 26 | %define release 0r1 |
27 | %endif | 27 | %endif |
@@ -180,7 +180,6 @@ CFLAGS="$RPM_OPT_FLAGS" \ | |||
180 | %configure \ | 180 | %configure \ |
181 | --with-pam \ | 181 | --with-pam \ |
182 | --with-tcp-wrappers \ | 182 | --with-tcp-wrappers \ |
183 | --with-ipv4-default \ | ||
184 | --with-privsep-path=%{_var}/empty/sshd \ | 183 | --with-privsep-path=%{_var}/empty/sshd \ |
185 | #leave this line for easy edits. | 184 | #leave this line for easy edits. |
186 | 185 | ||
@@ -364,4 +363,4 @@ fi | |||
364 | * Mon Jan 01 1998 ... | 363 | * Mon Jan 01 1998 ... |
365 | Template Version: 1.31 | 364 | Template Version: 1.31 |
366 | 365 | ||
367 | $Id: openssh.spec,v 1.43.2.4 2003/09/23 09:26:52 djm Exp $ | 366 | $Id: openssh.spec,v 1.48 2004/02/24 05:00:04 djm Exp $ |
diff --git a/contrib/caldera/ssh-host-keygen b/contrib/caldera/ssh-host-keygen index 28a97b9b4..3c5c17182 100755 --- a/contrib/caldera/ssh-host-keygen +++ b/contrib/caldera/ssh-host-keygen | |||
@@ -1,6 +1,6 @@ | |||
1 | #! /bin/sh | 1 | #! /bin/sh |
2 | # | 2 | # |
3 | # $Id: ssh-host-keygen,v 1.1 2001/04/27 05:50:50 tim Exp $ | 3 | # $Id: ssh-host-keygen,v 1.2 2003/11/21 12:48:57 djm Exp $ |
4 | # | 4 | # |
5 | # This script is normally run only *once* for a given host | 5 | # This script is normally run only *once* for a given host |
6 | # (in a given period of time) -- on updates/upgrades/recovery | 6 | # (in a given period of time) -- on updates/upgrades/recovery |
@@ -12,7 +12,7 @@ keydir=@sysconfdir@ | |||
12 | keygen=@sshkeygen@ | 12 | keygen=@sshkeygen@ |
13 | 13 | ||
14 | if [ -f $keydir/ssh_host_key -o \ | 14 | if [ -f $keydir/ssh_host_key -o \ |
15 | -f $keydir/ssh_host_key.pub ]; then | 15 | -f $keydir/ssh_host_key.pub ]; then |
16 | echo "You already have an SSH1 RSA host key in $keydir/ssh_host_key." | 16 | echo "You already have an SSH1 RSA host key in $keydir/ssh_host_key." |
17 | else | 17 | else |
18 | echo "Generating 1024 bit SSH1 RSA host key." | 18 | echo "Generating 1024 bit SSH1 RSA host key." |
@@ -20,7 +20,7 @@ else | |||
20 | fi | 20 | fi |
21 | 21 | ||
22 | if [ -f $keydir/ssh_host_rsa_key -o \ | 22 | if [ -f $keydir/ssh_host_rsa_key -o \ |
23 | -f $keydir/ssh_host_rsa_key.pub ]; then | 23 | -f $keydir/ssh_host_rsa_key.pub ]; then |
24 | echo "You already have an SSH2 RSA host key in $keydir/ssh_host_rsa_key." | 24 | echo "You already have an SSH2 RSA host key in $keydir/ssh_host_rsa_key." |
25 | else | 25 | else |
26 | echo "Generating 1024 bit SSH2 RSA host key." | 26 | echo "Generating 1024 bit SSH2 RSA host key." |
@@ -28,7 +28,7 @@ else | |||
28 | fi | 28 | fi |
29 | 29 | ||
30 | if [ -f $keydir/ssh_host_dsa_key -o \ | 30 | if [ -f $keydir/ssh_host_dsa_key -o \ |
31 | -f $keydir/ssh_host_dsa_key.pub ]; then | 31 | -f $keydir/ssh_host_dsa_key.pub ]; then |
32 | echo "You already have an SSH2 DSA host key in $keydir/ssh_host_dsa_key." | 32 | echo "You already have an SSH2 DSA host key in $keydir/ssh_host_dsa_key." |
33 | else | 33 | else |
34 | echo "Generating SSH2 DSA host key." | 34 | echo "Generating SSH2 DSA host key." |
diff --git a/contrib/caldera/sshd.init b/contrib/caldera/sshd.init index 90b36379a..983146f4f 100755 --- a/contrib/caldera/sshd.init +++ b/contrib/caldera/sshd.init | |||
@@ -1,6 +1,6 @@ | |||
1 | #! /bin/bash | 1 | #! /bin/bash |
2 | # | 2 | # |
3 | # $Id: sshd.init,v 1.3 2001/11/03 19:09:33 tim Exp $ | 3 | # $Id: sshd.init,v 1.4 2003/11/21 12:48:57 djm Exp $ |
4 | # | 4 | # |
5 | ### BEGIN INIT INFO | 5 | ### BEGIN INIT INFO |
6 | # Provides: | 6 | # Provides: |
@@ -64,11 +64,11 @@ case "$1" in | |||
64 | SVIemptyConfig @sysconfdir@/sshd_config && exit 6 | 64 | SVIemptyConfig @sysconfdir@/sshd_config && exit 6 |
65 | 65 | ||
66 | if [ ! \( -f @sysconfdir@/ssh_host_key -a \ | 66 | if [ ! \( -f @sysconfdir@/ssh_host_key -a \ |
67 | -f @sysconfdir@/ssh_host_key.pub \) -a \ | 67 | -f @sysconfdir@/ssh_host_key.pub \) -a \ |
68 | ! \( -f @sysconfdir@/ssh_host_rsa_key -a \ | 68 | ! \( -f @sysconfdir@/ssh_host_rsa_key -a \ |
69 | -f @sysconfdir@/ssh_host_rsa_key.pub \) -a \ | 69 | -f @sysconfdir@/ssh_host_rsa_key.pub \) -a \ |
70 | ! \( -f @sysconfdir@/ssh_host_dsa_key -a \ | 70 | ! \( -f @sysconfdir@/ssh_host_dsa_key -a \ |
71 | -f @sysconfdir@/ssh_host_dsa_key.pub \) ]; then | 71 | -f @sysconfdir@/ssh_host_dsa_key.pub \) ]; then |
72 | 72 | ||
73 | echo "$SVIsubsys: host key not initialized: skipped!" | 73 | echo "$SVIsubsys: host key not initialized: skipped!" |
74 | echo "$SVIsubsys: use ssh-host-keygen to generate one!" | 74 | echo "$SVIsubsys: use ssh-host-keygen to generate one!" |
diff --git a/contrib/cygwin/Makefile b/contrib/cygwin/Makefile new file mode 100644 index 000000000..09e8ea2db --- /dev/null +++ b/contrib/cygwin/Makefile | |||
@@ -0,0 +1,56 @@ | |||
1 | srcdir=../.. | ||
2 | prefix=/usr | ||
3 | exec_prefix=$(prefix) | ||
4 | bindir=$(prefix)/bin | ||
5 | datadir=$(prefix)/share | ||
6 | docdir=$(datadir)/doc | ||
7 | sshdocdir=$(docdir)/openssh | ||
8 | cygdocdir=$(docdir)/Cygwin | ||
9 | sysconfdir=/etc | ||
10 | defaultsdir=$(sysconfdir)/defaults/etc | ||
11 | PRIVSEP_PATH=/var/empty | ||
12 | INSTALL=/usr/bin/install -c | ||
13 | |||
14 | DESTDIR= | ||
15 | |||
16 | all: | ||
17 | @echo | ||
18 | @echo "Use \`make cygwin-postinstall DESTDIR=[package directory]'" | ||
19 | @echo "Be sure having DESTDIR set correctly!" | ||
20 | @echo | ||
21 | |||
22 | move-config-files: $(DESTDIR)$(sysconfdir)/ssh_config $(DESTDIR)$(sysconfdir)/sshd_config | ||
23 | $(srcdir)/mkinstalldirs $(DESTDIR)$(defaultsdir) | ||
24 | mv $(DESTDIR)$(sysconfdir)/ssh_config $(DESTDIR)$(defaultsdir) | ||
25 | mv $(DESTDIR)$(sysconfdir)/sshd_config $(DESTDIR)$(defaultsdir) | ||
26 | |||
27 | remove-empty-dir: | ||
28 | rm -rf $(DESTDIR)$(PRIVSEP_PATH) | ||
29 | |||
30 | install-sshdoc: | ||
31 | $(srcdir)/mkinstalldirs $(DESTDIR)$(sshdocdir) | ||
32 | $(INSTALL) -m 644 $(srcdir)/CREDITS $(DESTDIR)$(sshdocdir)/CREDITS | ||
33 | $(INSTALL) -m 644 $(srcdir)/ChangeLog $(DESTDIR)$(sshdocdir)/ChangeLog | ||
34 | $(INSTALL) -m 644 $(srcdir)/LICENCE $(DESTDIR)$(sshdocdir)/LICENCE | ||
35 | $(INSTALL) -m 644 $(srcdir)/OVERVIEW $(DESTDIR)$(sshdocdir)/OVERVIEW | ||
36 | $(INSTALL) -m 644 $(srcdir)/README $(DESTDIR)$(sshdocdir)/README | ||
37 | $(INSTALL) -m 644 $(srcdir)/README.dns $(DESTDIR)$(sshdocdir)/README.dns | ||
38 | $(INSTALL) -m 644 $(srcdir)/README.privsep $(DESTDIR)$(sshdocdir)/README.privsep | ||
39 | $(INSTALL) -m 644 $(srcdir)/README.smartcard $(DESTDIR)$(sshdocdir)/README.smartcard | ||
40 | $(INSTALL) -m 644 $(srcdir)/RFC.nroff $(DESTDIR)$(sshdocdir)/RFC.nroff | ||
41 | $(INSTALL) -m 644 $(srcdir)/TODO $(DESTDIR)$(sshdocdir)/TODO | ||
42 | $(INSTALL) -m 644 $(srcdir)/WARNING.RNG $(DESTDIR)$(sshdocdir)/WARNING.RNG | ||
43 | |||
44 | install-cygwindoc: README | ||
45 | $(srcdir)/mkinstalldirs $(DESTDIR)$(cygdocdir) | ||
46 | $(INSTALL) -m 644 README $(DESTDIR)$(cygdocdir)/openssh.README | ||
47 | |||
48 | install-doc: install-sshdoc install-cygwindoc | ||
49 | |||
50 | install-scripts: ssh-host-config ssh-user-config | ||
51 | $(srcdir)/mkinstalldirs $(DESTDIR)$(bindir) | ||
52 | $(INSTALL) -m 755 ssh-host-config $(DESTDIR)$(bindir)/ssh-host-config | ||
53 | $(INSTALL) -m 755 ssh-user-config $(DESTDIR)$(bindir)/ssh-user-config | ||
54 | |||
55 | cygwin-postinstall: move-config-files remove-empty-dir install-doc install-scripts | ||
56 | @echo "Cygwin specific configuration finished." | ||
diff --git a/contrib/cygwin/README b/contrib/cygwin/README index ec58964c9..fc0a2f69b 100644 --- a/contrib/cygwin/README +++ b/contrib/cygwin/README | |||
@@ -1,4 +1,49 @@ | |||
1 | This package is the actual port of OpenSSH to Cygwin 1.5. | 1 | This package describes important Cygwin specific stuff concerning OpenSSH. |
2 | |||
3 | The binary package is usually built for recent Cygwin versions and might | ||
4 | not run on older versions. Please check http://cygwin.com/ for information | ||
5 | about current Cygwin releases. | ||
6 | |||
7 | Build instructions are at the end of the file. | ||
8 | |||
9 | =========================================================================== | ||
10 | Important change since 3.7.1p2-2: | ||
11 | |||
12 | The ssh-host-config file doesn't create the /etc/ssh_config and | ||
13 | /etc/sshd_config files from builtin here-scripts anymore, but it uses | ||
14 | skeleton files installed in /etc/defaults/etc. | ||
15 | |||
16 | Also it now tries hard to create appropriate permissions on files. | ||
17 | Same applies for ssh-user-config. | ||
18 | |||
19 | After creating the sshd service with ssh-host-config, it's advisable to | ||
20 | call ssh-user-config for all affected users, also already exising user | ||
21 | configurations. In the latter case, file and directory permissions are | ||
22 | checked and changed, if requireed to match the host configuration. | ||
23 | |||
24 | Important note for Windows 2003 Server users: | ||
25 | --------------------------------------------- | ||
26 | |||
27 | 2003 Server has a funny new feature. When starting services under SYSTEM | ||
28 | account, these services have nearly all user rights which SYSTEM holds... | ||
29 | except for the "Create a token object" right, which is needed to allow | ||
30 | public key authentication :-( | ||
31 | |||
32 | There's no way around this, except for creating a substitute account which | ||
33 | has the appropriate privileges. Basically, this account should be member | ||
34 | of the administrators group, plus it should have the following user rights: | ||
35 | |||
36 | Create a token object | ||
37 | Logon as a service | ||
38 | Replace a process level token | ||
39 | Increase Quota | ||
40 | |||
41 | The ssh-host-config script asks you, if it should create such an account, | ||
42 | called "sshd_server". If you say "no" here, you're on your own. Please | ||
43 | follow the instruction in ssh-host-config exactly if possible. Note that | ||
44 | ssh-user-config sets the permissions on 2003 Server machines dependent of | ||
45 | whether a sshd_server account exists or not. | ||
46 | =========================================================================== | ||
2 | 47 | ||
3 | =========================================================================== | 48 | =========================================================================== |
4 | Important change since 3.4p1-2: | 49 | Important change since 3.4p1-2: |
@@ -58,7 +103,7 @@ features of the FAT/FAT32 filesystems. | |||
58 | 103 | ||
59 | If you are installing OpenSSH the first time, you can generate global config | 104 | If you are installing OpenSSH the first time, you can generate global config |
60 | files and server keys by running | 105 | files and server keys by running |
61 | 106 | ||
62 | /usr/bin/ssh-host-config | 107 | /usr/bin/ssh-host-config |
63 | 108 | ||
64 | Note that this binary archive doesn't contain default config files in /etc. | 109 | Note that this binary archive doesn't contain default config files in /etc. |
@@ -73,10 +118,12 @@ some options: | |||
73 | 118 | ||
74 | usage: ssh-host-config [OPTION]... | 119 | usage: ssh-host-config [OPTION]... |
75 | Options: | 120 | Options: |
76 | --debug -d Enable shell's debug output. | 121 | --debug -d Enable shell's debug output. |
77 | --yes -y Answer all questions with "yes" automatically. | 122 | --yes -y Answer all questions with "yes" automatically. |
78 | --no -n Answer all questions with "no" automatically. | 123 | --no -n Answer all questions with "no" automatically. |
79 | --port -p <n> sshd listens on port n. | 124 | --cygwin -c <options> Use "options" as value for CYGWIN environment var. |
125 | --port -p <n> sshd listens on port n. | ||
126 | --pwd -w <passwd> Use "pwd" as password for user 'sshd_server'. | ||
80 | 127 | ||
81 | Additionally ssh-host-config now asks if it should install sshd as a | 128 | Additionally ssh-host-config now asks if it should install sshd as a |
82 | service when running under NT/W2K. This requires cygrunsrv installed. | 129 | service when running under NT/W2K. This requires cygrunsrv installed. |
@@ -114,54 +161,6 @@ ${SYSTEMROOT}/system32/drivers/etc/services file: | |||
114 | 161 | ||
115 | ssh 22/tcp #SSH daemon | 162 | ssh 22/tcp #SSH daemon |
116 | 163 | ||
117 | =========================================================================== | ||
118 | The following restrictions only apply to Cygwin versions up to 1.3.1 | ||
119 | =========================================================================== | ||
120 | |||
121 | Authentication to sshd is possible in one of two ways. | ||
122 | You'll have to decide before starting sshd! | ||
123 | |||
124 | - If you want to authenticate via RSA and you want to login to that | ||
125 | machine to exactly one user account you can do so by running sshd | ||
126 | under that user account. You must change /etc/sshd_config | ||
127 | to contain the following: | ||
128 | |||
129 | RSAAuthentication yes | ||
130 | |||
131 | Moreover it's possible to use rhosts and/or rhosts with | ||
132 | RSA authentication by setting the following in sshd_config: | ||
133 | |||
134 | RhostsAuthentication yes | ||
135 | RhostsRSAAuthentication yes | ||
136 | |||
137 | - If you want to be able to login to different user accounts you'll | ||
138 | have to start sshd under system account or any other account that | ||
139 | is able to switch user context. Note that administrators are _not_ | ||
140 | able to do that by default! You'll have to give the following | ||
141 | special user rights to the user: | ||
142 | "Act as part of the operating system" | ||
143 | "Replace process level token" | ||
144 | "Increase quotas" | ||
145 | and if used via service manager | ||
146 | "Logon as a service". | ||
147 | |||
148 | The system account does of course own that user rights by default. | ||
149 | |||
150 | Unfortunately, if you choose that way, you can only logon with | ||
151 | NT password authentification and you should change | ||
152 | /etc/sshd_config to contain the following: | ||
153 | |||
154 | PasswordAuthentication yes | ||
155 | RhostsAuthentication no | ||
156 | RhostsRSAAuthentication no | ||
157 | RSAAuthentication no | ||
158 | |||
159 | However you can login to the user which has started sshd with | ||
160 | RSA authentication anyway. If you want that, change the RSA | ||
161 | authentication setting back to "yes": | ||
162 | |||
163 | RSAAuthentication yes | ||
164 | |||
165 | Please note that OpenSSH does never use the value of $HOME to | 164 | Please note that OpenSSH does never use the value of $HOME to |
166 | search for the users configuration files! It always uses the | 165 | search for the users configuration files! It always uses the |
167 | value of the pw_dir field in /etc/passwd as the home directory. | 166 | value of the pw_dir field in /etc/passwd as the home directory. |
@@ -169,7 +168,7 @@ If no home diretory is set in /etc/passwd, the root directory | |||
169 | is used instead! | 168 | is used instead! |
170 | 169 | ||
171 | You may use all features of the CYGWIN=ntsec setting the same | 170 | You may use all features of the CYGWIN=ntsec setting the same |
172 | way as they are used by the `login' port on sources.redhat.com: | 171 | way as they are used by Cygwin's login(1) port: |
173 | 172 | ||
174 | The pw_gecos field may contain an additional field, that begins | 173 | The pw_gecos field may contain an additional field, that begins |
175 | with (upper case!) "U-", followed by the domain and the username | 174 | with (upper case!) "U-", followed by the domain and the username |
@@ -186,6 +185,8 @@ way as they are used by the `login' port on sources.redhat.com: | |||
186 | 185 | ||
187 | locuser::1104:513:John Doe,U-user,S-1-5-21-... | 186 | locuser::1104:513:John Doe,U-user,S-1-5-21-... |
188 | 187 | ||
188 | Note that the CYGWIN=ntsec setting is required for public key authentication. | ||
189 | |||
189 | SSH2 server and user keys are generated by the `ssh-*-config' scripts | 190 | SSH2 server and user keys are generated by the `ssh-*-config' scripts |
190 | as well. | 191 | as well. |
191 | 192 | ||
@@ -194,15 +195,30 @@ configure are used for the Cygwin binary distribution: | |||
194 | 195 | ||
195 | --prefix=/usr \ | 196 | --prefix=/usr \ |
196 | --sysconfdir=/etc \ | 197 | --sysconfdir=/etc \ |
197 | --libexecdir='${exec_prefix}/sbin' | 198 | --libexecdir='$(sbindir)' \ |
198 | 199 | --localstatedir=/var \ | |
199 | You must have installed the zlib and openssl packages to be able to | 200 | --datadir='$(prefix)/share' \ |
201 | --mandir='$(datadir)/man' \ | ||
202 | --with-tcp-wrappers | ||
203 | |||
204 | If you want to create a Cygwin package, equivalent to the one | ||
205 | in the Cygwin binary distribution, install like this: | ||
206 | |||
207 | mkdir /tmp/cygwin-ssh | ||
208 | cd $(builddir) | ||
209 | make install DESTDIR=/tmp/cygwin-ssh | ||
210 | cd $(srcdir)/contrib/cygwin | ||
211 | make cygwin-postinstall DESTDIR=/tmp/cygwin-ssh | ||
212 | cd /tmp/cygwin-ssh | ||
213 | find * \! -type d | tar cvjfT my-openssh.tar.bz2 - | ||
214 | |||
215 | You must have installed the zlib and openssl-devel packages to be able to | ||
200 | build OpenSSH! | 216 | build OpenSSH! |
201 | 217 | ||
202 | Please send requests, error reports etc. to cygwin@cygwin.com. | 218 | Please send requests, error reports etc. to cygwin@cygwin.com. |
203 | 219 | ||
204 | Have fun, | 220 | Have fun, |
205 | 221 | ||
206 | Corinna Vinschen <vinschen@redhat.com> | 222 | Corinna Vinschen |
207 | Cygwin Developer | 223 | Cygwin Developer |
208 | Red Hat Inc. | 224 | Red Hat Inc. |
diff --git a/contrib/cygwin/ssh-host-config b/contrib/cygwin/ssh-host-config index e9c56aea9..9c0dabf41 100644 --- a/contrib/cygwin/ssh-host-config +++ b/contrib/cygwin/ssh-host-config | |||
@@ -1,6 +1,6 @@ | |||
1 | #!/bin/sh | 1 | #!/bin/bash |
2 | # | 2 | # |
3 | # ssh-host-config, Copyright 2000, Red Hat Inc. | 3 | # ssh-host-config, Copyright 2000, 2001, 2002, 2003 Red Hat Inc. |
4 | # | 4 | # |
5 | # This file is part of the Cygwin port of OpenSSH. | 5 | # This file is part of the Cygwin port of OpenSSH. |
6 | 6 | ||
@@ -9,10 +9,7 @@ PREFIX=/usr | |||
9 | 9 | ||
10 | # Directory where the config files are stored | 10 | # Directory where the config files are stored |
11 | SYSCONFDIR=/etc | 11 | SYSCONFDIR=/etc |
12 | 12 | LOCALSTATEDIR=/var | |
13 | # Subdirectory where an old package might be installed | ||
14 | OLDPREFIX=/usr/local | ||
15 | OLDSYSCONFDIR=${OLDPREFIX}/etc | ||
16 | 13 | ||
17 | progname=$0 | 14 | progname=$0 |
18 | auto_answer="" | 15 | auto_answer="" |
@@ -27,9 +24,11 @@ request() | |||
27 | { | 24 | { |
28 | if [ "${auto_answer}" = "yes" ] | 25 | if [ "${auto_answer}" = "yes" ] |
29 | then | 26 | then |
27 | echo "$1 (yes/no) yes" | ||
30 | return 0 | 28 | return 0 |
31 | elif [ "${auto_answer}" = "no" ] | 29 | elif [ "${auto_answer}" = "no" ] |
32 | then | 30 | then |
31 | echo "$1 (yes/no) no" | ||
33 | return 1 | 32 | return 1 |
34 | fi | 33 | fi |
35 | 34 | ||
@@ -37,7 +36,7 @@ request() | |||
37 | while [ "X${answer}" != "Xyes" -a "X${answer}" != "Xno" ] | 36 | while [ "X${answer}" != "Xyes" -a "X${answer}" != "Xno" ] |
38 | do | 37 | do |
39 | echo -n "$1 (yes/no) " | 38 | echo -n "$1 (yes/no) " |
40 | read answer | 39 | read -e answer |
41 | done | 40 | done |
42 | if [ "X${answer}" = "Xyes" ] | 41 | if [ "X${answer}" = "Xyes" ] |
43 | then | 42 | then |
@@ -60,7 +59,7 @@ do | |||
60 | option=$1 | 59 | option=$1 |
61 | shift | 60 | shift |
62 | 61 | ||
63 | case "$option" in | 62 | case "${option}" in |
64 | -d | --debug ) | 63 | -d | --debug ) |
65 | set -x | 64 | set -x |
66 | ;; | 65 | ;; |
@@ -73,21 +72,33 @@ do | |||
73 | auto_answer=no | 72 | auto_answer=no |
74 | ;; | 73 | ;; |
75 | 74 | ||
75 | -c | --cygwin ) | ||
76 | cygwin_value="$1" | ||
77 | shift | ||
78 | ;; | ||
79 | |||
76 | -p | --port ) | 80 | -p | --port ) |
77 | port_number=$1 | 81 | port_number=$1 |
78 | shift | 82 | shift |
79 | ;; | 83 | ;; |
80 | 84 | ||
85 | -w | --pwd ) | ||
86 | password_value="$1" | ||
87 | shift | ||
88 | ;; | ||
89 | |||
81 | *) | 90 | *) |
82 | echo "usage: ${progname} [OPTION]..." | 91 | echo "usage: ${progname} [OPTION]..." |
83 | echo | 92 | echo |
84 | echo "This script creates an OpenSSH host configuration." | 93 | echo "This script creates an OpenSSH host configuration." |
85 | echo | 94 | echo |
86 | echo "Options:" | 95 | echo "Options:" |
87 | echo " --debug -d Enable shell's debug output." | 96 | echo " --debug -d Enable shell's debug output." |
88 | echo " --yes -y Answer all questions with \"yes\" automatically." | 97 | echo " --yes -y Answer all questions with \"yes\" automatically." |
89 | echo " --no -n Answer all questions with \"no\" automatically." | 98 | echo " --no -n Answer all questions with \"no\" automatically." |
90 | echo " --port -p <n> sshd listens on port n." | 99 | echo " --cygwin -c <options> Use \"options\" as value for CYGWIN environment var." |
100 | echo " --port -p <n> sshd listens on port n." | ||
101 | echo " --pwd -w <passwd> Use \"pwd\" as password for user 'sshd_server'." | ||
91 | echo | 102 | echo |
92 | exit 1 | 103 | exit 1 |
93 | ;; | 104 | ;; |
@@ -96,8 +107,13 @@ do | |||
96 | done | 107 | done |
97 | 108 | ||
98 | # Check if running on NT | 109 | # Check if running on NT |
99 | _sys="`uname -a`" | 110 | _sys="`uname`" |
100 | _nt=`expr "$_sys" : "CYGWIN_NT"` | 111 | _nt=`expr "${_sys}" : "CYGWIN_NT"` |
112 | # If running on NT, check if running under 2003 Server or later | ||
113 | if [ ${_nt} -gt 0 ] | ||
114 | then | ||
115 | _nt2003=`uname | awk -F- '{print ( $2 >= 5.2 ) ? 1 : 0;}'` | ||
116 | fi | ||
101 | 117 | ||
102 | # Check for running ssh/sshd processes first. Refuse to do anything while | 118 | # Check for running ssh/sshd processes first. Refuse to do anything while |
103 | # some ssh processes are still running | 119 | # some ssh processes are still running |
@@ -137,87 +153,33 @@ fi | |||
137 | 153 | ||
138 | # Create /var/log and /var/log/lastlog if not already existing | 154 | # Create /var/log and /var/log/lastlog if not already existing |
139 | 155 | ||
140 | if [ -f /var/log ] | 156 | if [ -f ${LOCALSTATEDIR}/log ] |
141 | then | 157 | then |
142 | echo "Creating /var/log failed\!" | 158 | echo "Creating ${LOCALSTATEDIR}/log failed!" |
143 | else | 159 | else |
144 | if [ ! -d /var/log ] | 160 | if [ ! -d ${LOCALSTATEDIR}/log ] |
145 | then | 161 | then |
146 | mkdir -p /var/log | 162 | mkdir -p ${LOCALSTATEDIR}/log |
147 | fi | 163 | fi |
148 | if [ -d /var/log/lastlog ] | 164 | if [ -d ${LOCALSTATEDIR}/log/lastlog ] |
149 | then | 165 | then |
150 | echo "Creating /var/log/lastlog failed\!" | 166 | chmod 777 ${LOCALSTATEDIR}/log/lastlog |
151 | elif [ ! -f /var/log/lastlog ] | 167 | elif [ ! -f ${LOCALSTATEDIR}/log/lastlog ] |
152 | then | 168 | then |
153 | cat /dev/null > /var/log/lastlog | 169 | cat /dev/null > ${LOCALSTATEDIR}/log/lastlog |
170 | chmod 666 ${LOCALSTATEDIR}/log/lastlog | ||
154 | fi | 171 | fi |
155 | fi | 172 | fi |
156 | 173 | ||
157 | # Create /var/empty file used as chroot jail for privilege separation | 174 | # Create /var/empty file used as chroot jail for privilege separation |
158 | if [ -f /var/empty ] | 175 | if [ -f ${LOCALSTATEDIR}/empty ] |
159 | then | 176 | then |
160 | echo "Creating /var/empty failed\!" | 177 | echo "Creating ${LOCALSTATEDIR}/empty failed!" |
161 | else | 178 | else |
162 | mkdir -p /var/empty | 179 | mkdir -p ${LOCALSTATEDIR}/empty |
163 | # On NT change ownership of that dir to user "system" | 180 | if [ ${_nt} -gt 0 ] |
164 | if [ $_nt -gt 0 ] | ||
165 | then | 181 | then |
166 | chmod 755 /var/empty | 182 | chmod 755 ${LOCALSTATEDIR}/empty |
167 | chown system.system /var/empty | ||
168 | fi | ||
169 | fi | ||
170 | |||
171 | # Check for an old installation in ${OLDPREFIX} unless ${OLDPREFIX} isn't | ||
172 | # the same as ${PREFIX} | ||
173 | |||
174 | old_install=0 | ||
175 | if [ "${OLDPREFIX}" != "${PREFIX}" ] | ||
176 | then | ||
177 | if [ -f "${OLDPREFIX}/sbin/sshd" ] | ||
178 | then | ||
179 | echo | ||
180 | echo "You seem to have an older installation in ${OLDPREFIX}." | ||
181 | echo | ||
182 | # Check if old global configuration files exist | ||
183 | if [ -f "${OLDSYSCONFDIR}/ssh_host_key" ] | ||
184 | then | ||
185 | if request "Do you want to copy your config files to your new installation?" | ||
186 | then | ||
187 | cp -f ${OLDSYSCONFDIR}/ssh_host_key ${SYSCONFDIR} | ||
188 | cp -f ${OLDSYSCONFDIR}/ssh_host_key.pub ${SYSCONFDIR} | ||
189 | cp -f ${OLDSYSCONFDIR}/ssh_host_dsa_key ${SYSCONFDIR} | ||
190 | cp -f ${OLDSYSCONFDIR}/ssh_host_dsa_key.pub ${SYSCONFDIR} | ||
191 | cp -f ${OLDSYSCONFDIR}/ssh_config ${SYSCONFDIR} | ||
192 | cp -f ${OLDSYSCONFDIR}/sshd_config ${SYSCONFDIR} | ||
193 | fi | ||
194 | fi | ||
195 | if request "Do you want to erase your old installation?" | ||
196 | then | ||
197 | rm -f ${OLDPREFIX}/bin/ssh.exe | ||
198 | rm -f ${OLDPREFIX}/bin/ssh-config | ||
199 | rm -f ${OLDPREFIX}/bin/scp.exe | ||
200 | rm -f ${OLDPREFIX}/bin/ssh-add.exe | ||
201 | rm -f ${OLDPREFIX}/bin/ssh-agent.exe | ||
202 | rm -f ${OLDPREFIX}/bin/ssh-keygen.exe | ||
203 | rm -f ${OLDPREFIX}/bin/slogin | ||
204 | rm -f ${OLDSYSCONFDIR}/ssh_host_key | ||
205 | rm -f ${OLDSYSCONFDIR}/ssh_host_key.pub | ||
206 | rm -f ${OLDSYSCONFDIR}/ssh_host_dsa_key | ||
207 | rm -f ${OLDSYSCONFDIR}/ssh_host_dsa_key.pub | ||
208 | rm -f ${OLDSYSCONFDIR}/ssh_config | ||
209 | rm -f ${OLDSYSCONFDIR}/sshd_config | ||
210 | rm -f ${OLDPREFIX}/man/man1/ssh.1 | ||
211 | rm -f ${OLDPREFIX}/man/man1/scp.1 | ||
212 | rm -f ${OLDPREFIX}/man/man1/ssh-add.1 | ||
213 | rm -f ${OLDPREFIX}/man/man1/ssh-agent.1 | ||
214 | rm -f ${OLDPREFIX}/man/man1/ssh-keygen.1 | ||
215 | rm -f ${OLDPREFIX}/man/man1/slogin.1 | ||
216 | rm -f ${OLDPREFIX}/man/man8/sshd.8 | ||
217 | rm -f ${OLDPREFIX}/sbin/sshd.exe | ||
218 | rm -f ${OLDPREFIX}/sbin/sftp-server.exe | ||
219 | fi | ||
220 | old_install=1 | ||
221 | fi | 183 | fi |
222 | fi | 184 | fi |
223 | 185 | ||
@@ -255,52 +217,16 @@ then | |||
255 | fi | 217 | fi |
256 | fi | 218 | fi |
257 | 219 | ||
258 | # Create default ssh_config from here script | 220 | # Create default ssh_config from skeleton file in /etc/defaults/etc |
259 | 221 | ||
260 | if [ ! -f "${SYSCONFDIR}/ssh_config" ] | 222 | if [ ! -f "${SYSCONFDIR}/ssh_config" ] |
261 | then | 223 | then |
262 | echo "Generating ${SYSCONFDIR}/ssh_config file" | 224 | echo "Generating ${SYSCONFDIR}/ssh_config file" |
263 | cat > ${SYSCONFDIR}/ssh_config << EOF | 225 | cp ${SYSCONFDIR}/defaults/etc/ssh_config ${SYSCONFDIR}/ssh_config |
264 | # This is the ssh client system-wide configuration file. See | 226 | if [ "${port_number}" != "22" ] |
265 | # ssh_config(5) for more information. This file provides defaults for | ||
266 | # users, and the values can be changed in per-user configuration files | ||
267 | # or on the command line. | ||
268 | |||
269 | # Configuration data is parsed as follows: | ||
270 | # 1. command line options | ||
271 | # 2. user-specific file | ||
272 | # 3. system-wide file | ||
273 | # Any configuration value is only changed the first time it is set. | ||
274 | # Thus, host-specific definitions should be at the beginning of the | ||
275 | # configuration file, and defaults at the end. | ||
276 | |||
277 | # Site-wide defaults for various options | ||
278 | |||
279 | # Host * | ||
280 | # ForwardAgent no | ||
281 | # ForwardX11 no | ||
282 | # RhostsRSAAuthentication no | ||
283 | # RSAAuthentication yes | ||
284 | # PasswordAuthentication yes | ||
285 | # HostbasedAuthentication no | ||
286 | # BatchMode no | ||
287 | # CheckHostIP yes | ||
288 | # AddressFamily any | ||
289 | # ConnectTimeout 0 | ||
290 | # StrictHostKeyChecking ask | ||
291 | # IdentityFile ~/.ssh/identity | ||
292 | # IdentityFile ~/.ssh/id_dsa | ||
293 | # IdentityFile ~/.ssh/id_rsa | ||
294 | # Port 22 | ||
295 | # Protocol 2,1 | ||
296 | # Cipher 3des | ||
297 | # Ciphers aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc | ||
298 | # EscapeChar ~ | ||
299 | EOF | ||
300 | if [ "$port_number" != "22" ] | ||
301 | then | 227 | then |
302 | echo "Host localhost" >> ${SYSCONFDIR}/ssh_config | 228 | echo "Host localhost" >> ${SYSCONFDIR}/ssh_config |
303 | echo " Port $port_number" >> ${SYSCONFDIR}/ssh_config | 229 | echo " Port ${port_number}" >> ${SYSCONFDIR}/ssh_config |
304 | fi | 230 | fi |
305 | fi | 231 | fi |
306 | 232 | ||
@@ -322,35 +248,35 @@ fi | |||
322 | 248 | ||
323 | # Prior to creating or modifying sshd_config, care for privilege separation | 249 | # Prior to creating or modifying sshd_config, care for privilege separation |
324 | 250 | ||
325 | if [ "$privsep_configured" != "yes" ] | 251 | if [ "${privsep_configured}" != "yes" ] |
326 | then | 252 | then |
327 | if [ $_nt -gt 0 ] | 253 | if [ ${_nt} -gt 0 ] |
328 | then | 254 | then |
329 | echo "Privilege separation is set to yes by default since OpenSSH 3.3." | 255 | echo "Privilege separation is set to yes by default since OpenSSH 3.3." |
330 | echo "However, this requires a non-privileged account called 'sshd'." | 256 | echo "However, this requires a non-privileged account called 'sshd'." |
331 | echo "For more info on privilege separation read /usr/doc/openssh/README.privsep." | 257 | echo "For more info on privilege separation read /usr/share/doc/openssh/README.privsep." |
332 | echo | 258 | echo |
333 | if request "Shall privilege separation be used?" | 259 | if request "Should privilege separation be used?" |
334 | then | 260 | then |
335 | privsep_used=yes | 261 | privsep_used=yes |
336 | grep -q '^sshd:' ${SYSCONFDIR}/passwd && sshd_in_passwd=yes | 262 | grep -q '^sshd:' ${SYSCONFDIR}/passwd && sshd_in_passwd=yes |
337 | net user sshd >/dev/null 2>&1 && sshd_in_sam=yes | 263 | net user sshd >/dev/null 2>&1 && sshd_in_sam=yes |
338 | if [ "$sshd_in_passwd" != "yes" ] | 264 | if [ "${sshd_in_passwd}" != "yes" ] |
339 | then | 265 | then |
340 | if [ "$sshd_in_sam" != "yes" ] | 266 | if [ "${sshd_in_sam}" != "yes" ] |
341 | then | 267 | then |
342 | echo "Warning: The following function requires administrator privileges!" | 268 | echo "Warning: The following function requires administrator privileges!" |
343 | if request "Shall this script create a local user 'sshd' on this machine?" | 269 | if request "Should this script create a local user 'sshd' on this machine?" |
344 | then | 270 | then |
345 | dos_var_empty=`cygpath -w /var/empty` | 271 | dos_var_empty=`cygpath -w ${LOCALSTATEDIR}/empty` |
346 | net user sshd /add /fullname:"sshd privsep" "/homedir:$dos_var_empty" /active:no > /dev/null 2>&1 && sshd_in_sam=yes | 272 | net user sshd /add /fullname:"sshd privsep" "/homedir:${dos_var_empty}" /active:no > /dev/null 2>&1 && sshd_in_sam=yes |
347 | if [ "$sshd_in_sam" != "yes" ] | 273 | if [ "${sshd_in_sam}" != "yes" ] |
348 | then | 274 | then |
349 | echo "Warning: Creating the user 'sshd' failed!" | 275 | echo "Warning: Creating the user 'sshd' failed!" |
350 | fi | 276 | fi |
351 | fi | 277 | fi |
352 | fi | 278 | fi |
353 | if [ "$sshd_in_sam" != "yes" ] | 279 | if [ "${sshd_in_sam}" != "yes" ] |
354 | then | 280 | then |
355 | echo "Warning: Can't create user 'sshd' in ${SYSCONFDIR}/passwd!" | 281 | echo "Warning: Can't create user 'sshd' in ${SYSCONFDIR}/passwd!" |
356 | echo " Privilege separation set to 'no' again!" | 282 | echo " Privilege separation set to 'no' again!" |
@@ -365,161 +291,85 @@ then | |||
365 | fi | 291 | fi |
366 | else | 292 | else |
367 | # On 9x don't use privilege separation. Since security isn't | 293 | # On 9x don't use privilege separation. Since security isn't |
368 | # available it just adds useless addtional processes. | 294 | # available it just adds useless additional processes. |
369 | privsep_used=no | 295 | privsep_used=no |
370 | fi | 296 | fi |
371 | fi | 297 | fi |
372 | 298 | ||
373 | # Create default sshd_config from here script or modify to add the | 299 | # Create default sshd_config from skeleton files in /etc/defaults/etc or |
374 | # missing privsep configuration option | 300 | # modify to add the missing privsep configuration option |
375 | 301 | ||
376 | if [ ! -f "${SYSCONFDIR}/sshd_config" ] | 302 | if [ ! -f "${SYSCONFDIR}/sshd_config" ] |
377 | then | 303 | then |
378 | echo "Generating ${SYSCONFDIR}/sshd_config file" | 304 | echo "Generating ${SYSCONFDIR}/sshd_config file" |
379 | cat > ${SYSCONFDIR}/sshd_config << EOF | 305 | sed -e "s/^#UsePrivilegeSeparation yes/UsePrivilegeSeparation ${privsep_used}/ |
380 | # This is the sshd server system-wide configuration file. See | 306 | s/^#Port 22/Port ${port_number}/ |
381 | # sshd_config(5) for more information. | 307 | s/^#StrictModes yes/StrictModes no/" \ |
382 | 308 | < ${SYSCONFDIR}/defaults/etc/sshd_config \ | |
383 | # This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin | 309 | > ${SYSCONFDIR}/sshd_config |
384 | 310 | elif [ "${privsep_configured}" != "yes" ] | |
385 | # The strategy used for options in the default sshd_config shipped with | ||
386 | # OpenSSH is to specify options with their default value where | ||
387 | # possible, but leave them commented. Uncommented options change a | ||
388 | # default value. | ||
389 | |||
390 | Port $port_number | ||
391 | #Protocol 2,1 | ||
392 | #ListenAddress 0.0.0.0 | ||
393 | #ListenAddress :: | ||
394 | |||
395 | # HostKey for protocol version 1 | ||
396 | #HostKey ${SYSCONFDIR}/ssh_host_key | ||
397 | # HostKeys for protocol version 2 | ||
398 | #HostKey ${SYSCONFDIR}/ssh_host_rsa_key | ||
399 | #HostKey ${SYSCONFDIR}/ssh_host_dsa_key | ||
400 | |||
401 | # Lifetime and size of ephemeral version 1 server key | ||
402 | #KeyRegenerationInterval 1h | ||
403 | #ServerKeyBits 768 | ||
404 | |||
405 | # Logging | ||
406 | #obsoletes QuietMode and FascistLogging | ||
407 | #SyslogFacility AUTH | ||
408 | #LogLevel INFO | ||
409 | |||
410 | # Authentication: | ||
411 | |||
412 | #LoginGraceTime 2m | ||
413 | #PermitRootLogin yes | ||
414 | # The following setting overrides permission checks on host key files | ||
415 | # and directories. For security reasons set this to "yes" when running | ||
416 | # NT/W2K, NTFS and CYGWIN=ntsec. | ||
417 | StrictModes no | ||
418 | |||
419 | #RSAAuthentication yes | ||
420 | #PubkeyAuthentication yes | ||
421 | #AuthorizedKeysFile .ssh/authorized_keys | ||
422 | |||
423 | # For this to work you will also need host keys in ${SYSCONFDIR}/ssh_known_hosts | ||
424 | #RhostsRSAAuthentication no | ||
425 | # similar for protocol version 2 | ||
426 | #HostbasedAuthentication no | ||
427 | # Change to yes if you don't trust ~/.ssh/known_hosts for | ||
428 | # RhostsRSAAuthentication and HostbasedAuthentication | ||
429 | #IgnoreUserKnownHosts no | ||
430 | # Don't read the user's ~/.rhosts and ~/.shosts files | ||
431 | #IgnoreRhosts yes | ||
432 | |||
433 | # To disable tunneled clear text passwords, change to no here! | ||
434 | #PasswordAuthentication yes | ||
435 | #PermitEmptyPasswords no | ||
436 | |||
437 | # Change to no to disable s/key passwords | ||
438 | #ChallengeResponseAuthentication yes | ||
439 | |||
440 | #AllowTcpForwarding yes | ||
441 | #GatewayPorts no | ||
442 | #X11Forwarding no | ||
443 | #X11DisplayOffset 10 | ||
444 | #X11UseLocalhost yes | ||
445 | #PrintMotd yes | ||
446 | #PrintLastLog yes | ||
447 | #KeepAlive yes | ||
448 | #UseLogin no | ||
449 | UsePrivilegeSeparation $privsep_used | ||
450 | #PermitUserEnvironment no | ||
451 | #Compression yes | ||
452 | #ClientAliveInterval 0 | ||
453 | #ClientAliveCountMax 3 | ||
454 | #UseDNS yes | ||
455 | #PidFile /var/run/sshd.pid | ||
456 | #MaxStartups 10 | ||
457 | |||
458 | # no default banner path | ||
459 | #Banner /some/path | ||
460 | |||
461 | # override default of no subsystems | ||
462 | Subsystem sftp /usr/sbin/sftp-server | ||
463 | EOF | ||
464 | elif [ "$privsep_configured" != "yes" ] | ||
465 | then | 311 | then |
466 | echo >> ${SYSCONFDIR}/sshd_config | 312 | echo >> ${SYSCONFDIR}/sshd_config |
467 | echo "UsePrivilegeSeparation $privsep_used" >> ${SYSCONFDIR}/sshd_config | 313 | echo "UsePrivilegeSeparation ${privsep_used}" >> ${SYSCONFDIR}/sshd_config |
468 | fi | 314 | fi |
469 | 315 | ||
470 | # Care for services file | 316 | # Care for services file |
471 | if [ $_nt -gt 0 ] | 317 | _my_etcdir="/ssh-host-config.$$" |
318 | if [ ${_nt} -gt 0 ] | ||
472 | then | 319 | then |
473 | _wservices="${SYSTEMROOT}\\system32\\drivers\\etc\\services" | 320 | _win_etcdir="${SYSTEMROOT}\\system32\\drivers\\etc" |
474 | _wserv_tmp="${SYSTEMROOT}\\system32\\drivers\\etc\\srv.out.$$" | 321 | _services="${_my_etcdir}/services" |
322 | # On NT, 27 spaces, no space after the hash | ||
323 | _spaces=" #" | ||
475 | else | 324 | else |
476 | _wservices="${WINDIR}\\SERVICES" | 325 | _win_etcdir="${WINDIR}" |
477 | _wserv_tmp="${WINDIR}\\SERV.$$" | 326 | _services="${_my_etcdir}/SERVICES" |
327 | # On 9x, 18 spaces (95 is very touchy), a space after the hash | ||
328 | _spaces=" # " | ||
478 | fi | 329 | fi |
479 | _services=`cygpath -u "${_wservices}"` | 330 | _serv_tmp="${_my_etcdir}/srv.out.$$" |
480 | _serv_tmp=`cygpath -u "${_wserv_tmp}"` | ||
481 | 331 | ||
482 | mount -t -f "${_wservices}" "${_services}" | 332 | mount -t -f "${_win_etcdir}" "${_my_etcdir}" |
483 | mount -t -f "${_wserv_tmp}" "${_serv_tmp}" | 333 | |
334 | # Depends on the above mount | ||
335 | _wservices=`cygpath -w "${_services}"` | ||
484 | 336 | ||
485 | # Remove sshd 22/port from services | 337 | # Remove sshd 22/port from services |
486 | if [ `grep -q 'sshd[ \t][ \t]*22' "${_services}"; echo $?` -eq 0 ] | 338 | if [ `grep -q 'sshd[ \t][ \t]*22' "${_services}"; echo $?` -eq 0 ] |
487 | then | 339 | then |
488 | grep -v 'sshd[ \t][ \t]*22' "${_services}" > "${_serv_tmp}" | 340 | grep -v 'sshd[ \t][ \t]*22' "${_services}" > "${_serv_tmp}" |
489 | if [ -f "${_serv_tmp}" ] | 341 | if [ -f "${_serv_tmp}" ] |
490 | then | 342 | then |
491 | if mv "${_serv_tmp}" "${_services}" | 343 | if mv "${_serv_tmp}" "${_services}" |
492 | then | 344 | then |
493 | echo "Removing sshd from ${_services}" | 345 | echo "Removing sshd from ${_wservices}" |
494 | else | 346 | else |
495 | echo "Removing sshd from ${_services} failed\!" | 347 | echo "Removing sshd from ${_wservices} failed!" |
496 | fi | 348 | fi |
497 | rm -f "${_serv_tmp}" | 349 | rm -f "${_serv_tmp}" |
498 | else | 350 | else |
499 | echo "Removing sshd from ${_services} failed\!" | 351 | echo "Removing sshd from ${_wservices} failed!" |
500 | fi | 352 | fi |
501 | fi | 353 | fi |
502 | 354 | ||
503 | # Add ssh 22/tcp and ssh 22/udp to services | 355 | # Add ssh 22/tcp and ssh 22/udp to services |
504 | if [ `grep -q 'ssh[ \t][ \t]*22' "${_services}"; echo $?` -ne 0 ] | 356 | if [ `grep -q 'ssh[ \t][ \t]*22' "${_services}"; echo $?` -ne 0 ] |
505 | then | 357 | then |
506 | awk '{ if ( $2 ~ /^23\/tcp/ ) print "ssh 22/tcp #SSH Remote Login Protocol\nssh 22/udp #SSH Remote Login Protocol"; print $0; }' < "${_services}" > "${_serv_tmp}" | 358 | if awk '{ if ( $2 ~ /^23\/tcp/ ) print "ssh 22/tcp'"${_spaces}"'SSH Remote Login Protocol\nssh 22/udp'"${_spaces}"'SSH Remote Login Protocol"; print $0; }' < "${_services}" > "${_serv_tmp}" |
507 | if [ -f "${_serv_tmp}" ] | ||
508 | then | 359 | then |
509 | if mv "${_serv_tmp}" "${_services}" | 360 | if mv "${_serv_tmp}" "${_services}" |
510 | then | 361 | then |
511 | echo "Added ssh to ${_services}" | 362 | echo "Added ssh to ${_wservices}" |
512 | else | 363 | else |
513 | echo "Adding ssh to ${_services} failed\!" | 364 | echo "Adding ssh to ${_wservices} failed!" |
514 | fi | 365 | fi |
515 | rm -f "${_serv_tmp}" | 366 | rm -f "${_serv_tmp}" |
516 | else | 367 | else |
517 | echo "Adding ssh to ${_services} failed\!" | 368 | echo "WARNING: Adding ssh to ${_wservices} failed!" |
518 | fi | 369 | fi |
519 | fi | 370 | fi |
520 | 371 | ||
521 | umount "${_services}" | 372 | umount "${_my_etcdir}" |
522 | umount "${_serv_tmp}" | ||
523 | 373 | ||
524 | # Care for inetd.conf file | 374 | # Care for inetd.conf file |
525 | _inetcnf="${SYSCONFDIR}/inetd.conf" | 375 | _inetcnf="${SYSCONFDIR}/inetd.conf" |
@@ -538,13 +388,13 @@ then | |||
538 | then | 388 | then |
539 | if mv "${_inetcnf_tmp}" "${_inetcnf}" | 389 | if mv "${_inetcnf_tmp}" "${_inetcnf}" |
540 | then | 390 | then |
541 | echo "Removed sshd from ${_inetcnf}" | 391 | echo "Removed sshd from ${_inetcnf}" |
542 | else | 392 | else |
543 | echo "Removing sshd from ${_inetcnf} failed\!" | 393 | echo "Removing sshd from ${_inetcnf} failed!" |
544 | fi | 394 | fi |
545 | rm -f "${_inetcnf_tmp}" | 395 | rm -f "${_inetcnf_tmp}" |
546 | else | 396 | else |
547 | echo "Removing sshd from ${_inetcnf} failed\!" | 397 | echo "Removing sshd from ${_inetcnf} failed!" |
548 | fi | 398 | fi |
549 | fi | 399 | fi |
550 | 400 | ||
@@ -562,34 +412,181 @@ then | |||
562 | fi | 412 | fi |
563 | 413 | ||
564 | # On NT ask if sshd should be installed as service | 414 | # On NT ask if sshd should be installed as service |
565 | if [ $_nt -gt 0 ] | 415 | if [ ${_nt} -gt 0 ] |
566 | then | 416 | then |
567 | echo | 417 | # But only if it is not already installed |
568 | echo "Do you want to install sshd as service?" | 418 | if ! cygrunsrv -Q sshd > /dev/null 2>&1 |
569 | if request "(Say \"no\" if it's already installed as service)" | ||
570 | then | 419 | then |
571 | echo | 420 | echo |
572 | echo "Which value should the environment variable CYGWIN have when" | 421 | echo |
573 | echo "sshd starts? It's recommended to set at least \"ntsec\" to be" | 422 | echo "Warning: The following functions require administrator privileges!" |
574 | echo "able to change user context without password." | 423 | echo |
575 | echo -n "Default is \"binmode ntsec tty\". CYGWIN=" | 424 | echo "Do you want to install sshd as service?" |
576 | read _cygwin | 425 | if request "(Say \"no\" if it's already installed as service)" |
577 | [ -z "${_cygwin}" ] && _cygwin="binmode ntsec tty" | 426 | then |
578 | if cygrunsrv -I sshd -d "CYGWIN sshd" -p /usr/sbin/sshd -a -D -e "CYGWIN=${_cygwin}" | 427 | if [ $_nt2003 -gt 0 ] |
428 | then | ||
429 | grep -q '^sshd_server:' ${SYSCONFDIR}/passwd && sshd_server_in_passwd=yes | ||
430 | if [ "${sshd_server_in_passwd}" = "yes" ] | ||
431 | then | ||
432 | # Drop sshd_server from passwd since it could have wrong settings | ||
433 | grep -v '^sshd_server:' ${SYSCONFDIR}/passwd > ${SYSCONFDIR}/passwd.$$ | ||
434 | rm -f ${SYSCONFDIR}/passwd | ||
435 | mv ${SYSCONFDIR}/passwd.$$ ${SYSCONFDIR}/passwd | ||
436 | chmod g-w,o-w ${SYSCONFDIR}/passwd | ||
437 | fi | ||
438 | net user sshd_server >/dev/null 2>&1 && sshd_server_in_sam=yes | ||
439 | if [ "${sshd_server_in_sam}" != "yes" ] | ||
440 | then | ||
441 | echo | ||
442 | echo "You appear to be running Windows 2003 Server or later. On 2003 and" | ||
443 | echo "later systems, it's not possible to use the LocalSystem account" | ||
444 | echo "if sshd should allow passwordless logon (e. g. public key authentication)." | ||
445 | echo "If you want to enable that functionality, it's required to create a new" | ||
446 | echo "account 'sshd_server' with special privileges, which is then used to run" | ||
447 | echo "the sshd service under." | ||
448 | echo | ||
449 | echo "Should this script create a new local account 'sshd_server' which has" | ||
450 | if request "the required privileges?" | ||
451 | then | ||
452 | _admingroup=`awk -F: '{if ( $2 == "S-1-5-32-544" ) print $1;}' ${SYSCONFDIR}/group` | ||
453 | if [ -z "${_admingroup}" ] | ||
454 | then | ||
455 | echo "There's no group with SID S-1-5-32-544 (Local administrators group) in" | ||
456 | echo "your ${SYSCONFDIR}/group file. Please regenerate this entry using 'mkgroup -l'" | ||
457 | echo "and restart this script." | ||
458 | exit 1 | ||
459 | fi | ||
460 | dos_var_empty=`cygpath -w ${LOCALSTATEDIR}/empty` | ||
461 | while [ "${sshd_server_in_sam}" != "yes" ] | ||
462 | do | ||
463 | if [ -n "${password_value}" ] | ||
464 | then | ||
465 | _password="${password_value}" | ||
466 | # Allow to ask for password if first try fails | ||
467 | password_value="" | ||
468 | else | ||
469 | echo | ||
470 | echo "Please enter a password for new user 'sshd_server'. Please be sure that" | ||
471 | echo "this password matches the password rules given on your system." | ||
472 | echo -n "Entering no password will exit the configuration. PASSWORD=" | ||
473 | read -e _password | ||
474 | if [ -z "${_password}" ] | ||
475 | then | ||
476 | echo | ||
477 | echo "Exiting configuration. No user sshd_server has been created," | ||
478 | echo "no sshd service installed." | ||
479 | exit 1 | ||
480 | fi | ||
481 | fi | ||
482 | net user sshd_server "${_password}" /add /fullname:"sshd server account" "/homedir:${dos_var_empty}" /yes > /tmp/nu.$$ 2>&1 && sshd_server_in_sam=yes | ||
483 | if [ "${sshd_server_in_sam}" != "yes" ] | ||
484 | then | ||
485 | echo "Creating the user 'sshd_server' failed! Reason:" | ||
486 | cat /tmp/nu.$$ | ||
487 | rm /tmp/nu.$$ | ||
488 | fi | ||
489 | done | ||
490 | net localgroup "${_admingroup}" sshd_server /add > /dev/null 2>&1 && sshd_server_in_admingroup=yes | ||
491 | if [ "${sshd_server_in_admingroup}" != "yes" ] | ||
492 | then | ||
493 | echo "WARNING: Adding user sshd_server to local group ${_admingroup} failed!" | ||
494 | echo "Please add sshd_server to local group ${_admingroup} before" | ||
495 | echo "starting the sshd service!" | ||
496 | echo | ||
497 | fi | ||
498 | passwd_has_expiry_flags=`passwd -v | awk '/^passwd /{print ( $3 >= 1.5 ) ? "yes" : "no";}'` | ||
499 | if [ "${passwd_has_expiry_flags}" != "yes" ] | ||
500 | then | ||
501 | echo | ||
502 | echo "WARNING: User sshd_server has password expiry set to system default." | ||
503 | echo "Please check that password never expires or set it to your needs." | ||
504 | elif ! passwd -e sshd_server | ||
505 | then | ||
506 | echo | ||
507 | echo "WARNING: Setting password expiry for user sshd_server failed!" | ||
508 | echo "Please check that password never expires or set it to your needs." | ||
509 | fi | ||
510 | editrights -a SeAssignPrimaryTokenPrivilege -u sshd_server && | ||
511 | editrights -a SeCreateTokenPrivilege -u sshd_server && | ||
512 | editrights -a SeDenyInteractiveLogonRight -u sshd_server && | ||
513 | editrights -a SeDenyNetworkLogonRight -u sshd_server && | ||
514 | editrights -a SeDenyRemoteInteractiveLogonRight -u sshd_server && | ||
515 | editrights -a SeIncreaseQuotaPrivilege -u sshd_server && | ||
516 | editrights -a SeServiceLogonRight -u sshd_server && | ||
517 | sshd_server_got_all_rights="yes" | ||
518 | if [ "${sshd_server_got_all_rights}" != "yes" ] | ||
519 | then | ||
520 | echo | ||
521 | echo "Assigning the appropriate privileges to user 'sshd_server' failed!" | ||
522 | echo "Can't create sshd service!" | ||
523 | exit 1 | ||
524 | fi | ||
525 | echo | ||
526 | echo "User 'sshd_server' has been created with password '${_password}'." | ||
527 | echo "If you change the password, please keep in mind to change the password" | ||
528 | echo "for the sshd service, too." | ||
529 | echo | ||
530 | echo "Also keep in mind that the user sshd_server needs read permissions on all" | ||
531 | echo "users' .ssh/authorized_keys file to allow public key authentication for" | ||
532 | echo "these users!. (Re-)running ssh-user-config for each user will set the" | ||
533 | echo "required permissions correctly." | ||
534 | echo | ||
535 | fi | ||
536 | fi | ||
537 | if [ "${sshd_server_in_sam}" = "yes" ] | ||
538 | then | ||
539 | mkpasswd -l -u sshd_server | sed -e 's/bash$/false/' >> ${SYSCONFDIR}/passwd | ||
540 | fi | ||
541 | fi | ||
542 | if [ -n "${cygwin_value}" ] | ||
543 | then | ||
544 | _cygwin="${cygwin_value}" | ||
545 | else | ||
546 | echo | ||
547 | echo "Which value should the environment variable CYGWIN have when" | ||
548 | echo "sshd starts? It's recommended to set at least \"ntsec\" to be" | ||
549 | echo "able to change user context without password." | ||
550 | echo -n "Default is \"ntsec\". CYGWIN=" | ||
551 | read -e _cygwin | ||
552 | fi | ||
553 | [ -z "${_cygwin}" ] && _cygwin="ntsec" | ||
554 | if [ $_nt2003 -gt 0 -a "${sshd_server_in_sam}" = "yes" ] | ||
555 | then | ||
556 | if cygrunsrv -I sshd -d "CYGWIN sshd" -p /usr/sbin/sshd -a -D -u sshd_server -w "${_password}" -e "CYGWIN=${_cygwin}" | ||
557 | then | ||
558 | echo | ||
559 | echo "The service has been installed under sshd_server account." | ||
560 | echo "To start the service, call \`net start sshd' or \`cygrunsrv -S sshd'." | ||
561 | fi | ||
562 | else | ||
563 | if cygrunsrv -I sshd -d "CYGWIN sshd" -p /usr/sbin/sshd -a -D -e "CYGWIN=${_cygwin}" | ||
564 | then | ||
565 | echo | ||
566 | echo "The service has been installed under LocalSystem account." | ||
567 | echo "To start the service, call \`net start sshd' or \`cygrunsrv -S sshd'." | ||
568 | fi | ||
569 | fi | ||
570 | fi | ||
571 | # Now check if sshd has been successfully installed. This allows to | ||
572 | # set the ownership of the affected files correctly. | ||
573 | if cygrunsrv -Q sshd > /dev/null 2>&1 | ||
579 | then | 574 | then |
580 | chown system ${SYSCONFDIR}/ssh* | 575 | if [ $_nt2003 -gt 0 -a "${sshd_server_in_sam}" = "yes" ] |
581 | echo | 576 | then |
582 | echo "The service has been installed under LocalSystem account." | 577 | _user="sshd_server" |
578 | else | ||
579 | _user="system" | ||
580 | fi | ||
581 | chown "${_user}" ${SYSCONFDIR}/ssh* | ||
582 | chown "${_user}".544 ${LOCALSTATEDIR}/empty | ||
583 | if [ -f ${LOCALSTATEDIR}/log/sshd.log ] | ||
584 | then | ||
585 | chown "${_user}".544 ${LOCALSTATEDIR}/log/sshd.log | ||
586 | fi | ||
583 | fi | 587 | fi |
584 | fi | 588 | fi |
585 | fi | 589 | fi |
586 | 590 | ||
587 | if [ "${old_install}" = "1" ] | ||
588 | then | ||
589 | echo | ||
590 | echo "Note: If you have used sshd as service or from inetd, don't forget to" | ||
591 | echo " change the path to sshd.exe in the service entry or in inetd.conf." | ||
592 | fi | ||
593 | |||
594 | echo | 591 | echo |
595 | echo "Host configuration finished. Have fun!" | 592 | echo "Host configuration finished. Have fun!" |
diff --git a/contrib/cygwin/ssh-user-config b/contrib/cygwin/ssh-user-config index 4da113181..fe07ce360 100644 --- a/contrib/cygwin/ssh-user-config +++ b/contrib/cygwin/ssh-user-config | |||
@@ -1,9 +1,12 @@ | |||
1 | #!/bin/sh | 1 | #!/bin/sh |
2 | # | 2 | # |
3 | # ssh-user-config, Copyright 2000, Red Hat Inc. | 3 | # ssh-user-config, Copyright 2000, 2001, 2002, 2003, Red Hat Inc. |
4 | # | 4 | # |
5 | # This file is part of the Cygwin port of OpenSSH. | 5 | # This file is part of the Cygwin port of OpenSSH. |
6 | 6 | ||
7 | # Directory where the config files are stored | ||
8 | SYSCONFDIR=/etc | ||
9 | |||
7 | progname=$0 | 10 | progname=$0 |
8 | auto_answer="" | 11 | auto_answer="" |
9 | auto_passphrase="no" | 12 | auto_passphrase="no" |
@@ -33,6 +36,15 @@ request() | |||
33 | fi | 36 | fi |
34 | } | 37 | } |
35 | 38 | ||
39 | # Check if running on NT | ||
40 | _sys="`uname -a`" | ||
41 | _nt=`expr "$_sys" : "CYGWIN_NT"` | ||
42 | # If running on NT, check if running under 2003 Server or later | ||
43 | if [ $_nt -gt 0 ] | ||
44 | then | ||
45 | _nt2003=`uname | awk -F- '{print ( $2 >= 5.2 ) ? 1 : 0;}'` | ||
46 | fi | ||
47 | |||
36 | # Check options | 48 | # Check options |
37 | 49 | ||
38 | while : | 50 | while : |
@@ -84,27 +96,27 @@ done | |||
84 | 96 | ||
85 | # Ask user if user identity should be generated | 97 | # Ask user if user identity should be generated |
86 | 98 | ||
87 | if [ ! -f /etc/passwd ] | 99 | if [ ! -f ${SYSCONFDIR}/passwd ] |
88 | then | 100 | then |
89 | echo '/etc/passwd is nonexistant. Please generate an /etc/passwd file' | 101 | echo "${SYSCONFDIR}/passwd is nonexistant. Please generate an ${SYSCONFDIR}/passwd file" |
90 | echo 'first using mkpasswd. Check if it contains an entry for you and' | 102 | echo 'first using mkpasswd. Check if it contains an entry for you and' |
91 | echo 'please care for the home directory in your entry as well.' | 103 | echo 'please care for the home directory in your entry as well.' |
92 | exit 1 | 104 | exit 1 |
93 | fi | 105 | fi |
94 | 106 | ||
95 | uid=`id -u` | 107 | uid=`id -u` |
96 | pwdhome=`awk -F: '{ if ( $3 == '${uid}' ) print $6; }' < /etc/passwd` | 108 | pwdhome=`awk -F: '{ if ( $3 == '${uid}' ) print $6; }' < ${SYSCONFDIR}/passwd` |
97 | 109 | ||
98 | if [ "X${pwdhome}" = "X" ] | 110 | if [ "X${pwdhome}" = "X" ] |
99 | then | 111 | then |
100 | echo 'There is no home directory set for you in /etc/passwd.' | 112 | echo "There is no home directory set for you in ${SYSCONFDIR}/passwd." |
101 | echo 'Setting $HOME is not sufficient!' | 113 | echo 'Setting $HOME is not sufficient!' |
102 | exit 1 | 114 | exit 1 |
103 | fi | 115 | fi |
104 | 116 | ||
105 | if [ ! -d "${pwdhome}" ] | 117 | if [ ! -d "${pwdhome}" ] |
106 | then | 118 | then |
107 | echo "${pwdhome} is set in /etc/passwd as your home directory" | 119 | echo "${pwdhome} is set in ${SYSCONFDIR}/passwd as your home directory" |
108 | echo 'but it is not a valid directory. Cannot create user identity files.' | 120 | echo 'but it is not a valid directory. Cannot create user identity files.' |
109 | exit 1 | 121 | exit 1 |
110 | fi | 122 | fi |
@@ -114,7 +126,7 @@ fi | |||
114 | if [ "X${pwdhome}" = "X/" ] | 126 | if [ "X${pwdhome}" = "X/" ] |
115 | then | 127 | then |
116 | # But first raise a warning! | 128 | # But first raise a warning! |
117 | echo 'Your home directory in /etc/passwd is set to root (/). This is not recommended!' | 129 | echo "Your home directory in ${SYSCONFDIR}/passwd is set to root (/). This is not recommended!" |
118 | if request "Would you like to proceed anyway?" | 130 | if request "Would you like to proceed anyway?" |
119 | then | 131 | then |
120 | pwdhome='' | 132 | pwdhome='' |
@@ -123,6 +135,17 @@ then | |||
123 | fi | 135 | fi |
124 | fi | 136 | fi |
125 | 137 | ||
138 | if [ -d "${pwdhome}" -a $_nt -gt 0 -a -n "`chmod -c g-w,o-w "${pwdhome}"`" ] | ||
139 | then | ||
140 | echo | ||
141 | echo 'WARNING: group and other have been revoked write permission to your home' | ||
142 | echo " directory ${pwdhome}." | ||
143 | echo ' This is required by OpenSSH to allow public key authentication using' | ||
144 | echo ' the key files stored in your .ssh subdirectory.' | ||
145 | echo ' Revert this change ONLY if you know what you are doing!' | ||
146 | echo | ||
147 | fi | ||
148 | |||
126 | if [ -e "${pwdhome}/.ssh" -a ! -d "${pwdhome}/.ssh" ] | 149 | if [ -e "${pwdhome}/.ssh" -a ! -d "${pwdhome}/.ssh" ] |
127 | then | 150 | then |
128 | echo "${pwdhome}/.ssh is existant but not a directory. Cannot create user identity files." | 151 | echo "${pwdhome}/.ssh is existant but not a directory. Cannot create user identity files." |
@@ -139,6 +162,21 @@ then | |||
139 | fi | 162 | fi |
140 | fi | 163 | fi |
141 | 164 | ||
165 | if [ $_nt -gt 0 ] | ||
166 | then | ||
167 | _user="system" | ||
168 | if [ $_nt2003 -gt 0 ] | ||
169 | then | ||
170 | grep -q '^sshd_server:' ${SYSCONFDIR}/passwd && _user="sshd_server" | ||
171 | fi | ||
172 | if ! setfacl -m "u::rwx,u:${_user}:r--,g::---,o::---" "${pwdhome}/.ssh" | ||
173 | then | ||
174 | echo "${pwdhome}/.ssh couldn't be given the correct permissions." | ||
175 | echo "Please try to solve this problem first." | ||
176 | exit 1 | ||
177 | fi | ||
178 | fi | ||
179 | |||
142 | if [ ! -f "${pwdhome}/.ssh/identity" ] | 180 | if [ ! -f "${pwdhome}/.ssh/identity" ] |
143 | then | 181 | then |
144 | if request "Shall I create an SSH1 RSA identity file for you?" | 182 | if request "Shall I create an SSH1 RSA identity file for you?" |
@@ -196,5 +234,17 @@ then | |||
196 | fi | 234 | fi |
197 | fi | 235 | fi |
198 | 236 | ||
237 | if [ $_nt -gt 0 -a -e "${pwdhome}/.ssh/authorized_keys" ] | ||
238 | then | ||
239 | if ! setfacl -m "u::rw-,u:${_user}:r--,g::---,o::---" "${pwdhome}/.ssh/authorized_keys" | ||
240 | then | ||
241 | echo | ||
242 | echo "WARNING: Setting correct permissions to ${pwdhome}/.ssh/authorized_keys" | ||
243 | echo "failed. Please care for the correct permissions. The minimum requirement" | ||
244 | echo "is, the owner and ${_user} both need read permissions." | ||
245 | echo | ||
246 | fi | ||
247 | fi | ||
248 | |||
199 | echo | 249 | echo |
200 | echo "Configuration finished. Have fun!" | 250 | echo "Configuration finished. Have fun!" |
diff --git a/contrib/findssl.sh b/contrib/findssl.sh index 87a4abce2..0c08d4a18 100644 --- a/contrib/findssl.sh +++ b/contrib/findssl.sh | |||
@@ -9,24 +9,24 @@ | |||
9 | # Written by Darren Tucker (dtucker at zip dot com dot au) | 9 | # Written by Darren Tucker (dtucker at zip dot com dot au) |
10 | # This file is placed in the public domain. | 10 | # This file is placed in the public domain. |
11 | # | 11 | # |
12 | # $Id: findssl.sh,v 1.1 2003/06/24 10:22:10 dtucker Exp $ | 12 | # $Id: findssl.sh,v 1.2 2003/11/21 12:48:56 djm Exp $ |
13 | # 2002-07-27: Initial release. | 13 | # 2002-07-27: Initial release. |
14 | # 2002-08-04: Added public domain notice. | 14 | # 2002-08-04: Added public domain notice. |
15 | # 2003-06-24: Incorporated readme, set library paths. First cvs version. | 15 | # 2003-06-24: Incorporated readme, set library paths. First cvs version. |
16 | # | 16 | # |
17 | # "OpenSSL headers do not match your library" are usually caused by | 17 | # "OpenSSL headers do not match your library" are usually caused by |
18 | # OpenSSH's configure picking up an older version of OpenSSL headers | 18 | # OpenSSH's configure picking up an older version of OpenSSL headers |
19 | # or libraries. You can use the following # procedure to help identify | 19 | # or libraries. You can use the following # procedure to help identify |
20 | # the cause. | 20 | # the cause. |
21 | # | 21 | # |
22 | # The output of configure will tell you the versions of the OpenSSL | 22 | # The output of configure will tell you the versions of the OpenSSL |
23 | # headers and libraries that were picked up, for example: | 23 | # headers and libraries that were picked up, for example: |
24 | # | 24 | # |
25 | # checking OpenSSL header version... 90604f (OpenSSL 0.9.6d 9 May 2002) | 25 | # checking OpenSSL header version... 90604f (OpenSSL 0.9.6d 9 May 2002) |
26 | # checking OpenSSL library version... 90602f (OpenSSL 0.9.6b [engine] 9 Jul 2001) | 26 | # checking OpenSSL library version... 90602f (OpenSSL 0.9.6b [engine] 9 Jul 2001) |
27 | # checking whether OpenSSL's headers match the library... no | 27 | # checking whether OpenSSL's headers match the library... no |
28 | # configure: error: Your OpenSSL headers do not match your library | 28 | # configure: error: Your OpenSSL headers do not match your library |
29 | # | 29 | # |
30 | # Now run findssl.sh. This should identify the headers and libraries | 30 | # Now run findssl.sh. This should identify the headers and libraries |
31 | # present and their versions. You should be able to identify the | 31 | # present and their versions. You should be able to identify the |
32 | # libraries and headers used and adjust your CFLAGS or remove incorrect | 32 | # libraries and headers used and adjust your CFLAGS or remove incorrect |
@@ -37,7 +37,7 @@ | |||
37 | # Searching for OpenSSL header files. | 37 | # Searching for OpenSSL header files. |
38 | # 0x0090604fL /usr/include/openssl/opensslv.h | 38 | # 0x0090604fL /usr/include/openssl/opensslv.h |
39 | # 0x0090604fL /usr/local/ssl/include/openssl/opensslv.h | 39 | # 0x0090604fL /usr/local/ssl/include/openssl/opensslv.h |
40 | # | 40 | # |
41 | # Searching for OpenSSL shared library files. | 41 | # Searching for OpenSSL shared library files. |
42 | # 0x0090602fL /lib/libcrypto.so.0.9.6b | 42 | # 0x0090602fL /lib/libcrypto.so.0.9.6b |
43 | # 0x0090602fL /lib/libcrypto.so.2 | 43 | # 0x0090602fL /lib/libcrypto.so.2 |
@@ -46,11 +46,11 @@ | |||
46 | # 0x0090581fL /usr/lib/libcrypto.so.0.9.5a | 46 | # 0x0090581fL /usr/lib/libcrypto.so.0.9.5a |
47 | # 0x0090600fL /usr/lib/libcrypto.so.0.9.6 | 47 | # 0x0090600fL /usr/lib/libcrypto.so.0.9.6 |
48 | # 0x0090600fL /usr/lib/libcrypto.so.1 | 48 | # 0x0090600fL /usr/lib/libcrypto.so.1 |
49 | # | 49 | # |
50 | # Searching for OpenSSL static library files. | 50 | # Searching for OpenSSL static library files. |
51 | # 0x0090602fL /usr/lib/libcrypto.a | 51 | # 0x0090602fL /usr/lib/libcrypto.a |
52 | # 0x0090604fL /usr/local/ssl/lib/libcrypto.a | 52 | # 0x0090604fL /usr/local/ssl/lib/libcrypto.a |
53 | # | 53 | # |
54 | # In this example, I gave configure no extra flags, so it's picking up | 54 | # In this example, I gave configure no extra flags, so it's picking up |
55 | # the OpenSSL header from /usr/include/openssl (90604f) and the library | 55 | # the OpenSSL header from /usr/include/openssl (90604f) and the library |
56 | # from /usr/lib/ (90602f). | 56 | # from /usr/lib/ (90602f). |
diff --git a/contrib/gnome-ssh-askpass1.c b/contrib/gnome-ssh-askpass1.c index b6b342b84..4d51032d1 100644 --- a/contrib/gnome-ssh-askpass1.c +++ b/contrib/gnome-ssh-askpass1.c | |||
@@ -23,14 +23,14 @@ | |||
23 | */ | 23 | */ |
24 | 24 | ||
25 | /* | 25 | /* |
26 | * This is a simple GNOME SSH passphrase grabber. To use it, set the | 26 | * This is a simple GNOME SSH passphrase grabber. To use it, set the |
27 | * environment variable SSH_ASKPASS to point to the location of | 27 | * environment variable SSH_ASKPASS to point to the location of |
28 | * gnome-ssh-askpass before calling "ssh-add < /dev/null". | 28 | * gnome-ssh-askpass before calling "ssh-add < /dev/null". |
29 | * | 29 | * |
30 | * There is only two run-time options: if you set the environment variable | 30 | * There is only two run-time options: if you set the environment variable |
31 | * "GNOME_SSH_ASKPASS_GRAB_SERVER=true" then gnome-ssh-askpass will grab | 31 | * "GNOME_SSH_ASKPASS_GRAB_SERVER=true" then gnome-ssh-askpass will grab |
32 | * the X server. If you set "GNOME_SSH_ASKPASS_GRAB_POINTER=true", then the | 32 | * the X server. If you set "GNOME_SSH_ASKPASS_GRAB_POINTER=true", then the |
33 | * pointer will be grabbed too. These may have some benefit to security if | 33 | * pointer will be grabbed too. These may have some benefit to security if |
34 | * you don't trust your X server. We grab the keyboard always. | 34 | * you don't trust your X server. We grab the keyboard always. |
35 | */ | 35 | */ |
36 | 36 | ||
@@ -87,7 +87,7 @@ passphrase_dialog(char *message) | |||
87 | } | 87 | } |
88 | 88 | ||
89 | entry = gtk_entry_new(); | 89 | entry = gtk_entry_new(); |
90 | gtk_box_pack_start(GTK_BOX(GNOME_DIALOG(dialog)->vbox), entry, FALSE, | 90 | gtk_box_pack_start(GTK_BOX(GNOME_DIALOG(dialog)->vbox), entry, FALSE, |
91 | FALSE, 0); | 91 | FALSE, 0); |
92 | gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE); | 92 | gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE); |
93 | gtk_widget_grab_focus(entry); | 93 | gtk_widget_grab_focus(entry); |
@@ -105,7 +105,7 @@ passphrase_dialog(char *message) | |||
105 | /* Grab focus */ | 105 | /* Grab focus */ |
106 | if (grab_server) | 106 | if (grab_server) |
107 | XGrabServer(GDK_DISPLAY()); | 107 | XGrabServer(GDK_DISPLAY()); |
108 | if (grab_pointer && gdk_pointer_grab(dialog->window, TRUE, 0, | 108 | if (grab_pointer && gdk_pointer_grab(dialog->window, TRUE, 0, |
109 | NULL, NULL, GDK_CURRENT_TIME)) | 109 | NULL, NULL, GDK_CURRENT_TIME)) |
110 | goto nograb; | 110 | goto nograb; |
111 | if (gdk_keyboard_grab(dialog->window, FALSE, GDK_CURRENT_TIME)) | 111 | if (gdk_keyboard_grab(dialog->window, FALSE, GDK_CURRENT_TIME)) |
diff --git a/contrib/gnome-ssh-askpass2.c b/contrib/gnome-ssh-askpass2.c index 9e8eaf920..0ce8daec9 100644 --- a/contrib/gnome-ssh-askpass2.c +++ b/contrib/gnome-ssh-askpass2.c | |||
@@ -25,14 +25,14 @@ | |||
25 | /* GTK2 support by Nalin Dahyabhai <nalin@redhat.com> */ | 25 | /* GTK2 support by Nalin Dahyabhai <nalin@redhat.com> */ |
26 | 26 | ||
27 | /* | 27 | /* |
28 | * This is a simple GNOME SSH passphrase grabber. To use it, set the | 28 | * This is a simple GNOME SSH passphrase grabber. To use it, set the |
29 | * environment variable SSH_ASKPASS to point to the location of | 29 | * environment variable SSH_ASKPASS to point to the location of |
30 | * gnome-ssh-askpass before calling "ssh-add < /dev/null". | 30 | * gnome-ssh-askpass before calling "ssh-add < /dev/null". |
31 | * | 31 | * |
32 | * There is only two run-time options: if you set the environment variable | 32 | * There is only two run-time options: if you set the environment variable |
33 | * "GNOME_SSH_ASKPASS_GRAB_SERVER=true" then gnome-ssh-askpass will grab | 33 | * "GNOME_SSH_ASKPASS_GRAB_SERVER=true" then gnome-ssh-askpass will grab |
34 | * the X server. If you set "GNOME_SSH_ASKPASS_GRAB_POINTER=true", then the | 34 | * the X server. If you set "GNOME_SSH_ASKPASS_GRAB_POINTER=true", then the |
35 | * pointer will be grabbed too. These may have some benefit to security if | 35 | * pointer will be grabbed too. These may have some benefit to security if |
36 | * you don't trust your X server. We grab the keyboard always. | 36 | * you don't trust your X server. We grab the keyboard always. |
37 | */ | 37 | */ |
38 | 38 | ||
@@ -103,7 +103,7 @@ passphrase_dialog(char *message) | |||
103 | message); | 103 | message); |
104 | 104 | ||
105 | entry = gtk_entry_new(); | 105 | entry = gtk_entry_new(); |
106 | gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), entry, FALSE, | 106 | gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), entry, FALSE, |
107 | FALSE, 0); | 107 | FALSE, 0); |
108 | gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE); | 108 | gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE); |
109 | gtk_widget_grab_focus(entry); | 109 | gtk_widget_grab_focus(entry); |
@@ -124,7 +124,7 @@ passphrase_dialog(char *message) | |||
124 | if (grab_pointer) { | 124 | if (grab_pointer) { |
125 | for(;;) { | 125 | for(;;) { |
126 | status = gdk_pointer_grab( | 126 | status = gdk_pointer_grab( |
127 | (GTK_WIDGET(dialog))->window, TRUE, 0, NULL, | 127 | (GTK_WIDGET(dialog))->window, TRUE, 0, NULL, |
128 | NULL, GDK_CURRENT_TIME); | 128 | NULL, GDK_CURRENT_TIME); |
129 | if (status == GDK_GRAB_SUCCESS) | 129 | if (status == GDK_GRAB_SUCCESS) |
130 | break; | 130 | break; |
diff --git a/contrib/redhat/openssh.spec b/contrib/redhat/openssh.spec index 20ccb6fac..05750e3a9 100644 --- a/contrib/redhat/openssh.spec +++ b/contrib/redhat/openssh.spec | |||
@@ -1,4 +1,4 @@ | |||
1 | %define ver 3.7.1p2 | 1 | %define ver 3.8p1 |
2 | %define rel 1 | 2 | %define rel 1 |
3 | 3 | ||
4 | # OpenSSH privilege separation requires a user & group ID | 4 | # OpenSSH privilege separation requires a user & group ID |
@@ -34,6 +34,11 @@ | |||
34 | %{?skip_x11_askpass:%define no_x11_askpass 1} | 34 | %{?skip_x11_askpass:%define no_x11_askpass 1} |
35 | %{?skip_gnome_askpass:%define no_gnome_askpass 1} | 35 | %{?skip_gnome_askpass:%define no_gnome_askpass 1} |
36 | 36 | ||
37 | # Add option to build without GTK2 for older platforms with only GTK+. | ||
38 | # RedHat <= 7.2 and Red Hat Advanced Server 2.1 are examples. | ||
39 | # rpm -ba|--rebuild --define 'no_gtk2 1' | ||
40 | %{?no_gtk2:%define gtk2 0} | ||
41 | |||
37 | # Is this a build for RHL 6.x or earlier? | 42 | # Is this a build for RHL 6.x or earlier? |
38 | %{?build_6x:%define build6x 1} | 43 | %{?build_6x:%define build6x 1} |
39 | 44 | ||
@@ -176,6 +181,11 @@ environment. | |||
176 | CFLAGS="$RPM_OPT_FLAGS -Os"; export CFLAGS | 181 | CFLAGS="$RPM_OPT_FLAGS -Os"; export CFLAGS |
177 | %endif | 182 | %endif |
178 | 183 | ||
184 | %if %{kerberos5} | ||
185 | K5DIR=`rpm -ql krb5-devel | grep include/krb5.h | sed 's,\/include\/krb5.h,,'` | ||
186 | echo K5DIR=$K5DIR | ||
187 | %endif | ||
188 | |||
179 | %configure \ | 189 | %configure \ |
180 | --sysconfdir=%{_sysconfdir}/ssh \ | 190 | --sysconfdir=%{_sysconfdir}/ssh \ |
181 | --libexecdir=%{_libexecdir}/openssh \ | 191 | --libexecdir=%{_libexecdir}/openssh \ |
@@ -185,16 +195,17 @@ CFLAGS="$RPM_OPT_FLAGS -Os"; export CFLAGS | |||
185 | --with-default-path=/usr/local/bin:/bin:/usr/bin \ | 195 | --with-default-path=/usr/local/bin:/bin:/usr/bin \ |
186 | --with-superuser-path=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin \ | 196 | --with-superuser-path=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin \ |
187 | --with-privsep-path=%{_var}/empty/sshd \ | 197 | --with-privsep-path=%{_var}/empty/sshd \ |
198 | --with-md5-passwords \ | ||
188 | %if %{scard} | 199 | %if %{scard} |
189 | --with-smartcard \ | 200 | --with-smartcard \ |
190 | %endif | 201 | %endif |
191 | %if %{rescue} | 202 | %if %{rescue} |
192 | --without-pam --with-md5-passwords \ | 203 | --without-pam \ |
193 | %else | 204 | %else |
194 | --with-pam \ | 205 | --with-pam \ |
195 | %endif | 206 | %endif |
196 | %if %{kerberos5} | 207 | %if %{kerberos5} |
197 | --with-kerberos5=/usr/kerberos \ | 208 | --with-kerberos5=$K5DIR \ |
198 | %endif | 209 | %endif |
199 | 210 | ||
200 | 211 | ||
@@ -392,7 +403,7 @@ fi | |||
392 | 403 | ||
393 | %changelog | 404 | %changelog |
394 | * Mon Jun 2 2003 Damien Miller <djm@mindrot.org> | 405 | * Mon Jun 2 2003 Damien Miller <djm@mindrot.org> |
395 | - Remove noip6 option. This may be controlled at run-time in client config | 406 | - Remove noip6 option. This may be controlled at run-time in client config |
396 | file using new AddressFamily directive | 407 | file using new AddressFamily directive |
397 | 408 | ||
398 | * Mon May 12 2003 Damien Miller <djm@mindrot.org> | 409 | * Mon May 12 2003 Damien Miller <djm@mindrot.org> |
@@ -552,7 +563,7 @@ fi | |||
552 | 563 | ||
553 | * Sun Apr 8 2001 Preston Brown <pbrown@redhat.com> | 564 | * Sun Apr 8 2001 Preston Brown <pbrown@redhat.com> |
554 | - remove explicit openssl requirement, fixes builddistro issue | 565 | - remove explicit openssl requirement, fixes builddistro issue |
555 | - make initscript stop() function wait until sshd really dead to avoid | 566 | - make initscript stop() function wait until sshd really dead to avoid |
556 | races in condrestart | 567 | races in condrestart |
557 | 568 | ||
558 | * Mon Apr 2 2001 Nalin Dahyabhai <nalin@redhat.com> | 569 | * Mon Apr 2 2001 Nalin Dahyabhai <nalin@redhat.com> |
diff --git a/contrib/solaris/README b/contrib/solaris/README index 9b0a46e29..eb4c590f4 100755 --- a/contrib/solaris/README +++ b/contrib/solaris/README | |||
@@ -17,7 +17,7 @@ Directions: | |||
17 | 17 | ||
18 | If all goes well you should have a solaris package ready to be installed. | 18 | If all goes well you should have a solaris package ready to be installed. |
19 | 19 | ||
20 | If you have any problems with this script please post them to | 20 | If you have any problems with this script please post them to |
21 | openssh-unix-dev@mindrot.org and I will try to assist you as best as I can. | 21 | openssh-unix-dev@mindrot.org and I will try to assist you as best as I can. |
22 | 22 | ||
23 | - Ben Lindstrom | 23 | - Ben Lindstrom |
diff --git a/contrib/solaris/buildpkg.sh b/contrib/solaris/buildpkg.sh index c41b3f963..29d096306 100755 --- a/contrib/solaris/buildpkg.sh +++ b/contrib/solaris/buildpkg.sh | |||
@@ -5,7 +5,7 @@ | |||
5 | # The following code has been provide under Public Domain License. I really | 5 | # The following code has been provide under Public Domain License. I really |
6 | # don't care what you use it for. Just as long as you don't complain to me | 6 | # don't care what you use it for. Just as long as you don't complain to me |
7 | # nor my employer if you break it. - Ben Lindstrom (mouring@eviladmin.org) | 7 | # nor my employer if you break it. - Ben Lindstrom (mouring@eviladmin.org) |
8 | # | 8 | # |
9 | umask 022 | 9 | umask 022 |
10 | # | 10 | # |
11 | # Options for building the package | 11 | # Options for building the package |
@@ -13,7 +13,7 @@ umask 022 | |||
13 | # | 13 | # |
14 | # uncommenting TEST_DIR and using | 14 | # uncommenting TEST_DIR and using |
15 | # configure --prefix=/var/tmp --with-privsep-path=/var/tmp/empty | 15 | # configure --prefix=/var/tmp --with-privsep-path=/var/tmp/empty |
16 | # and | 16 | # and |
17 | # PKGNAME=tOpenSSH should allow testing a package without interfering | 17 | # PKGNAME=tOpenSSH should allow testing a package without interfering |
18 | # with a real OpenSSH package on a system. This is not needed on systems | 18 | # with a real OpenSSH package on a system. This is not needed on systems |
19 | # that support the -R option to pkgadd. | 19 | # that support the -R option to pkgadd. |
@@ -23,9 +23,10 @@ SYSVINIT_NAME=opensshd | |||
23 | MAKE=${MAKE:="make"} | 23 | MAKE=${MAKE:="make"} |
24 | SSHDUID=67 # Default privsep uid | 24 | SSHDUID=67 # Default privsep uid |
25 | SSHDGID=67 # Default privsep gid | 25 | SSHDGID=67 # Default privsep gid |
26 | # uncomment these next two as needed | 26 | # uncomment these next three as needed |
27 | #PERMIT_ROOT_LOGIN=no | 27 | #PERMIT_ROOT_LOGIN=no |
28 | #X11_FORWARDING=yes | 28 | #X11_FORWARDING=yes |
29 | #USR_LOCAL_IS_SYMLINK=yes | ||
29 | # list of system directories we do NOT want to change owner/group/perms | 30 | # list of system directories we do NOT want to change owner/group/perms |
30 | # when installing our package | 31 | # when installing our package |
31 | SYSTEM_DIR="/etc \ | 32 | SYSTEM_DIR="/etc \ |
@@ -81,7 +82,7 @@ export PATH | |||
81 | # we will look for config.local to override the above options | 82 | # we will look for config.local to override the above options |
82 | [ -s ./config.local ] && . ./config.local | 83 | [ -s ./config.local ] && . ./config.local |
83 | 84 | ||
84 | ## Start by faking root install | 85 | ## Start by faking root install |
85 | echo "Faking root install..." | 86 | echo "Faking root install..." |
86 | START=`pwd` | 87 | START=`pwd` |
87 | OPENSSHD_IN=`dirname $0`/opensshd.in | 88 | OPENSSHD_IN=`dirname $0`/opensshd.in |
@@ -98,20 +99,20 @@ fi | |||
98 | ## Fill in some details, like prefix and sysconfdir | 99 | ## Fill in some details, like prefix and sysconfdir |
99 | for confvar in prefix exec_prefix bindir sbindir libexecdir datadir mandir sysconfdir piddir | 100 | for confvar in prefix exec_prefix bindir sbindir libexecdir datadir mandir sysconfdir piddir |
100 | do | 101 | do |
101 | eval $confvar=`grep "^$confvar=" Makefile | cut -d = -f 2` | 102 | eval $confvar=`grep "^$confvar=" Makefile | cut -d = -f 2` |
102 | done | 103 | done |
103 | 104 | ||
104 | 105 | ||
105 | ## Collect value of privsep user | 106 | ## Collect value of privsep user |
106 | for confvar in SSH_PRIVSEP_USER | 107 | for confvar in SSH_PRIVSEP_USER |
107 | do | 108 | do |
108 | eval $confvar=`awk '/#define[ \t]'$confvar'/{print $3}' config.h` | 109 | eval $confvar=`awk '/#define[ \t]'$confvar'/{print $3}' config.h` |
109 | done | 110 | done |
110 | 111 | ||
111 | ## Set privsep defaults if not defined | 112 | ## Set privsep defaults if not defined |
112 | if [ -z "$SSH_PRIVSEP_USER" ] | 113 | if [ -z "$SSH_PRIVSEP_USER" ] |
113 | then | 114 | then |
114 | SSH_PRIVSEP_USER=sshd | 115 | SSH_PRIVSEP_USER=sshd |
115 | fi | 116 | fi |
116 | 117 | ||
117 | ## Extract common info requires for the 'info' part of the package. | 118 | ## Extract common info requires for the 'info' part of the package. |
@@ -243,16 +244,16 @@ fi | |||
243 | 244 | ||
244 | if egrep '^[ \t]*UsePrivilegeSeparation[ \t]+no' \${PKG_INSTALL_ROOT}/$sysconfdir/sshd_config >/dev/null | 245 | if egrep '^[ \t]*UsePrivilegeSeparation[ \t]+no' \${PKG_INSTALL_ROOT}/$sysconfdir/sshd_config >/dev/null |
245 | then | 246 | then |
246 | echo "UsePrivilegeSeparation disabled in config, not creating PrivSep user" | 247 | echo "UsePrivilegeSeparation disabled in config, not creating PrivSep user" |
247 | echo "or group." | 248 | echo "or group." |
248 | else | 249 | else |
249 | echo "UsePrivilegeSeparation enabled in config (or defaulting to on)." | 250 | echo "UsePrivilegeSeparation enabled in config (or defaulting to on)." |
250 | 251 | ||
251 | # create group if required | 252 | # create group if required |
252 | if cut -f1 -d: \${PKG_INSTALL_ROOT}/etc/group | egrep '^'$SSH_PRIVSEP_USER'\$' >/dev/null | 253 | if cut -f1 -d: \${PKG_INSTALL_ROOT}/etc/group | egrep '^'$SSH_PRIVSEP_USER'\$' >/dev/null |
253 | then | 254 | then |
254 | echo "PrivSep group $SSH_PRIVSEP_USER already exists." | 255 | echo "PrivSep group $SSH_PRIVSEP_USER already exists." |
255 | else | 256 | else |
256 | # Use gid of 67 if possible | 257 | # Use gid of 67 if possible |
257 | if cut -f3 -d: \${PKG_INSTALL_ROOT}/etc/group | egrep '^'$SSHDGID'\$' >/dev/null | 258 | if cut -f3 -d: \${PKG_INSTALL_ROOT}/etc/group | egrep '^'$SSHDGID'\$' >/dev/null |
258 | then | 259 | then |
@@ -260,15 +261,15 @@ else | |||
260 | else | 261 | else |
261 | sshdgid="-g $SSHDGID" | 262 | sshdgid="-g $SSHDGID" |
262 | fi | 263 | fi |
263 | echo "Creating PrivSep group $SSH_PRIVSEP_USER." | 264 | echo "Creating PrivSep group $SSH_PRIVSEP_USER." |
264 | \$chroot /usr/sbin/groupadd \$sshdgid $SSH_PRIVSEP_USER | 265 | \$chroot /usr/sbin/groupadd \$sshdgid $SSH_PRIVSEP_USER |
265 | fi | 266 | fi |
266 | 267 | ||
267 | # Create user if required | 268 | # Create user if required |
268 | if cut -f1 -d: \${PKG_INSTALL_ROOT}/etc/passwd | egrep '^'$SSH_PRIVSEP_USER'\$' >/dev/null | 269 | if cut -f1 -d: \${PKG_INSTALL_ROOT}/etc/passwd | egrep '^'$SSH_PRIVSEP_USER'\$' >/dev/null |
269 | then | 270 | then |
270 | echo "PrivSep user $SSH_PRIVSEP_USER already exists." | 271 | echo "PrivSep user $SSH_PRIVSEP_USER already exists." |
271 | else | 272 | else |
272 | # Use uid of 67 if possible | 273 | # Use uid of 67 if possible |
273 | if cut -f3 -d: \${PKG_INSTALL_ROOT}/etc/passwd | egrep '^'$SSHDGID'\$' >/dev/null | 274 | if cut -f3 -d: \${PKG_INSTALL_ROOT}/etc/passwd | egrep '^'$SSHDGID'\$' >/dev/null |
274 | then | 275 | then |
@@ -276,10 +277,10 @@ else | |||
276 | else | 277 | else |
277 | sshduid="-u $SSHDUID" | 278 | sshduid="-u $SSHDUID" |
278 | fi | 279 | fi |
279 | echo "Creating PrivSep user $SSH_PRIVSEP_USER." | 280 | echo "Creating PrivSep user $SSH_PRIVSEP_USER." |
280 | \$chroot /usr/sbin/useradd -c 'SSHD PrivSep User' -s /bin/false -g $SSH_PRIVSEP_USER \$sshduid $SSH_PRIVSEP_USER | 281 | \$chroot /usr/sbin/useradd -c 'SSHD PrivSep User' -s /bin/false -g $SSH_PRIVSEP_USER \$sshduid $SSH_PRIVSEP_USER |
281 | \$chroot /usr/bin/passwd -l $SSH_PRIVSEP_USER | 282 | \$chroot /usr/bin/passwd -l $SSH_PRIVSEP_USER |
282 | fi | 283 | fi |
283 | fi | 284 | fi |
284 | 285 | ||
285 | [ "\${POST_INS_START}" = "yes" ] && ${TEST_DIR}/etc/init.d/${SYSVINIT_NAME} start | 286 | [ "\${POST_INS_START}" = "yes" ] && ${TEST_DIR}/etc/init.d/${SYSVINIT_NAME} start |
@@ -358,18 +359,24 @@ cat >mk-proto.awk << _EOF | |||
358 | BEGIN { print "i pkginfo"; print "i preinstall"; \\ | 359 | BEGIN { print "i pkginfo"; print "i preinstall"; \\ |
359 | print "i postinstall"; print "i preremove"; \\ | 360 | print "i postinstall"; print "i preremove"; \\ |
360 | print "i request"; print "i space"; \\ | 361 | print "i request"; print "i space"; \\ |
361 | split("$SYSTEM_DIR",sys_files); } | 362 | split("$SYSTEM_DIR",sys_files); } |
362 | { | 363 | { |
363 | for (dir in sys_files) { if ( \$3 != sys_files[dir] ) | 364 | for (dir in sys_files) { if ( \$3 != sys_files[dir] ) |
364 | { \$5="root"; \$6="sys"; } | 365 | { \$5="root"; \$6="sys"; } |
365 | else | 366 | else |
366 | { \$4="?"; \$5="?"; \$6="?"; break;} | 367 | { \$4="?"; \$5="?"; \$6="?"; break;} |
367 | } } | 368 | } } |
368 | { print; } | 369 | { print; } |
369 | _EOF | 370 | _EOF |
370 | find . | egrep -v "prototype|pkginfo|mk-proto.awk" | sort | \ | 371 | find . | egrep -v "prototype|pkginfo|mk-proto.awk" | sort | \ |
371 | pkgproto $PROTO_ARGS | nawk -f mk-proto.awk > prototype | 372 | pkgproto $PROTO_ARGS | nawk -f mk-proto.awk > prototype |
372 | 373 | ||
374 | # /usr/local is a symlink on some systems | ||
375 | [ "${USR_LOCAL_IS_SYMLINK}" = yes ] && { | ||
376 | grep -v "^d none /usr/local ? ? ?$" prototype > prototype.new | ||
377 | mv prototype.new prototype | ||
378 | } | ||
379 | |||
373 | ## Step back a directory and now build the package. | 380 | ## Step back a directory and now build the package. |
374 | echo "Building package.." | 381 | echo "Building package.." |
375 | cd .. | 382 | cd .. |
diff --git a/contrib/solaris/opensshd.in b/contrib/solaris/opensshd.in index 48b6c5702..50e18deea 100755 --- a/contrib/solaris/opensshd.in +++ b/contrib/solaris/opensshd.in | |||
@@ -22,24 +22,24 @@ HOST_KEY_RSA=$etcdir/ssh_host_rsa_key | |||
22 | 22 | ||
23 | checkkeys() { | 23 | checkkeys() { |
24 | if [ ! -f $HOST_KEY_RSA1 ]; then | 24 | if [ ! -f $HOST_KEY_RSA1 ]; then |
25 | ${SSH_KEYGEN} -t rsa1 -f ${HOST_KEY_RSA1} -N "" | 25 | ${SSH_KEYGEN} -t rsa1 -f ${HOST_KEY_RSA1} -N "" |
26 | fi | 26 | fi |
27 | if [ ! -f $HOST_KEY_DSA ]; then | 27 | if [ ! -f $HOST_KEY_DSA ]; then |
28 | ${SSH_KEYGEN} -t dsa -f ${HOST_KEY_DSA} -N "" | 28 | ${SSH_KEYGEN} -t dsa -f ${HOST_KEY_DSA} -N "" |
29 | fi | 29 | fi |
30 | if [ ! -f $HOST_KEY_RSA ]; then | 30 | if [ ! -f $HOST_KEY_RSA ]; then |
31 | ${SSH_KEYGEN} -t rsa -f ${HOST_KEY_RSA} -N "" | 31 | ${SSH_KEYGEN} -t rsa -f ${HOST_KEY_RSA} -N "" |
32 | fi | 32 | fi |
33 | } | 33 | } |
34 | 34 | ||
35 | stop_service() { | 35 | stop_service() { |
36 | if [ -r $PIDFILE -a ! -z ${PIDFILE} ]; then | 36 | if [ -r $PIDFILE -a ! -z ${PIDFILE} ]; then |
37 | PID=`${CAT} ${PIDFILE}` | 37 | PID=`${CAT} ${PIDFILE}` |
38 | fi | 38 | fi |
39 | if [ ${PID:=0} -gt 1 -a ! "X$PID" = "X " ]; then | 39 | if [ ${PID:=0} -gt 1 -a ! "X$PID" = "X " ]; then |
40 | ${KILL} ${PID} | 40 | ${KILL} ${PID} |
41 | else | 41 | else |
42 | echo "Unable to read PID file" | 42 | echo "Unable to read PID file" |
43 | fi | 43 | fi |
44 | } | 44 | } |
45 | 45 | ||
@@ -55,8 +55,8 @@ start_service() { | |||
55 | 55 | ||
56 | sshd_rc=$? | 56 | sshd_rc=$? |
57 | if [ $sshd_rc -ne 0 ]; then | 57 | if [ $sshd_rc -ne 0 ]; then |
58 | echo "$0: Error ${sshd_rc} starting ${SSHD}... bailing." | 58 | echo "$0: Error ${sshd_rc} starting ${SSHD}... bailing." |
59 | exit $sshd_rc | 59 | exit $sshd_rc |
60 | fi | 60 | fi |
61 | echo done. | 61 | echo done. |
62 | } | 62 | } |
diff --git a/contrib/ssh-copy-id b/contrib/ssh-copy-id index a1ad34a8d..a1c0a9234 100644 --- a/contrib/ssh-copy-id +++ b/contrib/ssh-copy-id | |||
@@ -38,7 +38,7 @@ if [ "$#" -lt 1 ] || [ "$1" = "-h" ] || [ "$1" = "--help" ]; then | |||
38 | exit 1 | 38 | exit 1 |
39 | fi | 39 | fi |
40 | 40 | ||
41 | { eval "$GET_ID" ; } | ssh $1 "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys" | 41 | { eval "$GET_ID" ; } | ssh $1 "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys" || exit 1 |
42 | 42 | ||
43 | cat <<EOF | 43 | cat <<EOF |
44 | Now try logging into the machine, with "ssh '$1'", and check in: | 44 | Now try logging into the machine, with "ssh '$1'", and check in: |
diff --git a/contrib/suse/openssh.spec b/contrib/suse/openssh.spec index 940bc4ade..7eb71adf4 100644 --- a/contrib/suse/openssh.spec +++ b/contrib/suse/openssh.spec | |||
@@ -1,6 +1,6 @@ | |||
1 | Summary: OpenSSH, a free Secure Shell (SSH) protocol implementation | 1 | Summary: OpenSSH, a free Secure Shell (SSH) protocol implementation |
2 | Name: openssh | 2 | Name: openssh |
3 | Version: 3.7.1p2 | 3 | Version: 3.8p1 |
4 | URL: http://www.openssh.com/ | 4 | URL: http://www.openssh.com/ |
5 | Release: 1 | 5 | Release: 1 |
6 | Source0: openssh-%{version}.tar.gz | 6 | Source0: openssh-%{version}.tar.gz |
@@ -30,7 +30,7 @@ two untrusted hosts over an insecure network. X11 connections and | |||
30 | arbitrary TCP/IP ports can also be forwarded over the secure channel. | 30 | arbitrary TCP/IP ports can also be forwarded over the secure channel. |
31 | 31 | ||
32 | OpenSSH is OpenBSD's rework of the last free version of SSH, bringing it | 32 | OpenSSH is OpenBSD's rework of the last free version of SSH, bringing it |
33 | up to date in terms of security and features, as well as removing all | 33 | up to date in terms of security and features, as well as removing all |
34 | patented algorithms to seperate libraries (OpenSSL). | 34 | patented algorithms to seperate libraries (OpenSSL). |
35 | 35 | ||
36 | This package includes all files necessary for both the OpenSSH | 36 | This package includes all files necessary for both the OpenSSH |
@@ -100,8 +100,8 @@ make | |||
100 | 100 | ||
101 | cd contrib | 101 | cd contrib |
102 | gcc -O -g `gnome-config --cflags gnome gnomeui` \ | 102 | gcc -O -g `gnome-config --cflags gnome gnomeui` \ |
103 | gnome-ssh-askpass.c -o gnome-ssh-askpass \ | 103 | gnome-ssh-askpass.c -o gnome-ssh-askpass \ |
104 | `gnome-config --libs gnome gnomeui` | 104 | `gnome-config --libs gnome gnomeui` |
105 | cd .. | 105 | cd .. |
106 | 106 | ||
107 | %install | 107 | %install |
@@ -140,34 +140,34 @@ else | |||
140 | echo " /var/adm/fillup-templates/rc.config.sshd" | 140 | echo " /var/adm/fillup-templates/rc.config.sshd" |
141 | fi | 141 | fi |
142 | if [ ! -f /etc/ssh/ssh_host_key -o ! -s /etc/ssh/ssh_host_key ]; then | 142 | if [ ! -f /etc/ssh/ssh_host_key -o ! -s /etc/ssh/ssh_host_key ]; then |
143 | echo "Generating SSH host key..." | 143 | echo "Generating SSH host key..." |
144 | /usr/bin/ssh-keygen -b 1024 -f /etc/ssh/ssh_host_key -N '' >&2 | 144 | /usr/bin/ssh-keygen -b 1024 -f /etc/ssh/ssh_host_key -N '' >&2 |
145 | fi | 145 | fi |
146 | if [ ! -f /etc/ssh/ssh_host_dsa_key -o ! -s /etc/ssh/ssh_host_dsa_key ]; then | 146 | if [ ! -f /etc/ssh/ssh_host_dsa_key -o ! -s /etc/ssh/ssh_host_dsa_key ]; then |
147 | echo "Generating SSH DSA host key..." | 147 | echo "Generating SSH DSA host key..." |
148 | /usr/bin/ssh-keygen -d -f /etc/ssh/ssh_host_dsa_key -N '' >&2 | 148 | /usr/bin/ssh-keygen -d -f /etc/ssh/ssh_host_dsa_key -N '' >&2 |
149 | fi | 149 | fi |
150 | if test -r /var/run/sshd.pid | 150 | if test -r /var/run/sshd.pid |
151 | then | 151 | then |
152 | echo "Restarting the running SSH daemon..." | 152 | echo "Restarting the running SSH daemon..." |
153 | /usr/sbin/rcsshd restart >&2 | 153 | /usr/sbin/rcsshd restart >&2 |
154 | fi | 154 | fi |
155 | 155 | ||
156 | %preun | 156 | %preun |
157 | if [ "$1" = 0 ] | 157 | if [ "$1" = 0 ] |
158 | then | 158 | then |
159 | echo "Stopping the SSH daemon..." | 159 | echo "Stopping the SSH daemon..." |
160 | /usr/sbin/rcsshd stop >&2 | 160 | /usr/sbin/rcsshd stop >&2 |
161 | echo "Removing SSH stop/start scripts from the rc directories..." | 161 | echo "Removing SSH stop/start scripts from the rc directories..." |
162 | rm /sbin/init.d/rc2.d/K20sshd | 162 | rm /sbin/init.d/rc2.d/K20sshd |
163 | rm /sbin/init.d/rc2.d/S20sshd | 163 | rm /sbin/init.d/rc2.d/S20sshd |
164 | rm /sbin/init.d/rc3.d/K20sshd | 164 | rm /sbin/init.d/rc3.d/K20sshd |
165 | rm /sbin/init.d/rc3.d/S20sshd | 165 | rm /sbin/init.d/rc3.d/S20sshd |
166 | fi | 166 | fi |
167 | 167 | ||
168 | %files | 168 | %files |
169 | %defattr(-,root,root) | 169 | %defattr(-,root,root) |
170 | %doc ChangeLog OVERVIEW README* | 170 | %doc ChangeLog OVERVIEW README* |
171 | %doc RFC.nroff TODO CREDITS LICENCE | 171 | %doc RFC.nroff TODO CREDITS LICENCE |
172 | %attr(0755,root,root) %dir /etc/ssh | 172 | %attr(0755,root,root) %dir /etc/ssh |
173 | %attr(0644,root,root) %config /etc/ssh/ssh_config | 173 | %attr(0644,root,root) %config /etc/ssh/ssh_config |
@@ -25,7 +25,7 @@ | |||
25 | #ifndef _DEFINES_H | 25 | #ifndef _DEFINES_H |
26 | #define _DEFINES_H | 26 | #define _DEFINES_H |
27 | 27 | ||
28 | /* $Id: defines.h,v 1.103 2003/09/16 01:52:19 dtucker Exp $ */ | 28 | /* $Id: defines.h,v 1.110 2004/02/10 02:01:14 dtucker Exp $ */ |
29 | 29 | ||
30 | 30 | ||
31 | /* Constants */ | 31 | /* Constants */ |
@@ -84,7 +84,7 @@ enum | |||
84 | # define S_ISDIR(mode) (((mode) & (_S_IFMT)) == (_S_IFDIR)) | 84 | # define S_ISDIR(mode) (((mode) & (_S_IFMT)) == (_S_IFDIR)) |
85 | #endif /* S_ISDIR */ | 85 | #endif /* S_ISDIR */ |
86 | 86 | ||
87 | #ifndef S_ISREG | 87 | #ifndef S_ISREG |
88 | # define S_ISREG(mode) (((mode) & (_S_IFMT)) == (_S_IFREG)) | 88 | # define S_ISREG(mode) (((mode) & (_S_IFMT)) == (_S_IFREG)) |
89 | #endif /* S_ISREG */ | 89 | #endif /* S_ISREG */ |
90 | 90 | ||
@@ -129,6 +129,10 @@ including rpc/rpc.h breaks Solaris 6 | |||
129 | #define INADDR_LOOPBACK ((u_long)0x7f000001) | 129 | #define INADDR_LOOPBACK ((u_long)0x7f000001) |
130 | #endif | 130 | #endif |
131 | 131 | ||
132 | #ifndef __unused | ||
133 | #define __unused | ||
134 | #endif | ||
135 | |||
132 | /* Types */ | 136 | /* Types */ |
133 | 137 | ||
134 | /* If sys/types.h does not supply intXX_t, supply them ourselves */ | 138 | /* If sys/types.h does not supply intXX_t, supply them ourselves */ |
@@ -240,6 +244,7 @@ typedef unsigned char u_char; | |||
240 | #ifndef HAVE_SIZE_T | 244 | #ifndef HAVE_SIZE_T |
241 | typedef unsigned int size_t; | 245 | typedef unsigned int size_t; |
242 | # define HAVE_SIZE_T | 246 | # define HAVE_SIZE_T |
247 | # define SIZE_T_MAX UINT_MAX | ||
243 | #endif /* HAVE_SIZE_T */ | 248 | #endif /* HAVE_SIZE_T */ |
244 | 249 | ||
245 | #ifndef HAVE_SSIZE_T | 250 | #ifndef HAVE_SSIZE_T |
@@ -529,6 +534,14 @@ struct winsize { | |||
529 | # define krb5_get_err_text(context,code) error_message(code) | 534 | # define krb5_get_err_text(context,code) error_message(code) |
530 | #endif | 535 | #endif |
531 | 536 | ||
537 | /* Maximum number of file descriptors available */ | ||
538 | #ifdef HAVE_SYSCONF | ||
539 | # define SSH_SYSFDMAX sysconf(_SC_OPEN_MAX) | ||
540 | #else | ||
541 | # define SSH_SYSFDMAX 10000 | ||
542 | #endif | ||
543 | |||
544 | |||
532 | /* | 545 | /* |
533 | * Define this to use pipes instead of socketpairs for communicating with the | 546 | * Define this to use pipes instead of socketpairs for communicating with the |
534 | * client program. Socketpairs do not seem to work on all systems. | 547 | * client program. Socketpairs do not seem to work on all systems. |
@@ -572,6 +585,9 @@ struct winsize { | |||
572 | # endif | 585 | # endif |
573 | #endif | 586 | #endif |
574 | 587 | ||
588 | #if defined(HAVE_SHADOW_H) && !defined(DISABLE_SHADOW) | ||
589 | # define USE_SHADOW | ||
590 | #endif | ||
575 | 591 | ||
576 | /* The login() library function in libutil is first choice */ | 592 | /* The login() library function in libutil is first choice */ |
577 | #if defined(HAVE_LOGIN) && !defined(DISABLE_LOGIN) | 593 | #if defined(HAVE_LOGIN) && !defined(DISABLE_LOGIN) |
@@ -23,7 +23,7 @@ | |||
23 | */ | 23 | */ |
24 | 24 | ||
25 | #include "includes.h" | 25 | #include "includes.h" |
26 | RCSID("$OpenBSD: dh.c,v 1.24 2003/04/08 20:21:28 itojun Exp $"); | 26 | RCSID("$OpenBSD: dh.c,v 1.26 2003/12/16 15:51:54 markus Exp $"); |
27 | 27 | ||
28 | #include "xmalloc.h" | 28 | #include "xmalloc.h" |
29 | 29 | ||
@@ -198,7 +198,7 @@ dh_gen_key(DH *dh, int need) | |||
198 | 198 | ||
199 | if (dh->p == NULL) | 199 | if (dh->p == NULL) |
200 | fatal("dh_gen_key: dh->p == NULL"); | 200 | fatal("dh_gen_key: dh->p == NULL"); |
201 | if (2*need >= BN_num_bits(dh->p)) | 201 | if (need > INT_MAX / 2 || 2 * need >= BN_num_bits(dh->p)) |
202 | fatal("dh_gen_key: group too small: %d (2*need %d)", | 202 | fatal("dh_gen_key: group too small: %d (2*need %d)", |
203 | BN_num_bits(dh->p), 2*need); | 203 | BN_num_bits(dh->p), 2*need); |
204 | do { | 204 | do { |
@@ -279,11 +279,9 @@ int | |||
279 | dh_estimate(int bits) | 279 | dh_estimate(int bits) |
280 | { | 280 | { |
281 | 281 | ||
282 | if (bits < 64) | 282 | if (bits <= 128) |
283 | return (512); /* O(2**63) */ | ||
284 | if (bits < 128) | ||
285 | return (1024); /* O(2**86) */ | 283 | return (1024); /* O(2**86) */ |
286 | if (bits < 192) | 284 | if (bits <= 192) |
287 | return (2048); /* O(2**116) */ | 285 | return (2048); /* O(2**116) */ |
288 | return (4096); /* O(2**156) */ | 286 | return (4096); /* O(2**156) */ |
289 | } | 287 | } |
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: dns.c,v 1.6 2003/06/11 10:18:47 jakob Exp $ */ | 1 | /* $OpenBSD: dns.c,v 1.9 2003/11/21 11:57:03 djm Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 2003 Wesley Griffin. All rights reserved. | 4 | * Copyright (c) 2003 Wesley Griffin. All rights reserved. |
@@ -28,7 +28,6 @@ | |||
28 | 28 | ||
29 | #include "includes.h" | 29 | #include "includes.h" |
30 | 30 | ||
31 | #ifdef DNS | ||
32 | #include <openssl/bn.h> | 31 | #include <openssl/bn.h> |
33 | #ifdef LWRES | 32 | #ifdef LWRES |
34 | #include <lwres/netdb.h> | 33 | #include <lwres/netdb.h> |
@@ -44,7 +43,7 @@ | |||
44 | #include "uuencode.h" | 43 | #include "uuencode.h" |
45 | 44 | ||
46 | extern char *__progname; | 45 | extern char *__progname; |
47 | RCSID("$OpenBSD: dns.c,v 1.6 2003/06/11 10:18:47 jakob Exp $"); | 46 | RCSID("$OpenBSD: dns.c,v 1.9 2003/11/21 11:57:03 djm Exp $"); |
48 | 47 | ||
49 | #ifndef LWRES | 48 | #ifndef LWRES |
50 | static const char *errset_text[] = { | 49 | static const char *errset_text[] = { |
@@ -84,7 +83,7 @@ dns_result_totext(unsigned int error) | |||
84 | */ | 83 | */ |
85 | static int | 84 | static int |
86 | dns_read_key(u_int8_t *algorithm, u_int8_t *digest_type, | 85 | dns_read_key(u_int8_t *algorithm, u_int8_t *digest_type, |
87 | u_char **digest, u_int *digest_len, Key *key) | 86 | u_char **digest, u_int *digest_len, const Key *key) |
88 | { | 87 | { |
89 | int success = 0; | 88 | int success = 0; |
90 | 89 | ||
@@ -146,16 +145,15 @@ dns_read_rdata(u_int8_t *algorithm, u_int8_t *digest_type, | |||
146 | 145 | ||
147 | /* | 146 | /* |
148 | * Verify the given hostname, address and host key using DNS. | 147 | * Verify the given hostname, address and host key using DNS. |
149 | * Returns 0 if key verifies or -1 if key does NOT verify | 148 | * Returns 0 if lookup succeeds, -1 otherwise |
150 | */ | 149 | */ |
151 | int | 150 | int |
152 | verify_host_key_dns(const char *hostname, struct sockaddr *address, | 151 | verify_host_key_dns(const char *hostname, struct sockaddr *address, |
153 | Key *hostkey) | 152 | const Key *hostkey, int *flags) |
154 | { | 153 | { |
155 | int counter; | 154 | int counter; |
156 | int result; | 155 | int result; |
157 | struct rrsetinfo *fingerprints = NULL; | 156 | struct rrsetinfo *fingerprints = NULL; |
158 | int failures = 0; | ||
159 | 157 | ||
160 | u_int8_t hostkey_algorithm; | 158 | u_int8_t hostkey_algorithm; |
161 | u_int8_t hostkey_digest_type; | 159 | u_int8_t hostkey_digest_type; |
@@ -167,6 +165,7 @@ verify_host_key_dns(const char *hostname, struct sockaddr *address, | |||
167 | u_char *dnskey_digest; | 165 | u_char *dnskey_digest; |
168 | u_int dnskey_digest_len; | 166 | u_int dnskey_digest_len; |
169 | 167 | ||
168 | *flags = 0; | ||
170 | 169 | ||
171 | debug3("verify_hostkey_dns"); | 170 | debug3("verify_hostkey_dns"); |
172 | if (hostkey == NULL) | 171 | if (hostkey == NULL) |
@@ -176,28 +175,29 @@ verify_host_key_dns(const char *hostname, struct sockaddr *address, | |||
176 | DNS_RDATATYPE_SSHFP, 0, &fingerprints); | 175 | DNS_RDATATYPE_SSHFP, 0, &fingerprints); |
177 | if (result) { | 176 | if (result) { |
178 | verbose("DNS lookup error: %s", dns_result_totext(result)); | 177 | verbose("DNS lookup error: %s", dns_result_totext(result)); |
179 | return DNS_VERIFY_ERROR; | 178 | return -1; |
180 | } | 179 | } |
181 | 180 | ||
182 | #ifdef DNSSEC | 181 | if (fingerprints->rri_flags & RRSET_VALIDATED) { |
183 | /* Only accept validated answers */ | 182 | *flags |= DNS_VERIFY_SECURE; |
184 | if (!fingerprints->rri_flags & RRSET_VALIDATED) { | 183 | debug("found %d secure fingerprints in DNS", |
185 | error("Ignored unvalidated fingerprint from DNS."); | 184 | fingerprints->rri_nrdatas); |
186 | freerrset(fingerprints); | 185 | } else { |
187 | return DNS_VERIFY_ERROR; | 186 | debug("found %d insecure fingerprints in DNS", |
187 | fingerprints->rri_nrdatas); | ||
188 | } | 188 | } |
189 | #endif | ||
190 | |||
191 | debug("found %d fingerprints in DNS", fingerprints->rri_nrdatas); | ||
192 | 189 | ||
193 | /* Initialize host key parameters */ | 190 | /* Initialize host key parameters */ |
194 | if (!dns_read_key(&hostkey_algorithm, &hostkey_digest_type, | 191 | if (!dns_read_key(&hostkey_algorithm, &hostkey_digest_type, |
195 | &hostkey_digest, &hostkey_digest_len, hostkey)) { | 192 | &hostkey_digest, &hostkey_digest_len, hostkey)) { |
196 | error("Error calculating host key fingerprint."); | 193 | error("Error calculating host key fingerprint."); |
197 | freerrset(fingerprints); | 194 | freerrset(fingerprints); |
198 | return DNS_VERIFY_ERROR; | 195 | return -1; |
199 | } | 196 | } |
200 | 197 | ||
198 | if (fingerprints->rri_nrdatas) | ||
199 | *flags |= DNS_VERIFY_FOUND; | ||
200 | |||
201 | for (counter = 0 ; counter < fingerprints->rri_nrdatas ; counter++) { | 201 | for (counter = 0 ; counter < fingerprints->rri_nrdatas ; counter++) { |
202 | /* | 202 | /* |
203 | * Extract the key from the answer. Ignore any badly | 203 | * Extract the key from the answer. Ignore any badly |
@@ -219,35 +219,22 @@ verify_host_key_dns(const char *hostname, struct sockaddr *address, | |||
219 | memcmp(hostkey_digest, dnskey_digest, | 219 | memcmp(hostkey_digest, dnskey_digest, |
220 | hostkey_digest_len) == 0) { | 220 | hostkey_digest_len) == 0) { |
221 | 221 | ||
222 | /* Matching algoritm and digest. */ | 222 | *flags |= DNS_VERIFY_MATCH; |
223 | freerrset(fingerprints); | ||
224 | debug("matching host key fingerprint found in DNS"); | ||
225 | return DNS_VERIFY_OK; | ||
226 | } else { | ||
227 | /* Correct algorithm but bad digest */ | ||
228 | debug("verify_hostkey_dns: failed"); | ||
229 | failures++; | ||
230 | } | 223 | } |
231 | } | 224 | } |
232 | } | 225 | } |
233 | 226 | ||
234 | freerrset(fingerprints); | 227 | freerrset(fingerprints); |
235 | 228 | ||
236 | if (failures) { | 229 | if (*flags & DNS_VERIFY_FOUND) |
237 | error("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"); | 230 | if (*flags & DNS_VERIFY_MATCH) |
238 | error("@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @"); | 231 | debug("matching host key fingerprint found in DNS"); |
239 | error("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"); | 232 | else |
240 | error("IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!"); | 233 | debug("mismatching host key fingerprint found in DNS"); |
241 | error("Someone could be eavesdropping on you right now (man-in-the-middle attack)!"); | 234 | else |
242 | error("It is also possible that the %s host key has just been changed.", | 235 | debug("no host key fingerprint found in DNS"); |
243 | key_type(hostkey)); | ||
244 | error("Please contact your system administrator."); | ||
245 | return DNS_VERIFY_FAILED; | ||
246 | } | ||
247 | |||
248 | debug("fingerprints found in DNS, but none of them matched"); | ||
249 | 236 | ||
250 | return DNS_VERIFY_ERROR; | 237 | return 0; |
251 | } | 238 | } |
252 | 239 | ||
253 | 240 | ||
@@ -255,7 +242,7 @@ verify_host_key_dns(const char *hostname, struct sockaddr *address, | |||
255 | * Export the fingerprint of a key as a DNS resource record | 242 | * Export the fingerprint of a key as a DNS resource record |
256 | */ | 243 | */ |
257 | int | 244 | int |
258 | export_dns_rr(const char *hostname, Key *key, FILE *f, int generic) | 245 | export_dns_rr(const char *hostname, const Key *key, FILE *f, int generic) |
259 | { | 246 | { |
260 | u_int8_t rdata_pubkey_algorithm = 0; | 247 | u_int8_t rdata_pubkey_algorithm = 0; |
261 | u_int8_t rdata_digest_type = SSHFP_HASH_SHA1; | 248 | u_int8_t rdata_digest_type = SSHFP_HASH_SHA1; |
@@ -286,5 +273,3 @@ export_dns_rr(const char *hostname, Key *key, FILE *f, int generic) | |||
286 | 273 | ||
287 | return success; | 274 | return success; |
288 | } | 275 | } |
289 | |||
290 | #endif /* DNS */ | ||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: dns.h,v 1.3 2003/05/14 22:56:51 jakob Exp $ */ | 1 | /* $OpenBSD: dns.h,v 1.5 2003/11/12 16:39:58 jakob Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 2003 Wesley Griffin. All rights reserved. | 4 | * Copyright (c) 2003 Wesley Griffin. All rights reserved. |
@@ -28,7 +28,6 @@ | |||
28 | 28 | ||
29 | #include "includes.h" | 29 | #include "includes.h" |
30 | 30 | ||
31 | #ifdef DNS | ||
32 | #ifndef DNS_H | 31 | #ifndef DNS_H |
33 | #define DNS_H | 32 | #define DNS_H |
34 | 33 | ||
@@ -46,12 +45,12 @@ enum sshfp_hashes { | |||
46 | #define DNS_RDATACLASS_IN 1 | 45 | #define DNS_RDATACLASS_IN 1 |
47 | #define DNS_RDATATYPE_SSHFP 44 | 46 | #define DNS_RDATATYPE_SSHFP 44 |
48 | 47 | ||
49 | #define DNS_VERIFY_FAILED -1 | 48 | #define DNS_VERIFY_FOUND 0x00000001 |
50 | #define DNS_VERIFY_OK 0 | 49 | #define DNS_VERIFY_MATCH 0x00000002 |
51 | #define DNS_VERIFY_ERROR 1 | 50 | #define DNS_VERIFY_SECURE 0x00000004 |
52 | 51 | ||
53 | int verify_host_key_dns(const char *, struct sockaddr *, Key *); | 52 | |
54 | int export_dns_rr(const char *, Key *, FILE *, int); | 53 | int verify_host_key_dns(const char *, struct sockaddr *, const Key *, int *); |
54 | int export_dns_rr(const char *, const Key *, FILE *, int); | ||
55 | 55 | ||
56 | #endif /* DNS_H */ | 56 | #endif /* DNS_H */ |
57 | #endif /* DNS */ | ||
@@ -36,16 +36,16 @@ | |||
36 | 36 | ||
37 | /* | 37 | /* |
38 | * Portable OpenSSH PRNG seeding: | 38 | * Portable OpenSSH PRNG seeding: |
39 | * If OpenSSL has not "internally seeded" itself (e.g. pulled data from | 39 | * If OpenSSL has not "internally seeded" itself (e.g. pulled data from |
40 | * /dev/random), then we execute a "ssh-rand-helper" program which | 40 | * /dev/random), then we execute a "ssh-rand-helper" program which |
41 | * collects entropy and writes it to stdout. The child program must | 41 | * collects entropy and writes it to stdout. The child program must |
42 | * write at least RANDOM_SEED_SIZE bytes. The child is run with stderr | 42 | * write at least RANDOM_SEED_SIZE bytes. The child is run with stderr |
43 | * attached, so error/debugging output should be visible. | 43 | * attached, so error/debugging output should be visible. |
44 | * | 44 | * |
45 | * XXX: we should tell the child how many bytes we need. | 45 | * XXX: we should tell the child how many bytes we need. |
46 | */ | 46 | */ |
47 | 47 | ||
48 | RCSID("$Id: entropy.c,v 1.46 2003/08/25 01:16:21 mouring Exp $"); | 48 | RCSID("$Id: entropy.c,v 1.48 2003/11/21 12:56:47 djm Exp $"); |
49 | 49 | ||
50 | #ifndef OPENSSL_PRNG_ONLY | 50 | #ifndef OPENSSL_PRNG_ONLY |
51 | #define RANDOM_SEED_SIZE 48 | 51 | #define RANDOM_SEED_SIZE 48 |
@@ -86,16 +86,16 @@ seed_rng(void) | |||
86 | close(p[1]); | 86 | close(p[1]); |
87 | close(devnull); | 87 | close(devnull); |
88 | 88 | ||
89 | if (original_uid != original_euid && | 89 | if (original_uid != original_euid && |
90 | ( seteuid(getuid()) == -1 || | 90 | ( seteuid(getuid()) == -1 || |
91 | setuid(original_uid) == -1) ) { | 91 | setuid(original_uid) == -1) ) { |
92 | fprintf(stderr, "(rand child) setuid(%li): %s\n", | 92 | fprintf(stderr, "(rand child) setuid(%li): %s\n", |
93 | (long int)original_uid, strerror(errno)); | 93 | (long int)original_uid, strerror(errno)); |
94 | _exit(1); | 94 | _exit(1); |
95 | } | 95 | } |
96 | 96 | ||
97 | execl(SSH_RAND_HELPER, "ssh-rand-helper", NULL); | 97 | execl(SSH_RAND_HELPER, "ssh-rand-helper", NULL); |
98 | fprintf(stderr, "(rand child) Couldn't exec '%s': %s\n", | 98 | fprintf(stderr, "(rand child) Couldn't exec '%s': %s\n", |
99 | SSH_RAND_HELPER, strerror(errno)); | 99 | SSH_RAND_HELPER, strerror(errno)); |
100 | _exit(1); | 100 | _exit(1); |
101 | } | 101 | } |
@@ -114,12 +114,12 @@ seed_rng(void) | |||
114 | close(p[0]); | 114 | close(p[0]); |
115 | 115 | ||
116 | if (waitpid(pid, &ret, 0) == -1) | 116 | if (waitpid(pid, &ret, 0) == -1) |
117 | fatal("Couldn't wait for ssh-rand-helper completion: %s", | 117 | fatal("Couldn't wait for ssh-rand-helper completion: %s", |
118 | strerror(errno)); | 118 | strerror(errno)); |
119 | signal(SIGCHLD, old_sigchld); | 119 | signal(SIGCHLD, old_sigchld); |
120 | 120 | ||
121 | /* We don't mind if the child exits upon a SIGPIPE */ | 121 | /* We don't mind if the child exits upon a SIGPIPE */ |
122 | if (!WIFEXITED(ret) && | 122 | if (!WIFEXITED(ret) && |
123 | (!WIFSIGNALED(ret) || WTERMSIG(ret) != SIGPIPE)) | 123 | (!WIFSIGNALED(ret) || WTERMSIG(ret) != SIGPIPE)) |
124 | fatal("ssh-rand-helper terminated abnormally"); | 124 | fatal("ssh-rand-helper terminated abnormally"); |
125 | if (WEXITSTATUS(ret) != 0) | 125 | if (WEXITSTATUS(ret) != 0) |
@@ -134,7 +134,7 @@ seed_rng(void) | |||
134 | } | 134 | } |
135 | 135 | ||
136 | void | 136 | void |
137 | init_rng(void) | 137 | init_rng(void) |
138 | { | 138 | { |
139 | /* | 139 | /* |
140 | * OpenSSL version numbers: MNNFFPPS: major minor fix patch status | 140 | * OpenSSL version numbers: MNNFFPPS: major minor fix patch status |
@@ -23,7 +23,7 @@ | |||
23 | */ | 23 | */ |
24 | 24 | ||
25 | #include "includes.h" | 25 | #include "includes.h" |
26 | RCSID("$OpenBSD: fatal.c,v 1.1 2002/02/22 12:20:34 markus Exp $"); | 26 | RCSID("$OpenBSD: fatal.c,v 1.2 2003/09/23 20:17:11 markus Exp $"); |
27 | 27 | ||
28 | #include "log.h" | 28 | #include "log.h" |
29 | 29 | ||
@@ -36,5 +36,5 @@ fatal(const char *fmt,...) | |||
36 | va_start(args, fmt); | 36 | va_start(args, fmt); |
37 | do_log(SYSLOG_LEVEL_FATAL, fmt, args); | 37 | do_log(SYSLOG_LEVEL_FATAL, fmt, args); |
38 | va_end(args); | 38 | va_end(args); |
39 | fatal_cleanup(); | 39 | cleanup_exit(255); |
40 | } | 40 | } |
@@ -65,7 +65,7 @@ foreach (@infile) { | |||
65 | ($null, $null, $rate) = split(/,/, $ent[0]); | 65 | ($null, $null, $rate) = split(/,/, $ent[0]); |
66 | $est = $rate / $entscale; # scale the estimate back | 66 | $est = $rate / $entscale; # scale the estimate back |
67 | } | 67 | } |
68 | } | 68 | } |
69 | print OUT "\"$cmd\" $path $est\n"; | 69 | print OUT "\"$cmd\" $path $est\n"; |
70 | } | 70 | } |
71 | 71 | ||
diff --git a/groupaccess.c b/groupaccess.c index fbf794fc8..f50879f83 100644 --- a/groupaccess.c +++ b/groupaccess.c | |||
@@ -31,7 +31,7 @@ RCSID("$OpenBSD: groupaccess.c,v 1.6 2003/04/08 20:21:28 itojun Exp $"); | |||
31 | #include "log.h" | 31 | #include "log.h" |
32 | 32 | ||
33 | static int ngroups; | 33 | static int ngroups; |
34 | static char *groups_byname[NGROUPS_MAX + 1]; /* +1 for base/primary group */ | 34 | static char **groups_byname; |
35 | 35 | ||
36 | /* | 36 | /* |
37 | * Initialize group access list for user with primary (base) and | 37 | * Initialize group access list for user with primary (base) and |
@@ -40,19 +40,27 @@ static char *groups_byname[NGROUPS_MAX + 1]; /* +1 for base/primary group */ | |||
40 | int | 40 | int |
41 | ga_init(const char *user, gid_t base) | 41 | ga_init(const char *user, gid_t base) |
42 | { | 42 | { |
43 | gid_t groups_bygid[NGROUPS_MAX + 1]; | 43 | gid_t *groups_bygid; |
44 | int i, j; | 44 | int i, j; |
45 | struct group *gr; | 45 | struct group *gr; |
46 | 46 | ||
47 | if (ngroups > 0) | 47 | if (ngroups > 0) |
48 | ga_free(); | 48 | ga_free(); |
49 | 49 | ||
50 | ngroups = sizeof(groups_bygid) / sizeof(gid_t); | 50 | ngroups = NGROUPS_MAX; |
51 | #if defined(HAVE_SYSCONF) && defined(_SC_NGROUPS_MAX) | ||
52 | ngroups = MAX(NGROUPS_MAX, sysconf(_SC_NGROUPS_MAX)); | ||
53 | #endif | ||
54 | |||
55 | groups_bygid = xmalloc(ngroups * sizeof(*groups_bygid)); | ||
56 | groups_byname = xmalloc(ngroups * sizeof(*groups_byname)); | ||
57 | |||
51 | if (getgrouplist(user, base, groups_bygid, &ngroups) == -1) | 58 | if (getgrouplist(user, base, groups_bygid, &ngroups) == -1) |
52 | logit("getgrouplist: groups list too small"); | 59 | logit("getgrouplist: groups list too small"); |
53 | for (i = 0, j = 0; i < ngroups; i++) | 60 | for (i = 0, j = 0; i < ngroups; i++) |
54 | if ((gr = getgrgid(groups_bygid[i])) != NULL) | 61 | if ((gr = getgrgid(groups_bygid[i])) != NULL) |
55 | groups_byname[j++] = xstrdup(gr->gr_name); | 62 | groups_byname[j++] = xstrdup(gr->gr_name); |
63 | xfree(groups_bygid); | ||
56 | return (ngroups = j); | 64 | return (ngroups = j); |
57 | } | 65 | } |
58 | 66 | ||
@@ -84,5 +92,6 @@ ga_free(void) | |||
84 | for (i = 0; i < ngroups; i++) | 92 | for (i = 0; i < ngroups; i++) |
85 | xfree(groups_byname[i]); | 93 | xfree(groups_byname[i]); |
86 | ngroups = 0; | 94 | ngroups = 0; |
95 | xfree(groups_byname); | ||
87 | } | 96 | } |
88 | } | 97 | } |
diff --git a/gss-genr.c b/gss-genr.c index bda12d6f1..3f5727b3e 100644 --- a/gss-genr.c +++ b/gss-genr.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: gss-genr.c,v 1.1 2003/08/22 10:56:09 markus Exp $ */ | 1 | /* $OpenBSD: gss-genr.c,v 1.3 2003/11/21 11:57:03 djm Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 2001-2003 Simon Wilkinson. All rights reserved. | 4 | * Copyright (c) 2001-2003 Simon Wilkinson. All rights reserved. |
@@ -33,9 +33,12 @@ | |||
33 | #include "compat.h" | 33 | #include "compat.h" |
34 | #include "log.h" | 34 | #include "log.h" |
35 | #include "monitor_wrap.h" | 35 | #include "monitor_wrap.h" |
36 | #include "ssh2.h" | ||
36 | 37 | ||
37 | #include "ssh-gss.h" | 38 | #include "ssh-gss.h" |
38 | 39 | ||
40 | extern u_char *session_id2; | ||
41 | extern u_int session_id2_len; | ||
39 | 42 | ||
40 | /* Check that the OID in a data stream matches that in the context */ | 43 | /* Check that the OID in a data stream matches that in the context */ |
41 | int | 44 | int |
@@ -245,6 +248,28 @@ ssh_gssapi_acquire_cred(Gssctxt *ctx) | |||
245 | } | 248 | } |
246 | 249 | ||
247 | OM_uint32 | 250 | OM_uint32 |
251 | ssh_gssapi_sign(Gssctxt *ctx, gss_buffer_t buffer, gss_buffer_t hash) | ||
252 | { | ||
253 | if ((ctx->major = gss_get_mic(&ctx->minor, ctx->context, | ||
254 | GSS_C_QOP_DEFAULT, buffer, hash))) | ||
255 | ssh_gssapi_error(ctx); | ||
256 | |||
257 | return (ctx->major); | ||
258 | } | ||
259 | |||
260 | void | ||
261 | ssh_gssapi_buildmic(Buffer *b, const char *user, const char *service, | ||
262 | const char *context) | ||
263 | { | ||
264 | buffer_init(b); | ||
265 | buffer_put_string(b, session_id2, session_id2_len); | ||
266 | buffer_put_char(b, SSH2_MSG_USERAUTH_REQUEST); | ||
267 | buffer_put_cstring(b, user); | ||
268 | buffer_put_cstring(b, service); | ||
269 | buffer_put_cstring(b, context); | ||
270 | } | ||
271 | |||
272 | OM_uint32 | ||
248 | ssh_gssapi_server_ctx(Gssctxt **ctx, gss_OID oid) { | 273 | ssh_gssapi_server_ctx(Gssctxt **ctx, gss_OID oid) { |
249 | if (*ctx) | 274 | if (*ctx) |
250 | ssh_gssapi_delete_ctx(ctx); | 275 | ssh_gssapi_delete_ctx(ctx); |
diff --git a/gss-serv-krb5.c b/gss-serv-krb5.c index f48e09911..8ba3e7182 100644 --- a/gss-serv-krb5.c +++ b/gss-serv-krb5.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: gss-serv-krb5.c,v 1.1 2003/08/22 10:56:09 markus Exp $ */ | 1 | /* $OpenBSD: gss-serv-krb5.c,v 1.2 2003/11/21 11:57:03 djm Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 2001-2003 Simon Wilkinson. All rights reserved. | 4 | * Copyright (c) 2001-2003 Simon Wilkinson. All rights reserved. |
@@ -39,16 +39,20 @@ | |||
39 | extern ServerOptions options; | 39 | extern ServerOptions options; |
40 | 40 | ||
41 | #ifdef HEIMDAL | 41 | #ifdef HEIMDAL |
42 | #include <krb5.h> | 42 | # include <krb5.h> |
43 | #else | 43 | #else |
44 | #include <gssapi_krb5.h> | 44 | # ifdef HAVE_GSSAPI_KRB5 |
45 | # include <gssapi_krb5.h> | ||
46 | # elif HAVE_GSSAPI_GSSAPI_KRB5 | ||
47 | # include <gssapi/gssapi_krb5.h> | ||
48 | # endif | ||
45 | #endif | 49 | #endif |
46 | 50 | ||
47 | static krb5_context krb_context = NULL; | 51 | static krb5_context krb_context = NULL; |
48 | 52 | ||
49 | /* Initialise the krb5 library, for the stuff that GSSAPI won't do */ | 53 | /* Initialise the krb5 library, for the stuff that GSSAPI won't do */ |
50 | 54 | ||
51 | static int | 55 | static int |
52 | ssh_gssapi_krb5_init() | 56 | ssh_gssapi_krb5_init() |
53 | { | 57 | { |
54 | krb5_error_code problem; | 58 | krb5_error_code problem; |
@@ -108,6 +112,7 @@ ssh_gssapi_krb5_storecreds(ssh_gssapi_client *client) | |||
108 | krb5_error_code problem; | 112 | krb5_error_code problem; |
109 | krb5_principal princ; | 113 | krb5_principal princ; |
110 | OM_uint32 maj_status, min_status; | 114 | OM_uint32 maj_status, min_status; |
115 | int len; | ||
111 | 116 | ||
112 | if (client->creds == NULL) { | 117 | if (client->creds == NULL) { |
113 | debug("No credentials stored"); | 118 | debug("No credentials stored"); |
@@ -127,10 +132,10 @@ ssh_gssapi_krb5_storecreds(ssh_gssapi_client *client) | |||
127 | { | 132 | { |
128 | int tmpfd; | 133 | int tmpfd; |
129 | char ccname[40]; | 134 | char ccname[40]; |
130 | 135 | ||
131 | snprintf(ccname, sizeof(ccname), | 136 | snprintf(ccname, sizeof(ccname), |
132 | "FILE:/tmp/krb5cc_%d_XXXXXX", geteuid()); | 137 | "FILE:/tmp/krb5cc_%d_XXXXXX", geteuid()); |
133 | 138 | ||
134 | if ((tmpfd = mkstemp(ccname + strlen("FILE:"))) == -1) { | 139 | if ((tmpfd = mkstemp(ccname + strlen("FILE:"))) == -1) { |
135 | logit("mkstemp(): %.100s", strerror(errno)); | 140 | logit("mkstemp(): %.100s", strerror(errno)); |
136 | problem = errno; | 141 | problem = errno; |
@@ -151,7 +156,7 @@ ssh_gssapi_krb5_storecreds(ssh_gssapi_client *client) | |||
151 | } | 156 | } |
152 | #endif /* #ifdef HEIMDAL */ | 157 | #endif /* #ifdef HEIMDAL */ |
153 | 158 | ||
154 | if ((problem = krb5_parse_name(krb_context, | 159 | if ((problem = krb5_parse_name(krb_context, |
155 | client->exportedname.value, &princ))) { | 160 | client->exportedname.value, &princ))) { |
156 | logit("krb5_parse_name(): %.100s", | 161 | logit("krb5_parse_name(): %.100s", |
157 | krb5_get_err_text(krb_context, problem)); | 162 | krb5_get_err_text(krb_context, problem)); |
@@ -169,7 +174,7 @@ ssh_gssapi_krb5_storecreds(ssh_gssapi_client *client) | |||
169 | 174 | ||
170 | krb5_free_principal(krb_context, princ); | 175 | krb5_free_principal(krb_context, princ); |
171 | 176 | ||
172 | if ((maj_status = gss_krb5_copy_ccache(&min_status, | 177 | if ((maj_status = gss_krb5_copy_ccache(&min_status, |
173 | client->creds, ccache))) { | 178 | client->creds, ccache))) { |
174 | logit("gss_krb5_copy_ccache() failed"); | 179 | logit("gss_krb5_copy_ccache() failed"); |
175 | krb5_cc_destroy(krb_context, ccache); | 180 | krb5_cc_destroy(krb_context, ccache); |
@@ -178,11 +183,13 @@ ssh_gssapi_krb5_storecreds(ssh_gssapi_client *client) | |||
178 | 183 | ||
179 | client->store.filename = xstrdup(krb5_cc_get_name(krb_context, ccache)); | 184 | client->store.filename = xstrdup(krb5_cc_get_name(krb_context, ccache)); |
180 | client->store.envvar = "KRB5CCNAME"; | 185 | client->store.envvar = "KRB5CCNAME"; |
181 | client->store.envval = xstrdup(client->store.filename); | 186 | len = strlen(client->store.filename) + 6; |
187 | client->store.envval = xmalloc(len); | ||
188 | snprintf(client->store.envval, len, "FILE:%s", client->store.filename); | ||
182 | 189 | ||
183 | #ifdef USE_PAM | 190 | #ifdef USE_PAM |
184 | if (options.use_pam) | 191 | if (options.use_pam) |
185 | do_pam_putenv(client->store.envvar,client->store.envval); | 192 | do_pam_putenv(client->store.envvar, client->store.envval); |
186 | #endif | 193 | #endif |
187 | 194 | ||
188 | krb5_cc_close(krb_context, ccache); | 195 | krb5_cc_close(krb_context, ccache); |
diff --git a/gss-serv.c b/gss-serv.c index 8fd1d63f0..de32a3f2e 100644 --- a/gss-serv.c +++ b/gss-serv.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: gss-serv.c,v 1.3 2003/08/31 13:31:57 markus Exp $ */ | 1 | /* $OpenBSD: gss-serv.c,v 1.5 2003/11/17 11:06:07 markus Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 2001-2003 Simon Wilkinson. All rights reserved. | 4 | * Copyright (c) 2001-2003 Simon Wilkinson. All rights reserved. |
@@ -232,9 +232,9 @@ ssh_gssapi_getclient(Gssctxt *ctx, ssh_gssapi_client *client) | |||
232 | return (ctx->major); | 232 | return (ctx->major); |
233 | } | 233 | } |
234 | 234 | ||
235 | /* As user - called through fatal cleanup hook */ | 235 | /* As user - called on fatal/exit */ |
236 | void | 236 | void |
237 | ssh_gssapi_cleanup_creds(void *ignored) | 237 | ssh_gssapi_cleanup_creds(void) |
238 | { | 238 | { |
239 | if (gssapi_client.store.filename != NULL) { | 239 | if (gssapi_client.store.filename != NULL) { |
240 | /* Unlink probably isn't sufficient */ | 240 | /* Unlink probably isn't sufficient */ |
@@ -249,8 +249,6 @@ ssh_gssapi_storecreds(void) | |||
249 | { | 249 | { |
250 | if (gssapi_client.mech && gssapi_client.mech->storecreds) { | 250 | if (gssapi_client.mech && gssapi_client.mech->storecreds) { |
251 | (*gssapi_client.mech->storecreds)(&gssapi_client); | 251 | (*gssapi_client.mech->storecreds)(&gssapi_client); |
252 | if (options.gss_cleanup_creds) | ||
253 | fatal_add_cleanup(ssh_gssapi_cleanup_creds, NULL); | ||
254 | } else | 252 | } else |
255 | debug("ssh_gssapi_storecreds: Not a GSSAPI mechanism"); | 253 | debug("ssh_gssapi_storecreds: Not a GSSAPI mechanism"); |
256 | } | 254 | } |
@@ -289,4 +287,14 @@ ssh_gssapi_userok(char *user) | |||
289 | return (0); | 287 | return (0); |
290 | } | 288 | } |
291 | 289 | ||
290 | /* Priviledged */ | ||
291 | OM_uint32 | ||
292 | ssh_gssapi_checkmic(Gssctxt *ctx, gss_buffer_t gssbuf, gss_buffer_t gssmic) | ||
293 | { | ||
294 | ctx->major = gss_verify_mic(&ctx->minor, ctx->context, | ||
295 | gssbuf, gssmic, NULL); | ||
296 | |||
297 | return (ctx->major); | ||
298 | } | ||
299 | |||
292 | #endif | 300 | #endif |
diff --git a/hostfile.c b/hostfile.c index 42a8aa71d..88c054912 100644 --- a/hostfile.c +++ b/hostfile.c | |||
@@ -36,7 +36,7 @@ | |||
36 | */ | 36 | */ |
37 | 37 | ||
38 | #include "includes.h" | 38 | #include "includes.h" |
39 | RCSID("$OpenBSD: hostfile.c,v 1.31 2003/04/08 20:21:28 itojun Exp $"); | 39 | RCSID("$OpenBSD: hostfile.c,v 1.32 2003/11/10 16:23:41 jakob Exp $"); |
40 | 40 | ||
41 | #include "packet.h" | 41 | #include "packet.h" |
42 | #include "match.h" | 42 | #include "match.h" |
@@ -72,7 +72,7 @@ hostfile_read_key(char **cpp, u_int *bitsp, Key *ret) | |||
72 | } | 72 | } |
73 | 73 | ||
74 | static int | 74 | static int |
75 | hostfile_check_key(int bits, Key *key, const char *host, const char *filename, int linenum) | 75 | hostfile_check_key(int bits, const Key *key, const char *host, const char *filename, int linenum) |
76 | { | 76 | { |
77 | if (key == NULL || key->type != KEY_RSA1 || key->rsa == NULL) | 77 | if (key == NULL || key->type != KEY_RSA1 || key->rsa == NULL) |
78 | return 1; | 78 | return 1; |
@@ -98,7 +98,7 @@ hostfile_check_key(int bits, Key *key, const char *host, const char *filename, i | |||
98 | 98 | ||
99 | static HostStatus | 99 | static HostStatus |
100 | check_host_in_hostfile_by_key_or_type(const char *filename, | 100 | check_host_in_hostfile_by_key_or_type(const char *filename, |
101 | const char *host, Key *key, int keytype, Key *found, int *numret) | 101 | const char *host, const Key *key, int keytype, Key *found, int *numret) |
102 | { | 102 | { |
103 | FILE *f; | 103 | FILE *f; |
104 | char line[8192]; | 104 | char line[8192]; |
@@ -188,7 +188,7 @@ check_host_in_hostfile_by_key_or_type(const char *filename, | |||
188 | } | 188 | } |
189 | 189 | ||
190 | HostStatus | 190 | HostStatus |
191 | check_host_in_hostfile(const char *filename, const char *host, Key *key, | 191 | check_host_in_hostfile(const char *filename, const char *host, const Key *key, |
192 | Key *found, int *numret) | 192 | Key *found, int *numret) |
193 | { | 193 | { |
194 | if (key == NULL) | 194 | if (key == NULL) |
@@ -211,7 +211,7 @@ lookup_key_in_hostfile_by_type(const char *filename, const char *host, | |||
211 | */ | 211 | */ |
212 | 212 | ||
213 | int | 213 | int |
214 | add_host_to_hostfile(const char *filename, const char *host, Key *key) | 214 | add_host_to_hostfile(const char *filename, const char *host, const Key *key) |
215 | { | 215 | { |
216 | FILE *f; | 216 | FILE *f; |
217 | int success = 0; | 217 | int success = 0; |
diff --git a/hostfile.h b/hostfile.h index e3d116581..efcddc9f9 100644 --- a/hostfile.h +++ b/hostfile.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: hostfile.h,v 1.13 2002/11/21 23:03:51 deraadt Exp $ */ | 1 | /* $OpenBSD: hostfile.h,v 1.14 2003/11/10 16:23:41 jakob Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> | 4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> |
@@ -20,8 +20,8 @@ typedef enum { | |||
20 | 20 | ||
21 | int hostfile_read_key(char **, u_int *, Key *); | 21 | int hostfile_read_key(char **, u_int *, Key *); |
22 | HostStatus check_host_in_hostfile(const char *, const char *, | 22 | HostStatus check_host_in_hostfile(const char *, const char *, |
23 | Key *, Key *, int *); | 23 | const Key *, Key *, int *); |
24 | int add_host_to_hostfile(const char *, const char *, Key *); | 24 | int add_host_to_hostfile(const char *, const char *, const Key *); |
25 | int lookup_key_in_hostfile_by_type(const char *, const char *, | 25 | int lookup_key_in_hostfile_by_type(const char *, const char *, |
26 | int, Key *, int *); | 26 | int, Key *, int *); |
27 | 27 | ||
diff --git a/includes.h b/includes.h index 033cd91fa..ca943c7e6 100644 --- a/includes.h +++ b/includes.h | |||
@@ -134,6 +134,12 @@ static /**/const char *const rcsid[] = { (char *)rcsid, "\100(#)" msg } | |||
134 | #ifdef HAVE_SYS_STRTIO_H | 134 | #ifdef HAVE_SYS_STRTIO_H |
135 | #include <sys/strtio.h> /* for TIOCCBRK on HP-UX */ | 135 | #include <sys/strtio.h> /* for TIOCCBRK on HP-UX */ |
136 | #endif | 136 | #endif |
137 | #if defined(HAVE_SYS_PTMS_H) && defined(HAVE_DEV_PTMX) | ||
138 | # if defined(HAVE_SYS_STREAM_H) | ||
139 | # include <sys/stream.h> /* reqd for queue_t on Solaris 2.5.1 */ | ||
140 | # endif | ||
141 | #include <sys/ptms.h> /* for grantpt() and friends */ | ||
142 | #endif | ||
137 | 143 | ||
138 | #include <netinet/in_systm.h> /* For typedefs */ | 144 | #include <netinet/in_systm.h> /* For typedefs */ |
139 | #include <netinet/in.h> /* For IPv6 macros */ | 145 | #include <netinet/in.h> /* For IPv6 macros */ |
@@ -147,7 +153,11 @@ static /**/const char *const rcsid[] = { (char *)rcsid, "\100(#)" msg } | |||
147 | # include <rpc/types.h> /* For INADDR_LOOPBACK */ | 153 | # include <rpc/types.h> /* For INADDR_LOOPBACK */ |
148 | #endif | 154 | #endif |
149 | #ifdef USE_PAM | 155 | #ifdef USE_PAM |
156 | #if defined(HAVE_SECURITY_PAM_APPL_H) | ||
150 | # include <security/pam_appl.h> | 157 | # include <security/pam_appl.h> |
158 | #elif defined (HAVE_PAM_PAM_APPL_H) | ||
159 | # include <pam/pam_appl.h> | ||
160 | #endif | ||
151 | #endif | 161 | #endif |
152 | #ifdef HAVE_READPASSPHRASE_H | 162 | #ifdef HAVE_READPASSPHRASE_H |
153 | # include <readpassphrase.h> | 163 | # include <readpassphrase.h> |
@@ -165,6 +175,11 @@ static /**/const char *const rcsid[] = { (char *)rcsid, "\100(#)" msg } | |||
165 | # include <libutil.h> /* Openpty on FreeBSD at least */ | 175 | # include <libutil.h> /* Openpty on FreeBSD at least */ |
166 | #endif | 176 | #endif |
167 | 177 | ||
178 | #if defined(KRB5) && defined(USE_AFS) | ||
179 | # include <krb5.h> | ||
180 | # include <kafs.h> | ||
181 | #endif | ||
182 | |||
168 | #include <openssl/opensslv.h> /* For OPENSSL_VERSION_NUMBER */ | 183 | #include <openssl/opensslv.h> /* For OPENSSL_VERSION_NUMBER */ |
169 | 184 | ||
170 | #include "defines.h" | 185 | #include "defines.h" |
diff --git a/install-sh b/install-sh index e9de23842..220abbf61 100755 --- a/install-sh +++ b/install-sh | |||
@@ -125,7 +125,7 @@ if [ x"$dir_arg" != x ]; then | |||
125 | else | 125 | else |
126 | 126 | ||
127 | # Waiting for this to be detected by the "$instcmd $src $dsttmp" command | 127 | # Waiting for this to be detected by the "$instcmd $src $dsttmp" command |
128 | # might cause directories to be created, which would be especially bad | 128 | # might cause directories to be created, which would be especially bad |
129 | # if $src (and thus $dsttmp) contains '*'. | 129 | # if $src (and thus $dsttmp) contains '*'. |
130 | 130 | ||
131 | if [ -f $src -o -d $src ] | 131 | if [ -f $src -o -d $src ] |
@@ -180,7 +180,7 @@ while [ $# -ne 0 ] ; do | |||
180 | shift | 180 | shift |
181 | 181 | ||
182 | if [ ! -d "${pathcomp}" ] ; | 182 | if [ ! -d "${pathcomp}" ] ; |
183 | then | 183 | then |
184 | $mkdirprog "${pathcomp}" | 184 | $mkdirprog "${pathcomp}" |
185 | else | 185 | else |
186 | true | 186 | true |
@@ -202,17 +202,17 @@ else | |||
202 | 202 | ||
203 | # If we're going to rename the final executable, determine the name now. | 203 | # If we're going to rename the final executable, determine the name now. |
204 | 204 | ||
205 | if [ x"$transformarg" = x ] | 205 | if [ x"$transformarg" = x ] |
206 | then | 206 | then |
207 | dstfile=`basename $dst` | 207 | dstfile=`basename $dst` |
208 | else | 208 | else |
209 | dstfile=`basename $dst $transformbasename | | 209 | dstfile=`basename $dst $transformbasename | |
210 | sed $transformarg`$transformbasename | 210 | sed $transformarg`$transformbasename |
211 | fi | 211 | fi |
212 | 212 | ||
213 | # don't allow the sed command to completely eliminate the filename | 213 | # don't allow the sed command to completely eliminate the filename |
214 | 214 | ||
215 | if [ x"$dstfile" = x ] | 215 | if [ x"$dstfile" = x ] |
216 | then | 216 | then |
217 | dstfile=`basename $dst` | 217 | dstfile=`basename $dst` |
218 | else | 218 | else |
@@ -243,7 +243,7 @@ else | |||
243 | # Now rename the file to the real destination. | 243 | # Now rename the file to the real destination. |
244 | 244 | ||
245 | $doit $rmcmd -f $dstdir/$dstfile && | 245 | $doit $rmcmd -f $dstdir/$dstfile && |
246 | $doit $mvcmd $dsttmp $dstdir/$dstfile | 246 | $doit $mvcmd $dsttmp $dstdir/$dstfile |
247 | 247 | ||
248 | fi && | 248 | fi && |
249 | 249 | ||
@@ -23,7 +23,7 @@ | |||
23 | */ | 23 | */ |
24 | 24 | ||
25 | #include "includes.h" | 25 | #include "includes.h" |
26 | RCSID("$OpenBSD: kex.c,v 1.55 2003/04/01 10:31:26 markus Exp $"); | 26 | RCSID("$OpenBSD: kex.c,v 1.56 2003/11/21 11:57:03 djm Exp $"); |
27 | 27 | ||
28 | #include <openssl/crypto.h> | 28 | #include <openssl/crypto.h> |
29 | 29 | ||
@@ -310,7 +310,7 @@ choose_hostkeyalg(Kex *k, char *client, char *server) | |||
310 | xfree(hostkeyalg); | 310 | xfree(hostkeyalg); |
311 | } | 311 | } |
312 | 312 | ||
313 | static int | 313 | static int |
314 | proposals_match(char *my[PROPOSAL_MAX], char *peer[PROPOSAL_MAX]) | 314 | proposals_match(char *my[PROPOSAL_MAX], char *peer[PROPOSAL_MAX]) |
315 | { | 315 | { |
316 | static int check[] = { | 316 | static int check[] = { |
@@ -392,7 +392,7 @@ kex_choose_conf(Kex *kex) | |||
392 | kex->we_need = need; | 392 | kex->we_need = need; |
393 | 393 | ||
394 | /* ignore the next message if the proposals do not match */ | 394 | /* ignore the next message if the proposals do not match */ |
395 | if (first_kex_follows && !proposals_match(my, peer) && | 395 | if (first_kex_follows && !proposals_match(my, peer) && |
396 | !(datafellows & SSH_BUG_FIRSTKEX)) { | 396 | !(datafellows & SSH_BUG_FIRSTKEX)) { |
397 | type = packet_read(); | 397 | type = packet_read(); |
398 | debug2("skipping next packet (type %u)", type); | 398 | debug2("skipping next packet (type %u)", type); |
@@ -24,7 +24,7 @@ | |||
24 | */ | 24 | */ |
25 | 25 | ||
26 | #include "includes.h" | 26 | #include "includes.h" |
27 | RCSID("$OpenBSD: kexgexc.c,v 1.1 2003/02/16 17:09:57 markus Exp $"); | 27 | RCSID("$OpenBSD: kexgexc.c,v 1.2 2003/12/08 11:00:47 markus Exp $"); |
28 | 28 | ||
29 | #include "xmalloc.h" | 29 | #include "xmalloc.h" |
30 | #include "key.h" | 30 | #include "key.h" |
@@ -49,16 +49,14 @@ kexgex_client(Kex *kex) | |||
49 | nbits = dh_estimate(kex->we_need * 8); | 49 | nbits = dh_estimate(kex->we_need * 8); |
50 | 50 | ||
51 | if (datafellows & SSH_OLD_DHGEX) { | 51 | if (datafellows & SSH_OLD_DHGEX) { |
52 | debug("SSH2_MSG_KEX_DH_GEX_REQUEST_OLD sent"); | ||
53 | |||
54 | /* Old GEX request */ | 52 | /* Old GEX request */ |
55 | packet_start(SSH2_MSG_KEX_DH_GEX_REQUEST_OLD); | 53 | packet_start(SSH2_MSG_KEX_DH_GEX_REQUEST_OLD); |
56 | packet_put_int(nbits); | 54 | packet_put_int(nbits); |
57 | min = DH_GRP_MIN; | 55 | min = DH_GRP_MIN; |
58 | max = DH_GRP_MAX; | 56 | max = DH_GRP_MAX; |
59 | } else { | ||
60 | debug("SSH2_MSG_KEX_DH_GEX_REQUEST sent"); | ||
61 | 57 | ||
58 | debug("SSH2_MSG_KEX_DH_GEX_REQUEST_OLD(%u) sent", nbits); | ||
59 | } else { | ||
62 | /* New GEX request */ | 60 | /* New GEX request */ |
63 | min = DH_GRP_MIN; | 61 | min = DH_GRP_MIN; |
64 | max = DH_GRP_MAX; | 62 | max = DH_GRP_MAX; |
@@ -66,6 +64,9 @@ kexgex_client(Kex *kex) | |||
66 | packet_put_int(min); | 64 | packet_put_int(min); |
67 | packet_put_int(nbits); | 65 | packet_put_int(nbits); |
68 | packet_put_int(max); | 66 | packet_put_int(max); |
67 | |||
68 | debug("SSH2_MSG_KEX_DH_GEX_REQUEST(%u<%u<%u) sent", | ||
69 | min, nbits, max); | ||
69 | } | 70 | } |
70 | #ifdef DEBUG_KEXDH | 71 | #ifdef DEBUG_KEXDH |
71 | fprintf(stderr, "\nmin = %d, nbits = %d, max = %d\n", | 72 | fprintf(stderr, "\nmin = %d, nbits = %d, max = %d\n", |
@@ -32,7 +32,7 @@ | |||
32 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 32 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
33 | */ | 33 | */ |
34 | #include "includes.h" | 34 | #include "includes.h" |
35 | RCSID("$OpenBSD: key.c,v 1.54 2003/07/09 13:58:19 avsm Exp $"); | 35 | RCSID("$OpenBSD: key.c,v 1.55 2003/11/10 16:23:41 jakob Exp $"); |
36 | 36 | ||
37 | #include <openssl/evp.h> | 37 | #include <openssl/evp.h> |
38 | 38 | ||
@@ -143,8 +143,9 @@ key_free(Key *k) | |||
143 | } | 143 | } |
144 | xfree(k); | 144 | xfree(k); |
145 | } | 145 | } |
146 | |||
146 | int | 147 | int |
147 | key_equal(Key *a, Key *b) | 148 | key_equal(const Key *a, const Key *b) |
148 | { | 149 | { |
149 | if (a == NULL || b == NULL || a->type != b->type) | 150 | if (a == NULL || b == NULL || a->type != b->type) |
150 | return 0; | 151 | return 0; |
@@ -170,7 +171,8 @@ key_equal(Key *a, Key *b) | |||
170 | } | 171 | } |
171 | 172 | ||
172 | u_char* | 173 | u_char* |
173 | key_fingerprint_raw(Key *k, enum fp_type dgst_type, u_int *dgst_raw_length) | 174 | key_fingerprint_raw(const Key *k, enum fp_type dgst_type, |
175 | u_int *dgst_raw_length) | ||
174 | { | 176 | { |
175 | const EVP_MD *md = NULL; | 177 | const EVP_MD *md = NULL; |
176 | EVP_MD_CTX ctx; | 178 | EVP_MD_CTX ctx; |
@@ -292,7 +294,7 @@ key_fingerprint_bubblebabble(u_char *dgst_raw, u_int dgst_raw_len) | |||
292 | } | 294 | } |
293 | 295 | ||
294 | char * | 296 | char * |
295 | key_fingerprint(Key *k, enum fp_type dgst_type, enum fp_rep dgst_rep) | 297 | key_fingerprint(const Key *k, enum fp_type dgst_type, enum fp_rep dgst_rep) |
296 | { | 298 | { |
297 | char *retval = NULL; | 299 | char *retval = NULL; |
298 | u_char *dgst_raw; | 300 | u_char *dgst_raw; |
@@ -490,7 +492,7 @@ key_read(Key *ret, char **cpp) | |||
490 | } | 492 | } |
491 | 493 | ||
492 | int | 494 | int |
493 | key_write(Key *key, FILE *f) | 495 | key_write(const Key *key, FILE *f) |
494 | { | 496 | { |
495 | int n, success = 0; | 497 | int n, success = 0; |
496 | u_int len, bits = 0; | 498 | u_int len, bits = 0; |
@@ -522,8 +524,8 @@ key_write(Key *key, FILE *f) | |||
522 | return success; | 524 | return success; |
523 | } | 525 | } |
524 | 526 | ||
525 | char * | 527 | const char * |
526 | key_type(Key *k) | 528 | key_type(const Key *k) |
527 | { | 529 | { |
528 | switch (k->type) { | 530 | switch (k->type) { |
529 | case KEY_RSA1: | 531 | case KEY_RSA1: |
@@ -539,8 +541,8 @@ key_type(Key *k) | |||
539 | return "unknown"; | 541 | return "unknown"; |
540 | } | 542 | } |
541 | 543 | ||
542 | char * | 544 | const char * |
543 | key_ssh_name(Key *k) | 545 | key_ssh_name(const Key *k) |
544 | { | 546 | { |
545 | switch (k->type) { | 547 | switch (k->type) { |
546 | case KEY_RSA: | 548 | case KEY_RSA: |
@@ -554,7 +556,7 @@ key_ssh_name(Key *k) | |||
554 | } | 556 | } |
555 | 557 | ||
556 | u_int | 558 | u_int |
557 | key_size(Key *k) | 559 | key_size(const Key *k) |
558 | { | 560 | { |
559 | switch (k->type) { | 561 | switch (k->type) { |
560 | case KEY_RSA1: | 562 | case KEY_RSA1: |
@@ -611,7 +613,7 @@ key_generate(int type, u_int bits) | |||
611 | } | 613 | } |
612 | 614 | ||
613 | Key * | 615 | Key * |
614 | key_from_private(Key *k) | 616 | key_from_private(const Key *k) |
615 | { | 617 | { |
616 | Key *n = NULL; | 618 | Key *n = NULL; |
617 | switch (k->type) { | 619 | switch (k->type) { |
@@ -676,7 +678,7 @@ key_names_valid2(const char *names) | |||
676 | } | 678 | } |
677 | 679 | ||
678 | Key * | 680 | Key * |
679 | key_from_blob(u_char *blob, u_int blen) | 681 | key_from_blob(const u_char *blob, u_int blen) |
680 | { | 682 | { |
681 | Buffer b; | 683 | Buffer b; |
682 | char *ktype; | 684 | char *ktype; |
@@ -726,7 +728,7 @@ key_from_blob(u_char *blob, u_int blen) | |||
726 | } | 728 | } |
727 | 729 | ||
728 | int | 730 | int |
729 | key_to_blob(Key *key, u_char **blobp, u_int *lenp) | 731 | key_to_blob(const Key *key, u_char **blobp, u_int *lenp) |
730 | { | 732 | { |
731 | Buffer b; | 733 | Buffer b; |
732 | int len; | 734 | int len; |
@@ -768,9 +770,9 @@ key_to_blob(Key *key, u_char **blobp, u_int *lenp) | |||
768 | 770 | ||
769 | int | 771 | int |
770 | key_sign( | 772 | key_sign( |
771 | Key *key, | 773 | const Key *key, |
772 | u_char **sigp, u_int *lenp, | 774 | u_char **sigp, u_int *lenp, |
773 | u_char *data, u_int datalen) | 775 | const u_char *data, u_int datalen) |
774 | { | 776 | { |
775 | switch (key->type) { | 777 | switch (key->type) { |
776 | case KEY_DSA: | 778 | case KEY_DSA: |
@@ -792,9 +794,9 @@ key_sign( | |||
792 | */ | 794 | */ |
793 | int | 795 | int |
794 | key_verify( | 796 | key_verify( |
795 | Key *key, | 797 | const Key *key, |
796 | u_char *signature, u_int signaturelen, | 798 | const u_char *signature, u_int signaturelen, |
797 | u_char *data, u_int datalen) | 799 | const u_char *data, u_int datalen) |
798 | { | 800 | { |
799 | if (signaturelen == 0) | 801 | if (signaturelen == 0) |
800 | return -1; | 802 | return -1; |
@@ -815,7 +817,7 @@ key_verify( | |||
815 | 817 | ||
816 | /* Converts a private to a public key */ | 818 | /* Converts a private to a public key */ |
817 | Key * | 819 | Key * |
818 | key_demote(Key *k) | 820 | key_demote(const Key *k) |
819 | { | 821 | { |
820 | Key *pk; | 822 | Key *pk; |
821 | 823 | ||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: key.h,v 1.22 2003/06/24 08:23:46 markus Exp $ */ | 1 | /* $OpenBSD: key.h,v 1.23 2003/11/10 16:23:41 jakob Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved. | 4 | * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved. |
@@ -55,33 +55,33 @@ struct Key { | |||
55 | DSA *dsa; | 55 | DSA *dsa; |
56 | }; | 56 | }; |
57 | 57 | ||
58 | Key *key_new(int); | 58 | Key *key_new(int); |
59 | Key *key_new_private(int); | 59 | Key *key_new_private(int); |
60 | void key_free(Key *); | 60 | void key_free(Key *); |
61 | Key *key_demote(Key *); | 61 | Key *key_demote(const Key *); |
62 | int key_equal(Key *, Key *); | 62 | int key_equal(const Key *, const Key *); |
63 | char *key_fingerprint(Key *, enum fp_type, enum fp_rep); | 63 | char *key_fingerprint(const Key *, enum fp_type, enum fp_rep); |
64 | u_char *key_fingerprint_raw(Key *, enum fp_type, u_int *); | 64 | u_char *key_fingerprint_raw(const Key *, enum fp_type, u_int *); |
65 | char *key_type(Key *); | 65 | const char *key_type(const Key *); |
66 | int key_write(Key *, FILE *); | 66 | int key_write(const Key *, FILE *); |
67 | int key_read(Key *, char **); | 67 | int key_read(Key *, char **); |
68 | u_int key_size(Key *); | 68 | u_int key_size(const Key *); |
69 | 69 | ||
70 | Key *key_generate(int, u_int); | 70 | Key *key_generate(int, u_int); |
71 | Key *key_from_private(Key *); | 71 | Key *key_from_private(const Key *); |
72 | int key_type_from_name(char *); | 72 | int key_type_from_name(char *); |
73 | 73 | ||
74 | Key *key_from_blob(u_char *, u_int); | 74 | Key *key_from_blob(const u_char *, u_int); |
75 | int key_to_blob(Key *, u_char **, u_int *); | 75 | int key_to_blob(const Key *, u_char **, u_int *); |
76 | char *key_ssh_name(Key *); | 76 | const char *key_ssh_name(const Key *); |
77 | int key_names_valid2(const char *); | 77 | int key_names_valid2(const char *); |
78 | 78 | ||
79 | int key_sign(Key *, u_char **, u_int *, u_char *, u_int); | 79 | int key_sign(const Key *, u_char **, u_int *, const u_char *, u_int); |
80 | int key_verify(Key *, u_char *, u_int, u_char *, u_int); | 80 | int key_verify(const Key *, const u_char *, u_int, const u_char *, u_int); |
81 | 81 | ||
82 | int ssh_dss_sign(Key *, u_char **, u_int *, u_char *, u_int); | 82 | int ssh_dss_sign(const Key *, u_char **, u_int *, const u_char *, u_int); |
83 | int ssh_dss_verify(Key *, u_char *, u_int, u_char *, u_int); | 83 | int ssh_dss_verify(const Key *, const u_char *, u_int, const u_char *, u_int); |
84 | int ssh_rsa_sign(Key *, u_char **, u_int *, u_char *, u_int); | 84 | int ssh_rsa_sign(const Key *, u_char **, u_int *, const u_char *, u_int); |
85 | int ssh_rsa_verify(Key *, u_char *, u_int, u_char *, u_int); | 85 | int ssh_rsa_verify(const Key *, const u_char *, u_int, const u_char *, u_int); |
86 | 86 | ||
87 | #endif | 87 | #endif |
@@ -34,7 +34,7 @@ | |||
34 | */ | 34 | */ |
35 | 35 | ||
36 | #include "includes.h" | 36 | #include "includes.h" |
37 | RCSID("$OpenBSD: log.c,v 1.28 2003/05/24 09:02:22 djm Exp $"); | 37 | RCSID("$OpenBSD: log.c,v 1.29 2003/09/23 20:17:11 markus Exp $"); |
38 | 38 | ||
39 | #include "log.h" | 39 | #include "log.h" |
40 | #include "xmalloc.h" | 40 | #include "xmalloc.h" |
@@ -183,83 +183,6 @@ debug3(const char *fmt,...) | |||
183 | va_end(args); | 183 | va_end(args); |
184 | } | 184 | } |
185 | 185 | ||
186 | /* Fatal cleanup */ | ||
187 | |||
188 | struct fatal_cleanup { | ||
189 | struct fatal_cleanup *next; | ||
190 | void (*proc) (void *); | ||
191 | void *context; | ||
192 | }; | ||
193 | |||
194 | static struct fatal_cleanup *fatal_cleanups = NULL; | ||
195 | |||
196 | /* Registers a cleanup function to be called by fatal() before exiting. */ | ||
197 | |||
198 | void | ||
199 | fatal_add_cleanup(void (*proc) (void *), void *context) | ||
200 | { | ||
201 | struct fatal_cleanup *cu; | ||
202 | |||
203 | cu = xmalloc(sizeof(*cu)); | ||
204 | cu->proc = proc; | ||
205 | cu->context = context; | ||
206 | cu->next = fatal_cleanups; | ||
207 | fatal_cleanups = cu; | ||
208 | } | ||
209 | |||
210 | /* Removes a cleanup frunction to be called at fatal(). */ | ||
211 | |||
212 | void | ||
213 | fatal_remove_cleanup(void (*proc) (void *context), void *context) | ||
214 | { | ||
215 | struct fatal_cleanup **cup, *cu; | ||
216 | |||
217 | for (cup = &fatal_cleanups; *cup; cup = &cu->next) { | ||
218 | cu = *cup; | ||
219 | if (cu->proc == proc && cu->context == context) { | ||
220 | *cup = cu->next; | ||
221 | xfree(cu); | ||
222 | return; | ||
223 | } | ||
224 | } | ||
225 | fatal("fatal_remove_cleanup: no such cleanup function: 0x%lx 0x%lx", | ||
226 | (u_long) proc, (u_long) context); | ||
227 | } | ||
228 | |||
229 | /* Remove all cleanups, to be called after fork() */ | ||
230 | void | ||
231 | fatal_remove_all_cleanups(void) | ||
232 | { | ||
233 | struct fatal_cleanup *cu, *next_cu; | ||
234 | |||
235 | for (cu = fatal_cleanups; cu; cu = next_cu) { | ||
236 | next_cu = cu->next; | ||
237 | xfree(cu); | ||
238 | } | ||
239 | fatal_cleanups = NULL; | ||
240 | } | ||
241 | |||
242 | /* Cleanup and exit */ | ||
243 | void | ||
244 | fatal_cleanup(void) | ||
245 | { | ||
246 | struct fatal_cleanup *cu, *next_cu; | ||
247 | static int called = 0; | ||
248 | |||
249 | if (called) | ||
250 | exit(255); | ||
251 | called = 1; | ||
252 | /* Call cleanup functions. */ | ||
253 | for (cu = fatal_cleanups; cu; cu = next_cu) { | ||
254 | next_cu = cu->next; | ||
255 | debug("Calling cleanup 0x%lx(0x%lx)", | ||
256 | (u_long) cu->proc, (u_long) cu->context); | ||
257 | (*cu->proc) (cu->context); | ||
258 | } | ||
259 | exit(255); | ||
260 | } | ||
261 | |||
262 | |||
263 | /* | 186 | /* |
264 | * Initialize the log. | 187 | * Initialize the log. |
265 | */ | 188 | */ |
@@ -342,7 +265,7 @@ log_init(char *av0, LogLevel level, SyslogFacility facility, int on_stderr) | |||
342 | void | 265 | void |
343 | do_log(LogLevel level, const char *fmt, va_list args) | 266 | do_log(LogLevel level, const char *fmt, va_list args) |
344 | { | 267 | { |
345 | #ifdef OPENLOG_R | 268 | #if defined(HAVE_OPENLOG_R) && defined(SYSLOG_DATA_INIT) |
346 | struct syslog_data sdata = SYSLOG_DATA_INIT; | 269 | struct syslog_data sdata = SYSLOG_DATA_INIT; |
347 | #endif | 270 | #endif |
348 | char msgbuf[MSGBUFSIZ]; | 271 | char msgbuf[MSGBUFSIZ]; |
@@ -398,7 +321,7 @@ do_log(LogLevel level, const char *fmt, va_list args) | |||
398 | snprintf(msgbuf, sizeof msgbuf, "%s\r\n", fmtbuf); | 321 | snprintf(msgbuf, sizeof msgbuf, "%s\r\n", fmtbuf); |
399 | write(STDERR_FILENO, msgbuf, strlen(msgbuf)); | 322 | write(STDERR_FILENO, msgbuf, strlen(msgbuf)); |
400 | } else { | 323 | } else { |
401 | #ifdef OPENLOG_R | 324 | #if defined(HAVE_OPENLOG_R) && defined(SYSLOG_DATA_INIT) |
402 | openlog_r(argv0 ? argv0 : __progname, LOG_PID, log_facility, &sdata); | 325 | openlog_r(argv0 ? argv0 : __progname, LOG_PID, log_facility, &sdata); |
403 | syslog_r(pri, &sdata, "%.500s", fmtbuf); | 326 | syslog_r(pri, &sdata, "%.500s", fmtbuf); |
404 | closelog_r(&sdata); | 327 | closelog_r(&sdata); |
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: log.h,v 1.9 2003/04/08 20:21:28 itojun Exp $ */ | 1 | /* $OpenBSD: log.h,v 1.10 2003/09/23 20:17:11 markus Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> | 4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> |
@@ -61,11 +61,6 @@ void debug(const char *, ...) __attribute__((format(printf, 1, 2))); | |||
61 | void debug2(const char *, ...) __attribute__((format(printf, 1, 2))); | 61 | void debug2(const char *, ...) __attribute__((format(printf, 1, 2))); |
62 | void debug3(const char *, ...) __attribute__((format(printf, 1, 2))); | 62 | void debug3(const char *, ...) __attribute__((format(printf, 1, 2))); |
63 | 63 | ||
64 | void fatal_cleanup(void); | ||
65 | void fatal_add_cleanup(void (*) (void *), void *); | ||
66 | void fatal_remove_cleanup(void (*) (void *), void *); | ||
67 | void fatal_remove_all_cleanups(void); | ||
68 | |||
69 | void do_log(LogLevel, const char *, va_list); | 64 | void do_log(LogLevel, const char *, va_list); |
70 | 65 | void cleanup_exit(int); | |
71 | #endif | 66 | #endif |
diff --git a/loginrec.c b/loginrec.c index bdac3e959..71dbaea15 100644 --- a/loginrec.c +++ b/loginrec.c | |||
@@ -158,7 +158,7 @@ | |||
158 | #include "log.h" | 158 | #include "log.h" |
159 | #include "atomicio.h" | 159 | #include "atomicio.h" |
160 | 160 | ||
161 | RCSID("$Id: loginrec.c,v 1.52 2003/07/06 05:20:46 dtucker Exp $"); | 161 | RCSID("$Id: loginrec.c,v 1.54 2004/02/10 05:49:35 dtucker Exp $"); |
162 | 162 | ||
163 | #ifdef HAVE_UTIL_H | 163 | #ifdef HAVE_UTIL_H |
164 | # include <util.h> | 164 | # include <util.h> |
@@ -442,7 +442,7 @@ login_write (struct logininfo *li) | |||
442 | int | 442 | int |
443 | login_utmp_only(struct logininfo *li) | 443 | login_utmp_only(struct logininfo *li) |
444 | { | 444 | { |
445 | li->type = LTYPE_LOGIN; | 445 | li->type = LTYPE_LOGIN; |
446 | login_set_current_time(li); | 446 | login_set_current_time(li); |
447 | # ifdef USE_UTMP | 447 | # ifdef USE_UTMP |
448 | utmp_write_entry(li); | 448 | utmp_write_entry(li); |
@@ -1183,6 +1183,7 @@ wtmp_get_entry(struct logininfo *li) | |||
1183 | static int | 1183 | static int |
1184 | wtmpx_write(struct logininfo *li, struct utmpx *utx) | 1184 | wtmpx_write(struct logininfo *li, struct utmpx *utx) |
1185 | { | 1185 | { |
1186 | #ifndef HAVE_UPDWTMPX | ||
1186 | struct stat buf; | 1187 | struct stat buf; |
1187 | int fd, ret = 1; | 1188 | int fd, ret = 1; |
1188 | 1189 | ||
@@ -1202,6 +1203,10 @@ wtmpx_write(struct logininfo *li, struct utmpx *utx) | |||
1202 | (void)close(fd); | 1203 | (void)close(fd); |
1203 | 1204 | ||
1204 | return ret; | 1205 | return ret; |
1206 | #else | ||
1207 | updwtmpx(WTMPX_FILE, utx); | ||
1208 | return 1; | ||
1209 | #endif | ||
1205 | } | 1210 | } |
1206 | 1211 | ||
1207 | 1212 | ||
@@ -1534,7 +1539,7 @@ lastlog_get_entry(struct logininfo *li) | |||
1534 | lastlog_populate_entry(li, &last); | 1539 | lastlog_populate_entry(li, &last); |
1535 | return (1); | 1540 | return (1); |
1536 | case -1: | 1541 | case -1: |
1537 | error("%s: Error reading from %s: %s", __func__, | 1542 | error("%s: Error reading from %s: %s", __func__, |
1538 | LASTLOG_FILE, strerror(errno)); | 1543 | LASTLOG_FILE, strerror(errno)); |
1539 | return (0); | 1544 | return (0); |
1540 | default: | 1545 | default: |
@@ -23,7 +23,7 @@ | |||
23 | */ | 23 | */ |
24 | 24 | ||
25 | #include "includes.h" | 25 | #include "includes.h" |
26 | RCSID("$OpenBSD: mac.c,v 1.5 2002/05/16 22:02:50 markus Exp $"); | 26 | RCSID("$OpenBSD: mac.c,v 1.6 2003/09/18 13:02:21 miod Exp $"); |
27 | 27 | ||
28 | #include <openssl/hmac.h> | 28 | #include <openssl/hmac.h> |
29 | 29 | ||
@@ -77,7 +77,7 @@ mac_compute(Mac *mac, u_int32_t seqno, u_char *data, int datalen) | |||
77 | 77 | ||
78 | if (mac->key == NULL) | 78 | if (mac->key == NULL) |
79 | fatal("mac_compute: no key"); | 79 | fatal("mac_compute: no key"); |
80 | if (mac->mac_len > sizeof(m)) | 80 | if ((u_int)mac->mac_len > sizeof(m)) |
81 | fatal("mac_compute: mac too long"); | 81 | fatal("mac_compute: mac too long"); |
82 | HMAC_Init(&c, mac->key, mac->key_len, mac->md); | 82 | HMAC_Init(&c, mac->key, mac->key_len, mac->md); |
83 | PUT_32BIT(b, seqno); | 83 | PUT_32BIT(b, seqno); |
diff --git a/md5crypt.c b/md5crypt.c index e14d53ac1..8f2523e62 100644 --- a/md5crypt.c +++ b/md5crypt.c | |||
@@ -1,9 +1,9 @@ | |||
1 | /* | 1 | /* |
2 | * ---------------------------------------------------------------------------- | 2 | * ---------------------------------------------------------------------------- |
3 | * "THE BEER-WARE LICENSE" (Revision 42): | 3 | * "THE BEER-WARE LICENSE" (Revision 42): |
4 | * <phk@login.dknet.dk> wrote this file. As long as you retain this | 4 | * <phk@login.dknet.dk> wrote this file. As long as you retain this |
5 | * notice you can do whatever you want with this stuff. If we meet some | 5 | * notice you can do whatever you want with this stuff. If we meet some |
6 | * day, and you think this stuff is worth it, you can buy me a beer in | 6 | * day, and you think this stuff is worth it, you can buy me a beer in |
7 | * return. Poul-Henning Kamp | 7 | * return. Poul-Henning Kamp |
8 | * ---------------------------------------------------------------------------- | 8 | * ---------------------------------------------------------------------------- |
9 | */ | 9 | */ |
@@ -13,7 +13,7 @@ | |||
13 | #if defined(HAVE_MD5_PASSWORDS) && !defined(HAVE_MD5_CRYPT) | 13 | #if defined(HAVE_MD5_PASSWORDS) && !defined(HAVE_MD5_CRYPT) |
14 | #include <openssl/md5.h> | 14 | #include <openssl/md5.h> |
15 | 15 | ||
16 | RCSID("$Id: md5crypt.c,v 1.7 2003/05/30 06:58:23 dtucker Exp $"); | 16 | RCSID("$Id: md5crypt.c,v 1.9 2003/11/21 12:56:47 djm Exp $"); |
17 | 17 | ||
18 | /* 0 ... 63 => ascii - 64 */ | 18 | /* 0 ... 63 => ascii - 64 */ |
19 | static unsigned char itoa64[] = | 19 | static unsigned char itoa64[] = |
@@ -35,7 +35,7 @@ to64(unsigned long v, int n) | |||
35 | *s++ = itoa64[v&0x3f]; | 35 | *s++ = itoa64[v&0x3f]; |
36 | v >>= 6; | 36 | v >>= 6; |
37 | } | 37 | } |
38 | 38 | ||
39 | return (buf); | 39 | return (buf); |
40 | } | 40 | } |
41 | 41 | ||
diff --git a/mdoc2man.awk b/mdoc2man.awk index 856e2d7c5..9135af07e 100644 --- a/mdoc2man.awk +++ b/mdoc2man.awk | |||
@@ -76,19 +76,19 @@ function add(str) { | |||
76 | skip=1 | 76 | skip=1 |
77 | ext=1 | 77 | ext=1 |
78 | if(length(line)&&!(match(line," $")||prenl)) | 78 | if(length(line)&&!(match(line," $")||prenl)) |
79 | add(OFS) | 79 | add(OFS) |
80 | } else if(match(words[w],"^Xc$")) { | 80 | } else if(match(words[w],"^Xc$")) { |
81 | skip=1 | 81 | skip=1 |
82 | ext=0 | 82 | ext=0 |
83 | if(!extopt) | 83 | if(!extopt) |
84 | prenl++ | 84 | prenl++ |
85 | w=nwords | 85 | w=nwords |
86 | } else if(match(words[w],"^Bd$")) { | 86 | } else if(match(words[w],"^Bd$")) { |
87 | skip=1 | 87 | skip=1 |
88 | if(match(words[w+1],"-literal")) { | 88 | if(match(words[w+1],"-literal")) { |
89 | literal=1 | 89 | literal=1 |
90 | prenl++ | 90 | prenl++ |
91 | w=nwords | 91 | w=nwords |
92 | } | 92 | } |
93 | } else if(match(words[w],"^Ed$")) { | 93 | } else if(match(words[w],"^Ed$")) { |
94 | skip=1 | 94 | skip=1 |
@@ -96,7 +96,7 @@ function add(str) { | |||
96 | } else if(match(words[w],"^Ns$")) { | 96 | } else if(match(words[w],"^Ns$")) { |
97 | skip=1 | 97 | skip=1 |
98 | if(!nospace) | 98 | if(!nospace) |
99 | nospace=1 | 99 | nospace=1 |
100 | sub(" $","",line) | 100 | sub(" $","",line) |
101 | } else if(match(words[w],"^No$")) { | 101 | } else if(match(words[w],"^No$")) { |
102 | skip=1 | 102 | skip=1 |
@@ -107,20 +107,20 @@ function add(str) { | |||
107 | add("``") | 107 | add("``") |
108 | add(words[++w]) | 108 | add(words[++w]) |
109 | while(w<nwords&&!match(words[w+1],"^[\\.,]")) | 109 | while(w<nwords&&!match(words[w+1],"^[\\.,]")) |
110 | add(OFS words[++w]) | 110 | add(OFS words[++w]) |
111 | add("''") | 111 | add("''") |
112 | if(!nospace&&match(words[w+1],"^[\\.,]")) | 112 | if(!nospace&&match(words[w+1],"^[\\.,]")) |
113 | nospace=1 | 113 | nospace=1 |
114 | } else if(match(words[w],"^Sq|Ql$")) { | 114 | } else if(match(words[w],"^Sq|Ql$")) { |
115 | skip=1 | 115 | skip=1 |
116 | add("`" words[++w] "'") | 116 | add("`" words[++w] "'") |
117 | if(!nospace&&match(words[w+1],"^[\\.,]")) | 117 | if(!nospace&&match(words[w+1],"^[\\.,]")) |
118 | nospace=1 | 118 | nospace=1 |
119 | } else if(match(words[w],"^Oo$")) { | 119 | } else if(match(words[w],"^Oo$")) { |
120 | skip=1 | 120 | skip=1 |
121 | extopt=1 | 121 | extopt=1 |
122 | if(!nospace) | 122 | if(!nospace) |
123 | nospace=1 | 123 | nospace=1 |
124 | add("[") | 124 | add("[") |
125 | } else if(match(words[w],"^Oc$")) { | 125 | } else if(match(words[w],"^Oc$")) { |
126 | skip=1 | 126 | skip=1 |
@@ -129,9 +129,9 @@ function add(str) { | |||
129 | } | 129 | } |
130 | if(!skip) { | 130 | if(!skip) { |
131 | if(!nospace&&length(line)&&!(match(line," $")||prenl)) | 131 | if(!nospace&&length(line)&&!(match(line," $")||prenl)) |
132 | add(OFS) | 132 | add(OFS) |
133 | if(nospace==1) | 133 | if(nospace==1) |
134 | nospace=0 | 134 | nospace=0 |
135 | } | 135 | } |
136 | if(match(words[w],"^Dd$")) { | 136 | if(match(words[w],"^Dd$")) { |
137 | date=wtail() | 137 | date=wtail() |
@@ -158,69 +158,69 @@ function add(str) { | |||
158 | } else if(match(words[w],"^Re$")) { | 158 | } else if(match(words[w],"^Re$")) { |
159 | prenl++ | 159 | prenl++ |
160 | for(i=nrefauthors-1;i>0;i--) { | 160 | for(i=nrefauthors-1;i>0;i--) { |
161 | add(refauthors[i]) | 161 | add(refauthors[i]) |
162 | if(i>1) | 162 | if(i>1) |
163 | add(", ") | 163 | add(", ") |
164 | } | 164 | } |
165 | if(nrefauthors>1) | 165 | if(nrefauthors>1) |
166 | add(" and ") | 166 | add(" and ") |
167 | add(refauthors[0] ", \\fI" reftitle "\\fP") | 167 | add(refauthors[0] ", \\fI" reftitle "\\fP") |
168 | if(length(refissue)) | 168 | if(length(refissue)) |
169 | add(", " refissue) | 169 | add(", " refissue) |
170 | if(length(refdate)) | 170 | if(length(refdate)) |
171 | add(", " refdate) | 171 | add(", " refdate) |
172 | if(length(refopt)) | 172 | if(length(refopt)) |
173 | add(", " refopt) | 173 | add(", " refopt) |
174 | add(".") | 174 | add(".") |
175 | reference=0 | 175 | reference=0 |
176 | } else if(reference) { | 176 | } else if(reference) { |
177 | if(match(words[w],"^%A$")) { refauthors[nrefauthors++]=wtail() } | 177 | if(match(words[w],"^%A$")) { refauthors[nrefauthors++]=wtail() } |
178 | if(match(words[w],"^%T$")) { | 178 | if(match(words[w],"^%T$")) { |
179 | reftitle=wtail() | 179 | reftitle=wtail() |
180 | sub("^\"","",reftitle) | 180 | sub("^\"","",reftitle) |
181 | sub("\"$","",reftitle) | 181 | sub("\"$","",reftitle) |
182 | } | 182 | } |
183 | if(match(words[w],"^%N$")) { refissue=wtail() } | 183 | if(match(words[w],"^%N$")) { refissue=wtail() } |
184 | if(match(words[w],"^%D$")) { refdate=wtail() } | 184 | if(match(words[w],"^%D$")) { refdate=wtail() } |
185 | if(match(words[w],"^%O$")) { refopt=wtail() } | 185 | if(match(words[w],"^%O$")) { refopt=wtail() } |
186 | } else if(match(words[w],"^Nm$")) { | 186 | } else if(match(words[w],"^Nm$")) { |
187 | if(synopsis) { | 187 | if(synopsis) { |
188 | add(".br") | 188 | add(".br") |
189 | prenl++ | 189 | prenl++ |
190 | } | 190 | } |
191 | n=words[++w] | 191 | n=words[++w] |
192 | if(!length(name)) | 192 | if(!length(name)) |
193 | name=n | 193 | name=n |
194 | if(!length(n)) | 194 | if(!length(n)) |
195 | n=name | 195 | n=name |
196 | add("\\fB" n "\\fP") | 196 | add("\\fB" n "\\fP") |
197 | if(!nospace&&match(words[w+1],"^[\\.,]")) | 197 | if(!nospace&&match(words[w+1],"^[\\.,]")) |
198 | nospace=1 | 198 | nospace=1 |
199 | } else if(match(words[w],"^Nd$")) { | 199 | } else if(match(words[w],"^Nd$")) { |
200 | add("\\- " wtail()) | 200 | add("\\- " wtail()) |
201 | } else if(match(words[w],"^Fl$")) { | 201 | } else if(match(words[w],"^Fl$")) { |
202 | add("\\fB\\-" words[++w] "\\fP") | 202 | add("\\fB\\-" words[++w] "\\fP") |
203 | if(!nospace&&match(words[w+1],"^[\\.,]")) | 203 | if(!nospace&&match(words[w+1],"^[\\.,]")) |
204 | nospace=1 | 204 | nospace=1 |
205 | } else if(match(words[w],"^Ar$")) { | 205 | } else if(match(words[w],"^Ar$")) { |
206 | add("\\fI") | 206 | add("\\fI") |
207 | if(w==nwords) | 207 | if(w==nwords) |
208 | add("file ...\\fP") | 208 | add("file ...\\fP") |
209 | else { | 209 | else { |
210 | add(words[++w] "\\fP") | 210 | add(words[++w] "\\fP") |
211 | while(match(words[w+1],"^\\|$")) | 211 | while(match(words[w+1],"^\\|$")) |
212 | add(OFS words[++w] " \\fI" words[++w] "\\fP") | 212 | add(OFS words[++w] " \\fI" words[++w] "\\fP") |
213 | } | 213 | } |
214 | if(!nospace&&match(words[w+1],"^[\\.,]")) | 214 | if(!nospace&&match(words[w+1],"^[\\.,]")) |
215 | nospace=1 | 215 | nospace=1 |
216 | } else if(match(words[w],"^Cm$")) { | 216 | } else if(match(words[w],"^Cm$")) { |
217 | add("\\fB" words[++w] "\\fP") | 217 | add("\\fB" words[++w] "\\fP") |
218 | while(w<nwords&&match(words[w+1],"^[\\.,:;)]")) | 218 | while(w<nwords&&match(words[w+1],"^[\\.,:;)]")) |
219 | add(words[++w]) | 219 | add(words[++w]) |
220 | } else if(match(words[w],"^Op$")) { | 220 | } else if(match(words[w],"^Op$")) { |
221 | option=1 | 221 | option=1 |
222 | if(!nospace) | 222 | if(!nospace) |
223 | nospace=1 | 223 | nospace=1 |
224 | add("[") | 224 | add("[") |
225 | } else if(match(words[w],"^Pp$")) { | 225 | } else if(match(words[w],"^Pp$")) { |
226 | prenl++ | 226 | prenl++ |
@@ -232,10 +232,10 @@ function add(str) { | |||
232 | add("\\fI") | 232 | add("\\fI") |
233 | w++ | 233 | w++ |
234 | if(match(words[w],"^\\.")) | 234 | if(match(words[w],"^\\.")) |
235 | add("\\&") | 235 | add("\\&") |
236 | add(words[w] "\\fP") | 236 | add(words[w] "\\fP") |
237 | while(w<nwords&&match(words[w+1],"^[\\.,:;)]")) | 237 | while(w<nwords&&match(words[w+1],"^[\\.,:;)]")) |
238 | add(words[++w]) | 238 | add(words[++w]) |
239 | } else if(match(words[w],"^Dv$")) { | 239 | } else if(match(words[w],"^Dv$")) { |
240 | add(".BR") | 240 | add(".BR") |
241 | } else if(match(words[w],"^Em|Ev$")) { | 241 | } else if(match(words[w],"^Em|Ev$")) { |
@@ -254,69 +254,69 @@ function add(str) { | |||
254 | plain=1 | 254 | plain=1 |
255 | add("\\fB") | 255 | add("\\fB") |
256 | while(w<nwords) { | 256 | while(w<nwords) { |
257 | w++ | 257 | w++ |
258 | if(match(words[w],"^Op$")) { | 258 | if(match(words[w],"^Op$")) { |
259 | w++ | 259 | w++ |
260 | add("[") | 260 | add("[") |
261 | words[nwords]=words[nwords] "]" | 261 | words[nwords]=words[nwords] "]" |
262 | } | 262 | } |
263 | if(match(words[w],"^Ar$")) { | 263 | if(match(words[w],"^Ar$")) { |
264 | add("\\fI" words[++w] "\\fP") | 264 | add("\\fI" words[++w] "\\fP") |
265 | } else if(match(words[w],"^[\\.,]")) { | 265 | } else if(match(words[w],"^[\\.,]")) { |
266 | sub(" $","",line) | 266 | sub(" $","",line) |
267 | if(plain) { | 267 | if(plain) { |
268 | add("\\fP") | 268 | add("\\fP") |
269 | plain=0 | 269 | plain=0 |
270 | } | 270 | } |
271 | add(words[w]) | 271 | add(words[w]) |
272 | } else { | 272 | } else { |
273 | if(!plain) { | 273 | if(!plain) { |
274 | add("\\fB") | 274 | add("\\fB") |
275 | plain=1 | 275 | plain=1 |
276 | } | 276 | } |
277 | add(words[w]) | 277 | add(words[w]) |
278 | } | 278 | } |
279 | if(!nospace) | 279 | if(!nospace) |
280 | add(OFS) | 280 | add(OFS) |
281 | } | 281 | } |
282 | sub(" $","",line) | 282 | sub(" $","",line) |
283 | if(plain) | 283 | if(plain) |
284 | add("\\fP") | 284 | add("\\fP") |
285 | } else if(match(words[w],"^Bl$")) { | 285 | } else if(match(words[w],"^Bl$")) { |
286 | oldoptlist=optlist | 286 | oldoptlist=optlist |
287 | if(match(words[w+1],"-bullet")) | 287 | if(match(words[w+1],"-bullet")) |
288 | optlist=1 | 288 | optlist=1 |
289 | else if(match(words[w+1],"-enum")) { | 289 | else if(match(words[w+1],"-enum")) { |
290 | optlist=2 | 290 | optlist=2 |
291 | enum=0 | 291 | enum=0 |
292 | } else if(match(words[w+1],"-tag")) | 292 | } else if(match(words[w+1],"-tag")) |
293 | optlist=3 | 293 | optlist=3 |
294 | else if(match(words[w+1],"-item")) | 294 | else if(match(words[w+1],"-item")) |
295 | optlist=4 | 295 | optlist=4 |
296 | else if(match(words[w+1],"-bullet")) | 296 | else if(match(words[w+1],"-bullet")) |
297 | optlist=1 | 297 | optlist=1 |
298 | w=nwords | 298 | w=nwords |
299 | } else if(match(words[w],"^El$")) { | 299 | } else if(match(words[w],"^El$")) { |
300 | optlist=oldoptlist | 300 | optlist=oldoptlist |
301 | } else if(match(words[w],"^It$")&&optlist) { | 301 | } else if(match(words[w],"^It$")&&optlist) { |
302 | if(optlist==1) | 302 | if(optlist==1) |
303 | add(".IP \\(bu") | 303 | add(".IP \\(bu") |
304 | else if(optlist==2) | 304 | else if(optlist==2) |
305 | add(".IP " ++enum ".") | 305 | add(".IP " ++enum ".") |
306 | else if(optlist==3) { | 306 | else if(optlist==3) { |
307 | add(".TP") | 307 | add(".TP") |
308 | prenl++ | 308 | prenl++ |
309 | if(match(words[w+1],"^Pa|Ev$")) { | 309 | if(match(words[w+1],"^Pa|Ev$")) { |
310 | add(".B") | 310 | add(".B") |
311 | w++ | 311 | w++ |
312 | } | 312 | } |
313 | } else if(optlist==4) | 313 | } else if(optlist==4) |
314 | add(".IP") | 314 | add(".IP") |
315 | } else if(match(words[w],"^Sm$")) { | 315 | } else if(match(words[w],"^Sm$")) { |
316 | if(match(words[w+1],"off")) | 316 | if(match(words[w+1],"off")) |
317 | nospace=2 | 317 | nospace=2 |
318 | else if(match(words[w+1],"on")) | 318 | else if(match(words[w+1],"on")) |
319 | nospace=0 | 319 | nospace=0 |
320 | w++ | 320 | w++ |
321 | } else if(!skip) { | 321 | } else if(!skip) { |
322 | add(words[w]) | 322 | add(words[w]) |
@@ -23,7 +23,7 @@ | |||
23 | */ | 23 | */ |
24 | 24 | ||
25 | #include "includes.h" | 25 | #include "includes.h" |
26 | RCSID("$OpenBSD: misc.c,v 1.22 2003/09/18 08:49:45 markus Exp $"); | 26 | RCSID("$OpenBSD: misc.c,v 1.23 2003/10/28 09:08:06 markus Exp $"); |
27 | 27 | ||
28 | #include "misc.h" | 28 | #include "misc.h" |
29 | #include "log.h" | 29 | #include "log.h" |
@@ -97,7 +97,7 @@ set_nodelay(int fd) | |||
97 | 97 | ||
98 | optlen = sizeof opt; | 98 | optlen = sizeof opt; |
99 | if (getsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &opt, &optlen) == -1) { | 99 | if (getsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &opt, &optlen) == -1) { |
100 | error("getsockopt TCP_NODELAY: %.100s", strerror(errno)); | 100 | debug("getsockopt TCP_NODELAY: %.100s", strerror(errno)); |
101 | return; | 101 | return; |
102 | } | 102 | } |
103 | if (opt == 1) { | 103 | if (opt == 1) { |
diff --git a/mkinstalldirs b/mkinstalldirs index 614ef33d8..47d5f43fe 100755 --- a/mkinstalldirs +++ b/mkinstalldirs | |||
@@ -4,7 +4,7 @@ | |||
4 | # Created: 1993-05-16 | 4 | # Created: 1993-05-16 |
5 | # Public domain | 5 | # Public domain |
6 | 6 | ||
7 | # $Id: mkinstalldirs,v 1.1 2000/05/20 05:33:45 damien Exp $ | 7 | # $Id: mkinstalldirs,v 1.2 2003/11/21 12:48:55 djm Exp $ |
8 | 8 | ||
9 | errstatus=0 | 9 | errstatus=0 |
10 | 10 | ||
@@ -22,13 +22,13 @@ do | |||
22 | esac | 22 | esac |
23 | 23 | ||
24 | if test ! -d "$pathcomp"; then | 24 | if test ! -d "$pathcomp"; then |
25 | echo "mkdir $pathcomp" | 25 | echo "mkdir $pathcomp" |
26 | 26 | ||
27 | mkdir "$pathcomp" || lasterr=$? | 27 | mkdir "$pathcomp" || lasterr=$? |
28 | 28 | ||
29 | if test ! -d "$pathcomp"; then | 29 | if test ! -d "$pathcomp"; then |
30 | errstatus=$lasterr | 30 | errstatus=$lasterr |
31 | fi | 31 | fi |
32 | fi | 32 | fi |
33 | 33 | ||
34 | pathcomp="$pathcomp/" | 34 | pathcomp="$pathcomp/" |
@@ -1,158 +1,186 @@ | |||
1 | # $OpenBSD: moduli,v 1.1 2001/06/22 22:07:54 provos Exp $ | 1 | # $OpenBSD: moduli,v 1.2 2004/01/28 04:44:00 dtucker Exp $ |
2 | 2 | ||
3 | # Time Type Tests Tries Size Generator Modulus | 3 | # Time Type Tests Tries Size Generator Modulus |
4 | 20010328182134 2 6 100 1023 2 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF5449C221CB | 4 | 20031210004503 2 6 100 1023 2 DCF93A0B883972EC0E19989AC5A2CE310E1D37717E8D9571BB7623731866E61EF75A2E27898B057F9891C2E27A639C3F29B60814581CD3B2CA3986D2683705577D45C2E7E52DC81C7A171876E5CEA74B1448BFDFAF18828EFD2519F14E45E3826634AF1949E5B535CC829A483B8A76223E5D490A257F05BDFF16F2FB22C583AB |
5 | 20010328182222 2 6 100 1023 2 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF5449C95A43 | 5 | 20031210004553 2 6 100 1023 5 DCF93A0B883972EC0E19989AC5A2CE310E1D37717E8D9571BB7623731866E61EF75A2E27898B057F9891C2E27A639C3F29B60814581CD3B2CA3986D2683705577D45C2E7E52DC81C7A171876E5CEA74B1448BFDFAF18828EFD2519F14E45E3826634AF1949E5B535CC829A483B8A76223E5D490A257F05BDFF16F2FB22D0A0D7 |
6 | 20010328182256 2 6 100 1023 2 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF5449CC8CFB | 6 | 20031210004628 2 6 100 1023 5 DCF93A0B883972EC0E19989AC5A2CE310E1D37717E8D9571BB7623731866E61EF75A2E27898B057F9891C2E27A639C3F29B60814581CD3B2CA3986D2683705577D45C2E7E52DC81C7A171876E5CEA74B1448BFDFAF18828EFD2519F14E45E3826634AF1949E5B535CC829A483B8A76223E5D490A257F05BDFF16F2FB22D6CB97 |
7 | 20010328182409 2 6 100 1023 5 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF5449D9BDB7 | 7 | 20031210004801 2 6 100 1023 5 DCF93A0B883972EC0E19989AC5A2CE310E1D37717E8D9571BB7623731866E61EF75A2E27898B057F9891C2E27A639C3F29B60814581CD3B2CA3986D2683705577D45C2E7E52DC81C7A171876E5CEA74B1448BFDFAF18828EFD2519F14E45E3826634AF1949E5B535CC829A483B8A76223E5D490A257F05BDFF16F2FB22F2D1B7 |
8 | 20010328182628 2 6 100 1023 2 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF5449FB6EF3 | 8 | 20031210004827 2 6 100 1023 2 DCF93A0B883972EC0E19989AC5A2CE310E1D37717E8D9571BB7623731866E61EF75A2E27898B057F9891C2E27A639C3F29B60814581CD3B2CA3986D2683705577D45C2E7E52DC81C7A171876E5CEA74B1448BFDFAF18828EFD2519F14E45E3826634AF1949E5B535CC829A483B8A76223E5D490A257F05BDFF16F2FB22F5615B |
9 | 20010328182708 2 6 100 1023 2 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF544A000153 | 9 | 20031210004919 2 6 100 1023 2 DCF93A0B883972EC0E19989AC5A2CE310E1D37717E8D9571BB7623731866E61EF75A2E27898B057F9891C2E27A639C3F29B60814581CD3B2CA3986D2683705577D45C2E7E52DC81C7A171876E5CEA74B1448BFDFAF18828EFD2519F14E45E3826634AF1949E5B535CC829A483B8A76223E5D490A257F05BDFF16F2FB230138C3 |
10 | 20010328182758 2 6 100 1023 2 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF544A06E9EB | 10 | 20031210004952 2 6 100 1023 2 DCF93A0B883972EC0E19989AC5A2CE310E1D37717E8D9571BB7623731866E61EF75A2E27898B057F9891C2E27A639C3F29B60814581CD3B2CA3986D2683705577D45C2E7E52DC81C7A171876E5CEA74B1448BFDFAF18828EFD2519F14E45E3826634AF1949E5B535CC829A483B8A76223E5D490A257F05BDFF16F2FB2305F6A3 |
11 | 20010328182946 2 6 100 1023 2 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF544A1F2C93 | 11 | 20031210005018 2 6 100 1023 2 DCF93A0B883972EC0E19989AC5A2CE310E1D37717E8D9571BB7623731866E61EF75A2E27898B057F9891C2E27A639C3F29B60814581CD3B2CA3986D2683705577D45C2E7E52DC81C7A171876E5CEA74B1448BFDFAF18828EFD2519F14E45E3826634AF1949E5B535CC829A483B8A76223E5D490A257F05BDFF16F2FB230801DB |
12 | 20010328183015 2 6 100 1023 2 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF544A206ADB | 12 | 20031210005043 2 6 100 1023 2 DCF93A0B883972EC0E19989AC5A2CE310E1D37717E8D9571BB7623731866E61EF75A2E27898B057F9891C2E27A639C3F29B60814581CD3B2CA3986D2683705577D45C2E7E52DC81C7A171876E5CEA74B1448BFDFAF18828EFD2519F14E45E3826634AF1949E5B535CC829A483B8A76223E5D490A257F05BDFF16F2FB230A0383 |
13 | 20010328183112 2 6 100 1023 2 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF544A2A109B | 13 | 20031210005147 2 6 100 1023 5 DCF93A0B883972EC0E19989AC5A2CE310E1D37717E8D9571BB7623731866E61EF75A2E27898B057F9891C2E27A639C3F29B60814581CD3B2CA3986D2683705577D45C2E7E52DC81C7A171876E5CEA74B1448BFDFAF18828EFD2519F14E45E3826634AF1949E5B535CC829A483B8A76223E5D490A257F05BDFF16F2FB231C3A7F |
14 | 20010328183143 2 6 100 1023 2 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF544A2BC1BB | 14 | 20031210005230 2 6 100 1023 2 DCF93A0B883972EC0E19989AC5A2CE310E1D37717E8D9571BB7623731866E61EF75A2E27898B057F9891C2E27A639C3F29B60814581CD3B2CA3986D2683705577D45C2E7E52DC81C7A171876E5CEA74B1448BFDFAF18828EFD2519F14E45E3826634AF1949E5B535CC829A483B8A76223E5D490A257F05BDFF16F2FB23249C1B |
15 | 20010328183301 2 6 100 1023 2 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF544A3ADCEB | 15 | 20031210005301 2 6 100 1023 5 DCF93A0B883972EC0E19989AC5A2CE310E1D37717E8D9571BB7623731866E61EF75A2E27898B057F9891C2E27A639C3F29B60814581CD3B2CA3986D2683705577D45C2E7E52DC81C7A171876E5CEA74B1448BFDFAF18828EFD2519F14E45E3826634AF1949E5B535CC829A483B8A76223E5D490A257F05BDFF16F2FB23288F0F |
16 | 20010328183532 2 6 100 1023 5 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF544A5E8BAF | 16 | 20031210005438 2 6 100 1023 2 DCF93A0B883972EC0E19989AC5A2CE310E1D37717E8D9571BB7623731866E61EF75A2E27898B057F9891C2E27A639C3F29B60814581CD3B2CA3986D2683705577D45C2E7E52DC81C7A171876E5CEA74B1448BFDFAF18828EFD2519F14E45E3826634AF1949E5B535CC829A483B8A76223E5D490A257F05BDFF16F2FB2344EC9B |
17 | 20010328183646 2 6 100 1023 5 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF544A6D54D7 | 17 | 20031210005548 2 6 100 1023 2 DCF93A0B883972EC0E19989AC5A2CE310E1D37717E8D9571BB7623731866E61EF75A2E27898B057F9891C2E27A639C3F29B60814581CD3B2CA3986D2683705577D45C2E7E52DC81C7A171876E5CEA74B1448BFDFAF18828EFD2519F14E45E3826634AF1949E5B535CC829A483B8A76223E5D490A257F05BDFF16F2FB235892F3 |
18 | 20010328183712 2 6 100 1023 5 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF544A6EC46F | 18 | 20031210005700 2 6 100 1023 2 DCF93A0B883972EC0E19989AC5A2CE310E1D37717E8D9571BB7623731866E61EF75A2E27898B057F9891C2E27A639C3F29B60814581CD3B2CA3986D2683705577D45C2E7E52DC81C7A171876E5CEA74B1448BFDFAF18828EFD2519F14E45E3826634AF1949E5B535CC829A483B8A76223E5D490A257F05BDFF16F2FB236C3F03 |
19 | 20010328184223 2 6 100 1023 5 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF544AB8626F | 19 | 20031210005841 2 6 100 1023 2 DCF93A0B883972EC0E19989AC5A2CE310E1D37717E8D9571BB7623731866E61EF75A2E27898B057F9891C2E27A639C3F29B60814581CD3B2CA3986D2683705577D45C2E7E52DC81C7A171876E5CEA74B1448BFDFAF18828EFD2519F14E45E3826634AF1949E5B535CC829A483B8A76223E5D490A257F05BDFF16F2FB238BC713 |
20 | 20010328184337 2 6 100 1023 2 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF544AC7DC73 | 20 | 20031210010040 2 6 100 1023 2 DCF93A0B883972EC0E19989AC5A2CE310E1D37717E8D9571BB7623731866E61EF75A2E27898B057F9891C2E27A639C3F29B60814581CD3B2CA3986D2683705577D45C2E7E52DC81C7A171876E5CEA74B1448BFDFAF18828EFD2519F14E45E3826634AF1949E5B535CC829A483B8A76223E5D490A257F05BDFF16F2FB23B466C3 |
21 | 20010328184634 2 6 100 1023 2 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF544AEFF073 | 21 | 20031210010119 2 6 100 1023 2 DCF93A0B883972EC0E19989AC5A2CE310E1D37717E8D9571BB7623731866E61EF75A2E27898B057F9891C2E27A639C3F29B60814581CD3B2CA3986D2683705577D45C2E7E52DC81C7A171876E5CEA74B1448BFDFAF18828EFD2519F14E45E3826634AF1949E5B535CC829A483B8A76223E5D490A257F05BDFF16F2FB23BB1F8B |
22 | 20010328184714 2 6 100 1023 5 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF544AF594FF | 22 | 20031210010313 2 6 100 1023 2 DCF93A0B883972EC0E19989AC5A2CE310E1D37717E8D9571BB7623731866E61EF75A2E27898B057F9891C2E27A639C3F29B60814581CD3B2CA3986D2683705577D45C2E7E52DC81C7A171876E5CEA74B1448BFDFAF18828EFD2519F14E45E3826634AF1949E5B535CC829A483B8A76223E5D490A257F05BDFF16F2FB23E03DDB |
23 | 20010328184807 2 6 100 1023 2 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF544AFEEC53 | 23 | 20031210010335 2 6 100 1023 2 DCF93A0B883972EC0E19989AC5A2CE310E1D37717E8D9571BB7623731866E61EF75A2E27898B057F9891C2E27A639C3F29B60814581CD3B2CA3986D2683705577D45C2E7E52DC81C7A171876E5CEA74B1448BFDFAF18828EFD2519F14E45E3826634AF1949E5B535CC829A483B8A76223E5D490A257F05BDFF16F2FB23E130AB |
24 | 20010328184910 2 6 100 1023 2 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF544B0B3513 | 24 | 20031210010422 2 6 100 1023 2 DCF93A0B883972EC0E19989AC5A2CE310E1D37717E8D9571BB7623731866E61EF75A2E27898B057F9891C2E27A639C3F29B60814581CD3B2CA3986D2683705577D45C2E7E52DC81C7A171876E5CEA74B1448BFDFAF18828EFD2519F14E45E3826634AF1949E5B535CC829A483B8A76223E5D490A257F05BDFF16F2FB23EA20A3 |
25 | 20010328185030 2 6 100 1023 5 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF544B165707 | 25 | 20031210010500 2 6 100 1023 2 DCF93A0B883972EC0E19989AC5A2CE310E1D37717E8D9571BB7623731866E61EF75A2E27898B057F9891C2E27A639C3F29B60814581CD3B2CA3986D2683705577D45C2E7E52DC81C7A171876E5CEA74B1448BFDFAF18828EFD2519F14E45E3826634AF1949E5B535CC829A483B8A76223E5D490A257F05BDFF16F2FB23F1807B |
26 | 20010328185334 2 6 100 1023 2 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF544B3A9673 | 26 | 20031210010628 2 6 100 1023 5 DCF93A0B883972EC0E19989AC5A2CE310E1D37717E8D9571BB7623731866E61EF75A2E27898B057F9891C2E27A639C3F29B60814581CD3B2CA3986D2683705577D45C2E7E52DC81C7A171876E5CEA74B1448BFDFAF18828EFD2519F14E45E3826634AF1949E5B535CC829A483B8A76223E5D490A257F05BDFF16F2FB2409DC07 |
27 | 20010328185423 2 6 100 1023 2 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF544B426623 | 27 | 20031210010759 2 6 100 1023 5 DCF93A0B883972EC0E19989AC5A2CE310E1D37717E8D9571BB7623731866E61EF75A2E27898B057F9891C2E27A639C3F29B60814581CD3B2CA3986D2683705577D45C2E7E52DC81C7A171876E5CEA74B1448BFDFAF18828EFD2519F14E45E3826634AF1949E5B535CC829A483B8A76223E5D490A257F05BDFF16F2FB2425487F |
28 | 20010328185451 2 6 100 1023 2 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF544B4427DB | 28 | 20031210010906 2 6 100 1023 5 DCF93A0B883972EC0E19989AC5A2CE310E1D37717E8D9571BB7623731866E61EF75A2E27898B057F9891C2E27A639C3F29B60814581CD3B2CA3986D2683705577D45C2E7E52DC81C7A171876E5CEA74B1448BFDFAF18828EFD2519F14E45E3826634AF1949E5B535CC829A483B8A76223E5D490A257F05BDFF16F2FB24397A3F |
29 | 20010328185637 2 6 100 1023 5 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF544B5E3FC7 | 29 | 20031210010945 2 6 100 1023 5 DCF93A0B883972EC0E19989AC5A2CE310E1D37717E8D9571BB7623731866E61EF75A2E27898B057F9891C2E27A639C3F29B60814581CD3B2CA3986D2683705577D45C2E7E52DC81C7A171876E5CEA74B1448BFDFAF18828EFD2519F14E45E3826634AF1949E5B535CC829A483B8A76223E5D490A257F05BDFF16F2FB2440ABF7 |
30 | 20010328185720 2 6 100 1023 2 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF544B65964B | 30 | 20031210011017 2 6 100 1023 2 DCF93A0B883972EC0E19989AC5A2CE310E1D37717E8D9571BB7623731866E61EF75A2E27898B057F9891C2E27A639C3F29B60814581CD3B2CA3986D2683705577D45C2E7E52DC81C7A171876E5CEA74B1448BFDFAF18828EFD2519F14E45E3826634AF1949E5B535CC829A483B8A76223E5D490A257F05BDFF16F2FB2445C00B |
31 | 20010328185757 2 6 100 1023 2 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF544B6A9373 | 31 | 20031210011059 2 6 100 1023 5 DCF93A0B883972EC0E19989AC5A2CE310E1D37717E8D9571BB7623731866E61EF75A2E27898B057F9891C2E27A639C3F29B60814581CD3B2CA3986D2683705577D45C2E7E52DC81C7A171876E5CEA74B1448BFDFAF18828EFD2519F14E45E3826634AF1949E5B535CC829A483B8A76223E5D490A257F05BDFF16F2FB244E4EBF |
32 | 20010328185844 2 6 100 1023 2 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF544B7203B3 | 32 | 20031210011158 2 6 100 1023 2 DCF93A0B883972EC0E19989AC5A2CE310E1D37717E8D9571BB7623731866E61EF75A2E27898B057F9891C2E27A639C3F29B60814581CD3B2CA3986D2683705577D45C2E7E52DC81C7A171876E5CEA74B1448BFDFAF18828EFD2519F14E45E3826634AF1949E5B535CC829A483B8A76223E5D490A257F05BDFF16F2FB245E056B |
33 | 20010328185933 2 6 100 1023 5 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF544B7A9FFF | 33 | 20031210011340 2 6 100 1023 2 DCF93A0B883972EC0E19989AC5A2CE310E1D37717E8D9571BB7623731866E61EF75A2E27898B057F9891C2E27A639C3F29B60814581CD3B2CA3986D2683705577D45C2E7E52DC81C7A171876E5CEA74B1448BFDFAF18828EFD2519F14E45E3826634AF1949E5B535CC829A483B8A76223E5D490A257F05BDFF16F2FB24808F43 |
34 | 20010328190006 2 6 100 1023 2 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF544B7DAAD3 | 34 | 20031210011408 2 6 100 1023 2 DCF93A0B883972EC0E19989AC5A2CE310E1D37717E8D9571BB7623731866E61EF75A2E27898B057F9891C2E27A639C3F29B60814581CD3B2CA3986D2683705577D45C2E7E52DC81C7A171876E5CEA74B1448BFDFAF18828EFD2519F14E45E3826634AF1949E5B535CC829A483B8A76223E5D490A257F05BDFF16F2FB24834C0B |
35 | 20010328190054 2 6 100 1023 5 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF544B855C2F | 35 | 20031210011517 2 6 100 1023 2 DCF93A0B883972EC0E19989AC5A2CE310E1D37717E8D9571BB7623731866E61EF75A2E27898B057F9891C2E27A639C3F29B60814581CD3B2CA3986D2683705577D45C2E7E52DC81C7A171876E5CEA74B1448BFDFAF18828EFD2519F14E45E3826634AF1949E5B535CC829A483B8A76223E5D490A257F05BDFF16F2FB2495148B |
36 | 20010328190139 2 6 100 1023 2 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF544B8C53EB | 36 | 20031210011632 2 6 100 1023 5 DCF93A0B883972EC0E19989AC5A2CE310E1D37717E8D9571BB7623731866E61EF75A2E27898B057F9891C2E27A639C3F29B60814581CD3B2CA3986D2683705577D45C2E7E52DC81C7A171876E5CEA74B1448BFDFAF18828EFD2519F14E45E3826634AF1949E5B535CC829A483B8A76223E5D490A257F05BDFF16F2FB24A89B27 |
37 | 20010328190304 2 6 100 1023 2 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF544B9F26C3 | 37 | 20031210014802 2 6 100 1535 2 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A772D3B9DD3 |
38 | 20010328190329 2 6 100 1023 5 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF544BA00697 | 38 | 20031210015017 2 6 100 1535 2 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A772D463D83 |
39 | 20010328190412 2 6 100 1023 2 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF544BA54313 | 39 | 20031210015524 2 6 100 1535 2 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A772D68288B |
40 | 20010328190506 2 6 100 1023 5 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF544BAEEF27 | 40 | 20031210015701 2 6 100 1535 2 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A772D6C64C3 |
41 | 20010328190550 2 6 100 1023 2 DCFAC4EFE89F5B082962AB9A67E8D63E84FA491E5D3874978815868595469163DA0661E6208A8C2CD4F83893B53864ADFD2154E8D8EFA146BAD808562E4BF6C90348FD79EEB3387D93FC7943BC450BA55399BA3CF3DFBD0D4E71800007B0E9D5F12E7A2CB7EA4E49812E715F8DC570C478DC2DEB1C49B0AE87A5DF544BB5CE0B | 41 | 20031210020258 2 6 100 1535 2 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A772D94316B |
42 | 20010328200734 2 6 100 1534 5 6DFD16D9669EDAF42EF5D4EED82AA84B0541DEC2045B6AF55021A184F32BCADE614A114137022C9A8B41C09AFC38199E7305864F70A8708F37FC2127264ECF4FA32391F243CC62B89602D3813082679E5BDF496BA9DFA4C818AD21EC261B6F11841E6F2DE1574CE95095841DAF052868CCD5E9BFCA543E0934B50A76A598E693136DE2D479AEF3785D97BAFF4FB85AB8D46DA424C4CC5E11ABCAF718837E16350982BF8A27728318EC02C71ED164F57CDB121B72614B7B7C406613EC33395187 | 42 | 20031210022106 2 6 100 1535 2 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A772E1F8453 |
43 | 20010328201124 2 6 100 1534 2 6DFD16D9669EDAF42EF5D4EED82AA84B0541DEC2045B6AF55021A184F32BCADE614A114137022C9A8B41C09AFC38199E7305864F70A8708F37FC2127264ECF4FA32391F243CC62B89602D3813082679E5BDF496BA9DFA4C818AD21EC261B6F11841E6F2DE1574CE95095841DAF052868CCD5E9BFCA543E0934B50A76A598E693136DE2D479AEF3785D97BAFF4FB85AB8D46DA424C4CC5E11ABCAF718837E16350982BF8A27728318EC02C71ED164F57CDB121B72614B7B7C406613EC334ED15B | 43 | 20031210022738 2 6 100 1535 5 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A772E4BDAC7 |
44 | 20010328201358 2 6 100 1534 5 6DFD16D9669EDAF42EF5D4EED82AA84B0541DEC2045B6AF55021A184F32BCADE614A114137022C9A8B41C09AFC38199E7305864F70A8708F37FC2127264ECF4FA32391F243CC62B89602D3813082679E5BDF496BA9DFA4C818AD21EC261B6F11841E6F2DE1574CE95095841DAF052868CCD5E9BFCA543E0934B50A76A598E693136DE2D479AEF3785D97BAFF4FB85AB8D46DA424C4CC5E11ABCAF718837E16350982BF8A27728318EC02C71ED164F57CDB121B72614B7B7C406613EC3359FC07 | 44 | 20031210022948 2 6 100 1535 5 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A772E5541E7 |
45 | 20010328201537 2 6 100 1534 2 6DFD16D9669EDAF42EF5D4EED82AA84B0541DEC2045B6AF55021A184F32BCADE614A114137022C9A8B41C09AFC38199E7305864F70A8708F37FC2127264ECF4FA32391F243CC62B89602D3813082679E5BDF496BA9DFA4C818AD21EC261B6F11841E6F2DE1574CE95095841DAF052868CCD5E9BFCA543E0934B50A76A598E693136DE2D479AEF3785D97BAFF4FB85AB8D46DA424C4CC5E11ABCAF718837E16350982BF8A27728318EC02C71ED164F57CDB121B72614B7B7C406613EC335F7A83 | 45 | 20031210023056 2 6 100 1535 2 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A772E56464B |
46 | 20010328201829 2 6 100 1534 2 6DFD16D9669EDAF42EF5D4EED82AA84B0541DEC2045B6AF55021A184F32BCADE614A114137022C9A8B41C09AFC38199E7305864F70A8708F37FC2127264ECF4FA32391F243CC62B89602D3813082679E5BDF496BA9DFA4C818AD21EC261B6F11841E6F2DE1574CE95095841DAF052868CCD5E9BFCA543E0934B50A76A598E693136DE2D479AEF3785D97BAFF4FB85AB8D46DA424C4CC5E11ABCAF718837E16350982BF8A27728318EC02C71ED164F57CDB121B72614B7B7C406613EC336D1433 | 46 | 20031210023414 2 6 100 1535 2 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A772E695C8B |
47 | 20010328202120 2 6 100 1534 2 6DFD16D9669EDAF42EF5D4EED82AA84B0541DEC2045B6AF55021A184F32BCADE614A114137022C9A8B41C09AFC38199E7305864F70A8708F37FC2127264ECF4FA32391F243CC62B89602D3813082679E5BDF496BA9DFA4C818AD21EC261B6F11841E6F2DE1574CE95095841DAF052868CCD5E9BFCA543E0934B50A76A598E693136DE2D479AEF3785D97BAFF4FB85AB8D46DA424C4CC5E11ABCAF718837E16350982BF8A27728318EC02C71ED164F57CDB121B72614B7B7C406613EC337B253B | 47 | 20031210024039 2 6 100 1535 5 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A772E939ABF |
48 | 20010328202848 2 6 100 1534 5 6DFD16D9669EDAF42EF5D4EED82AA84B0541DEC2045B6AF55021A184F32BCADE614A114137022C9A8B41C09AFC38199E7305864F70A8708F37FC2127264ECF4FA32391F243CC62B89602D3813082679E5BDF496BA9DFA4C818AD21EC261B6F11841E6F2DE1574CE95095841DAF052868CCD5E9BFCA543E0934B50A76A598E693136DE2D479AEF3785D97BAFF4FB85AB8D46DA424C4CC5E11ABCAF718837E16350982BF8A27728318EC02C71ED164F57CDB121B72614B7B7C406613EC33A3D43F | 48 | 20031210024457 2 6 100 1535 2 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A772EAE295B |
49 | 20010328203335 2 6 100 1534 2 6DFD16D9669EDAF42EF5D4EED82AA84B0541DEC2045B6AF55021A184F32BCADE614A114137022C9A8B41C09AFC38199E7305864F70A8708F37FC2127264ECF4FA32391F243CC62B89602D3813082679E5BDF496BA9DFA4C818AD21EC261B6F11841E6F2DE1574CE95095841DAF052868CCD5E9BFCA543E0934B50A76A598E693136DE2D479AEF3785D97BAFF4FB85AB8D46DA424C4CC5E11ABCAF718837E16350982BF8A27728318EC02C71ED164F57CDB121B72614B7B7C406613EC33BF24A3 | 49 | 20031210024630 2 6 100 1535 2 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A772EB2BDFB |
50 | 20010328204332 2 6 100 1534 2 6DFD16D9669EDAF42EF5D4EED82AA84B0541DEC2045B6AF55021A184F32BCADE614A114137022C9A8B41C09AFC38199E7305864F70A8708F37FC2127264ECF4FA32391F243CC62B89602D3813082679E5BDF496BA9DFA4C818AD21EC261B6F11841E6F2DE1574CE95095841DAF052868CCD5E9BFCA543E0934B50A76A598E693136DE2D479AEF3785D97BAFF4FB85AB8D46DA424C4CC5E11ABCAF718837E16350982BF8A27728318EC02C71ED164F57CDB121B72614B7B7C406613EC34011B8B | 50 | 20031210025118 2 6 100 1535 2 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A772ED059DB |
51 | 20010328204443 2 6 100 1534 5 6DFD16D9669EDAF42EF5D4EED82AA84B0541DEC2045B6AF55021A184F32BCADE614A114137022C9A8B41C09AFC38199E7305864F70A8708F37FC2127264ECF4FA32391F243CC62B89602D3813082679E5BDF496BA9DFA4C818AD21EC261B6F11841E6F2DE1574CE95095841DAF052868CCD5E9BFCA543E0934B50A76A598E693136DE2D479AEF3785D97BAFF4FB85AB8D46DA424C4CC5E11ABCAF718837E16350982BF8A27728318EC02C71ED164F57CDB121B72614B7B7C406613EC3402A92F | 51 | 20031210025540 2 6 100 1535 2 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A772EECB4D3 |
52 | 20010328204617 2 6 100 1534 2 6DFD16D9669EDAF42EF5D4EED82AA84B0541DEC2045B6AF55021A184F32BCADE614A114137022C9A8B41C09AFC38199E7305864F70A8708F37FC2127264ECF4FA32391F243CC62B89602D3813082679E5BDF496BA9DFA4C818AD21EC261B6F11841E6F2DE1574CE95095841DAF052868CCD5E9BFCA543E0934B50A76A598E693136DE2D479AEF3785D97BAFF4FB85AB8D46DA424C4CC5E11ABCAF718837E16350982BF8A27728318EC02C71ED164F57CDB121B72614B7B7C406613EC3406D343 | 52 | 20031210025956 2 6 100 1535 2 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A772F043973 |
53 | 20010328205458 2 6 100 1534 2 6DFD16D9669EDAF42EF5D4EED82AA84B0541DEC2045B6AF55021A184F32BCADE614A114137022C9A8B41C09AFC38199E7305864F70A8708F37FC2127264ECF4FA32391F243CC62B89602D3813082679E5BDF496BA9DFA4C818AD21EC261B6F11841E6F2DE1574CE95095841DAF052868CCD5E9BFCA543E0934B50A76A598E693136DE2D479AEF3785D97BAFF4FB85AB8D46DA424C4CC5E11ABCAF718837E16350982BF8A27728318EC02C71ED164F57CDB121B72614B7B7C406613EC3436FA2B | 53 | 20031210030256 2 6 100 1535 2 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A772F134903 |
54 | 20010328210413 2 6 100 1534 2 6DFD16D9669EDAF42EF5D4EED82AA84B0541DEC2045B6AF55021A184F32BCADE614A114137022C9A8B41C09AFC38199E7305864F70A8708F37FC2127264ECF4FA32391F243CC62B89602D3813082679E5BDF496BA9DFA4C818AD21EC261B6F11841E6F2DE1574CE95095841DAF052868CCD5E9BFCA543E0934B50A76A598E693136DE2D479AEF3785D97BAFF4FB85AB8D46DA424C4CC5E11ABCAF718837E16350982BF8A27728318EC02C71ED164F57CDB121B72614B7B7C406613EC3471CF1B | 54 | 20031210030415 2 6 100 1535 2 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A772F15B5EB |
55 | 20010328213513 2 6 100 1534 5 6DFD16D9669EDAF42EF5D4EED82AA84B0541DEC2045B6AF55021A184F32BCADE614A114137022C9A8B41C09AFC38199E7305864F70A8708F37FC2127264ECF4FA32391F243CC62B89602D3813082679E5BDF496BA9DFA4C818AD21EC261B6F11841E6F2DE1574CE95095841DAF052868CCD5E9BFCA543E0934B50A76A598E693136DE2D479AEF3785D97BAFF4FB85AB8D46DA424C4CC5E11ABCAF718837E16350982BF8A27728318EC02C71ED164F57CDB121B72614B7B7C406613EC352AF5EF | 55 | 20031210030717 2 6 100 1535 2 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A772F25BF3B |
56 | 20010328215014 2 6 100 1534 2 6DFD16D9669EDAF42EF5D4EED82AA84B0541DEC2045B6AF55021A184F32BCADE614A114137022C9A8B41C09AFC38199E7305864F70A8708F37FC2127264ECF4FA32391F243CC62B89602D3813082679E5BDF496BA9DFA4C818AD21EC261B6F11841E6F2DE1574CE95095841DAF052868CCD5E9BFCA543E0934B50A76A598E693136DE2D479AEF3785D97BAFF4FB85AB8D46DA424C4CC5E11ABCAF718837E16350982BF8A27728318EC02C71ED164F57CDB121B72614B7B7C406613EC358CC3CB | 56 | 20031210030826 2 6 100 1535 5 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A772F2670D7 |
57 | 20010328215520 2 6 100 1534 5 6DFD16D9669EDAF42EF5D4EED82AA84B0541DEC2045B6AF55021A184F32BCADE614A114137022C9A8B41C09AFC38199E7305864F70A8708F37FC2127264ECF4FA32391F243CC62B89602D3813082679E5BDF496BA9DFA4C818AD21EC261B6F11841E6F2DE1574CE95095841DAF052868CCD5E9BFCA543E0934B50A76A598E693136DE2D479AEF3785D97BAFF4FB85AB8D46DA424C4CC5E11ABCAF718837E16350982BF8A27728318EC02C71ED164F57CDB121B72614B7B7C406613EC35A9B7FF | 57 | 20031210031055 2 6 100 1535 2 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A772F31E5F3 |
58 | 20010328215733 2 6 100 1534 5 6DFD16D9669EDAF42EF5D4EED82AA84B0541DEC2045B6AF55021A184F32BCADE614A114137022C9A8B41C09AFC38199E7305864F70A8708F37FC2127264ECF4FA32391F243CC62B89602D3813082679E5BDF496BA9DFA4C818AD21EC261B6F11841E6F2DE1574CE95095841DAF052868CCD5E9BFCA543E0934B50A76A598E693136DE2D479AEF3785D97BAFF4FB85AB8D46DA424C4CC5E11ABCAF718837E16350982BF8A27728318EC02C71ED164F57CDB121B72614B7B7C406613EC35B2927F | 58 | 20031210031311 2 6 100 1535 2 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A772F3BFE2B |
59 | 20010328220114 2 6 100 1534 2 6DFD16D9669EDAF42EF5D4EED82AA84B0541DEC2045B6AF55021A184F32BCADE614A114137022C9A8B41C09AFC38199E7305864F70A8708F37FC2127264ECF4FA32391F243CC62B89602D3813082679E5BDF496BA9DFA4C818AD21EC261B6F11841E6F2DE1574CE95095841DAF052868CCD5E9BFCA543E0934B50A76A598E693136DE2D479AEF3785D97BAFF4FB85AB8D46DA424C4CC5E11ABCAF718837E16350982BF8A27728318EC02C71ED164F57CDB121B72614B7B7C406613EC35C47323 | 59 | 20031210032243 2 6 100 1535 2 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A772F83082B |
60 | 20010328220334 2 6 100 1534 2 6DFD16D9669EDAF42EF5D4EED82AA84B0541DEC2045B6AF55021A184F32BCADE614A114137022C9A8B41C09AFC38199E7305864F70A8708F37FC2127264ECF4FA32391F243CC62B89602D3813082679E5BDF496BA9DFA4C818AD21EC261B6F11841E6F2DE1574CE95095841DAF052868CCD5E9BFCA543E0934B50A76A598E693136DE2D479AEF3785D97BAFF4FB85AB8D46DA424C4CC5E11ABCAF718837E16350982BF8A27728318EC02C71ED164F57CDB121B72614B7B7C406613EC35CFA9C3 | 60 | 20031210032437 2 6 100 1535 5 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A772F898187 |
61 | 20010328220653 2 6 100 1534 5 6DFD16D9669EDAF42EF5D4EED82AA84B0541DEC2045B6AF55021A184F32BCADE614A114137022C9A8B41C09AFC38199E7305864F70A8708F37FC2127264ECF4FA32391F243CC62B89602D3813082679E5BDF496BA9DFA4C818AD21EC261B6F11841E6F2DE1574CE95095841DAF052868CCD5E9BFCA543E0934B50A76A598E693136DE2D479AEF3785D97BAFF4FB85AB8D46DA424C4CC5E11ABCAF718837E16350982BF8A27728318EC02C71ED164F57CDB121B72614B7B7C406613EC35E0BB37 | 61 | 20031210032703 2 6 100 1535 2 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A772F95718B |
62 | 20010328220915 2 6 100 1534 2 6DFD16D9669EDAF42EF5D4EED82AA84B0541DEC2045B6AF55021A184F32BCADE614A114137022C9A8B41C09AFC38199E7305864F70A8708F37FC2127264ECF4FA32391F243CC62B89602D3813082679E5BDF496BA9DFA4C818AD21EC261B6F11841E6F2DE1574CE95095841DAF052868CCD5E9BFCA543E0934B50A76A598E693136DE2D479AEF3785D97BAFF4FB85AB8D46DA424C4CC5E11ABCAF718837E16350982BF8A27728318EC02C71ED164F57CDB121B72614B7B7C406613EC35E9CC23 | 62 | 20031210032953 2 6 100 1535 2 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A772FA3F5CB |
63 | 20010328221256 2 6 100 1534 5 6DFD16D9669EDAF42EF5D4EED82AA84B0541DEC2045B6AF55021A184F32BCADE614A114137022C9A8B41C09AFC38199E7305864F70A8708F37FC2127264ECF4FA32391F243CC62B89602D3813082679E5BDF496BA9DFA4C818AD21EC261B6F11841E6F2DE1574CE95095841DAF052868CCD5E9BFCA543E0934B50A76A598E693136DE2D479AEF3785D97BAFF4FB85AB8D46DA424C4CC5E11ABCAF718837E16350982BF8A27728318EC02C71ED164F57CDB121B72614B7B7C406613EC35FD7D67 | 63 | 20031210033059 2 6 100 1535 2 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A772FA48FEB |
64 | 20010328221457 2 6 100 1534 2 6DFD16D9669EDAF42EF5D4EED82AA84B0541DEC2045B6AF55021A184F32BCADE614A114137022C9A8B41C09AFC38199E7305864F70A8708F37FC2127264ECF4FA32391F243CC62B89602D3813082679E5BDF496BA9DFA4C818AD21EC261B6F11841E6F2DE1574CE95095841DAF052868CCD5E9BFCA543E0934B50A76A598E693136DE2D479AEF3785D97BAFF4FB85AB8D46DA424C4CC5E11ABCAF718837E16350982BF8A27728318EC02C71ED164F57CDB121B72614B7B7C406613EC36052CCB | 64 | 20031210033247 2 6 100 1535 5 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A772FAA6267 |
65 | 20010328222639 2 6 100 1534 5 6DFD16D9669EDAF42EF5D4EED82AA84B0541DEC2045B6AF55021A184F32BCADE614A114137022C9A8B41C09AFC38199E7305864F70A8708F37FC2127264ECF4FA32391F243CC62B89602D3813082679E5BDF496BA9DFA4C818AD21EC261B6F11841E6F2DE1574CE95095841DAF052868CCD5E9BFCA543E0934B50A76A598E693136DE2D479AEF3785D97BAFF4FB85AB8D46DA424C4CC5E11ABCAF718837E16350982BF8A27728318EC02C71ED164F57CDB121B72614B7B7C406613EC364A1E07 | 65 | 20031210033633 2 6 100 1535 2 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A772FC1BE7B |
66 | 20010328224126 2 6 100 1534 5 6DFD16D9669EDAF42EF5D4EED82AA84B0541DEC2045B6AF55021A184F32BCADE614A114137022C9A8B41C09AFC38199E7305864F70A8708F37FC2127264ECF4FA32391F243CC62B89602D3813082679E5BDF496BA9DFA4C818AD21EC261B6F11841E6F2DE1574CE95095841DAF052868CCD5E9BFCA543E0934B50A76A598E693136DE2D479AEF3785D97BAFF4FB85AB8D46DA424C4CC5E11ABCAF718837E16350982BF8A27728318EC02C71ED164F57CDB121B72614B7B7C406613EC36AD5557 | 66 | 20031210034313 2 6 100 1535 5 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A772FF18FA7 |
67 | 20010328225125 2 6 100 1534 5 6DFD16D9669EDAF42EF5D4EED82AA84B0541DEC2045B6AF55021A184F32BCADE614A114137022C9A8B41C09AFC38199E7305864F70A8708F37FC2127264ECF4FA32391F243CC62B89602D3813082679E5BDF496BA9DFA4C818AD21EC261B6F11841E6F2DE1574CE95095841DAF052868CCD5E9BFCA543E0934B50A76A598E693136DE2D479AEF3785D97BAFF4FB85AB8D46DA424C4CC5E11ABCAF718837E16350982BF8A27728318EC02C71ED164F57CDB121B72614B7B7C406613EC36EE57BF | 67 | 20031210034507 2 6 100 1535 5 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A772FF84977 |
68 | 20010328225751 2 6 100 1534 2 6DFD16D9669EDAF42EF5D4EED82AA84B0541DEC2045B6AF55021A184F32BCADE614A114137022C9A8B41C09AFC38199E7305864F70A8708F37FC2127264ECF4FA32391F243CC62B89602D3813082679E5BDF496BA9DFA4C818AD21EC261B6F11841E6F2DE1574CE95095841DAF052868CCD5E9BFCA543E0934B50A76A598E693136DE2D479AEF3785D97BAFF4FB85AB8D46DA424C4CC5E11ABCAF718837E16350982BF8A27728318EC02C71ED164F57CDB121B72614B7B7C406613EC3716A70B | 68 | 20031210035121 2 6 100 1535 5 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A7730233FBF |
69 | 20010328225943 2 6 100 1534 2 6DFD16D9669EDAF42EF5D4EED82AA84B0541DEC2045B6AF55021A184F32BCADE614A114137022C9A8B41C09AFC38199E7305864F70A8708F37FC2127264ECF4FA32391F243CC62B89602D3813082679E5BDF496BA9DFA4C818AD21EC261B6F11841E6F2DE1574CE95095841DAF052868CCD5E9BFCA543E0934B50A76A598E693136DE2D479AEF3785D97BAFF4FB85AB8D46DA424C4CC5E11ABCAF718837E16350982BF8A27728318EC02C71ED164F57CDB121B72614B7B7C406613EC371D010B | 69 | 20031210035813 2 6 100 1535 2 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A773054E8F3 |
70 | 20010328230054 2 6 100 1534 5 6DFD16D9669EDAF42EF5D4EED82AA84B0541DEC2045B6AF55021A184F32BCADE614A114137022C9A8B41C09AFC38199E7305864F70A8708F37FC2127264ECF4FA32391F243CC62B89602D3813082679E5BDF496BA9DFA4C818AD21EC261B6F11841E6F2DE1574CE95095841DAF052868CCD5E9BFCA543E0934B50A76A598E693136DE2D479AEF3785D97BAFF4FB85AB8D46DA424C4CC5E11ABCAF718837E16350982BF8A27728318EC02C71ED164F57CDB121B72614B7B7C406613EC371EB5C7 | 70 | 20031210035955 2 6 100 1535 5 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A7730597847 |
71 | 20010328230301 2 6 100 1534 2 6DFD16D9669EDAF42EF5D4EED82AA84B0541DEC2045B6AF55021A184F32BCADE614A114137022C9A8B41C09AFC38199E7305864F70A8708F37FC2127264ECF4FA32391F243CC62B89602D3813082679E5BDF496BA9DFA4C818AD21EC261B6F11841E6F2DE1574CE95095841DAF052868CCD5E9BFCA543E0934B50A76A598E693136DE2D479AEF3785D97BAFF4FB85AB8D46DA424C4CC5E11ABCAF718837E16350982BF8A27728318EC02C71ED164F57CDB121B72614B7B7C406613EC37275F4B | 71 | 20031210040259 2 6 100 1535 5 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A77306A1B57 |
72 | 20010328230628 2 6 100 1534 2 6DFD16D9669EDAF42EF5D4EED82AA84B0541DEC2045B6AF55021A184F32BCADE614A114137022C9A8B41C09AFC38199E7305864F70A8708F37FC2127264ECF4FA32391F243CC62B89602D3813082679E5BDF496BA9DFA4C818AD21EC261B6F11841E6F2DE1574CE95095841DAF052868CCD5E9BFCA543E0934B50A76A598E693136DE2D479AEF3785D97BAFF4FB85AB8D46DA424C4CC5E11ABCAF718837E16350982BF8A27728318EC02C71ED164F57CDB121B72614B7B7C406613EC3738C3F3 | 72 | 20031210040704 2 6 100 1535 2 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A77308258FB |
73 | 20010329000424 2 6 100 2046 2 7ED0888B660A818F15E5F76A7F2BF10C99D74129DA04446C60116C9C800501060B8AFF075DCE0C08CEFDF695440E6F16FCCDB06359D080EF62D6485CBAEB94B92BE771D535B4EA9C5D14D84CD7649E25C7CFEA2C914486CC2BFDE77C4C0DF1D6DDED65FEE2F53A7FA690AFE38EE00C154FBAEFF935466B176CB0AED02458A552929F4EA7FC3E6F9F758DE7F22CC1F49641F492820441BDC109F0CE18F883FC93EA9AC4C1432682BA1C5B67BED8C861152A5F952A8CDCF1BCE02B8D93E80C113CE9FE2E4ACA49B2978B99A8C5FA231A77F5E7C604D44C7C6EA98D561294D4F7AB061432CAB8BBDCEC3659DE64F65265E6B9FC5F46879BB17CC34993853ACAACAB | 73 | 20031210040913 2 6 100 1535 5 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A77308A63F7 |
74 | 20010329001637 2 6 100 2046 5 7ED0888B660A818F15E5F76A7F2BF10C99D74129DA04446C60116C9C800501060B8AFF075DCE0C08CEFDF695440E6F16FCCDB06359D080EF62D6485CBAEB94B92BE771D535B4EA9C5D14D84CD7649E25C7CFEA2C914486CC2BFDE77C4C0DF1D6DDED65FEE2F53A7FA690AFE38EE00C154FBAEFF935466B176CB0AED02458A552929F4EA7FC3E6F9F758DE7F22CC1F49641F492820441BDC109F0CE18F883FC93EA9AC4C1432682BA1C5B67BED8C861152A5F952A8CDCF1BCE02B8D93E80C113CE9FE2E4ACA49B2978B99A8C5FA231A77F5E7C604D44C7C6EA98D561294D4F7AB061432CAB8BBDCEC3659DE64F65265E6B9FC5F46879BB17CC34993853AE5BE0F | 74 | 20031210042047 2 6 100 1535 5 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A7730DEEF8F |
75 | 20010329002229 2 6 100 2046 2 7ED0888B660A818F15E5F76A7F2BF10C99D74129DA04446C60116C9C800501060B8AFF075DCE0C08CEFDF695440E6F16FCCDB06359D080EF62D6485CBAEB94B92BE771D535B4EA9C5D14D84CD7649E25C7CFEA2C914486CC2BFDE77C4C0DF1D6DDED65FEE2F53A7FA690AFE38EE00C154FBAEFF935466B176CB0AED02458A552929F4EA7FC3E6F9F758DE7F22CC1F49641F492820441BDC109F0CE18F883FC93EA9AC4C1432682BA1C5B67BED8C861152A5F952A8CDCF1BCE02B8D93E80C113CE9FE2E4ACA49B2978B99A8C5FA231A77F5E7C604D44C7C6EA98D561294D4F7AB061432CAB8BBDCEC3659DE64F65265E6B9FC5F46879BB17CC34993853AEDE2D3 | 75 | 20031210042156 2 6 100 1535 5 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A7730DFE787 |
76 | 20010329003652 2 6 100 2046 2 7ED0888B660A818F15E5F76A7F2BF10C99D74129DA04446C60116C9C800501060B8AFF075DCE0C08CEFDF695440E6F16FCCDB06359D080EF62D6485CBAEB94B92BE771D535B4EA9C5D14D84CD7649E25C7CFEA2C914486CC2BFDE77C4C0DF1D6DDED65FEE2F53A7FA690AFE38EE00C154FBAEFF935466B176CB0AED02458A552929F4EA7FC3E6F9F758DE7F22CC1F49641F492820441BDC109F0CE18F883FC93EA9AC4C1432682BA1C5B67BED8C861152A5F952A8CDCF1BCE02B8D93E80C113CE9FE2E4ACA49B2978B99A8C5FA231A77F5E7C604D44C7C6EA98D561294D4F7AB061432CAB8BBDCEC3659DE64F65265E6B9FC5F46879BB17CC34993853B0F32CB | 76 | 20031210042511 2 6 100 1535 2 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A7730F1D3CB |
77 | 20010329005040 2 6 100 2046 2 7ED0888B660A818F15E5F76A7F2BF10C99D74129DA04446C60116C9C800501060B8AFF075DCE0C08CEFDF695440E6F16FCCDB06359D080EF62D6485CBAEB94B92BE771D535B4EA9C5D14D84CD7649E25C7CFEA2C914486CC2BFDE77C4C0DF1D6DDED65FEE2F53A7FA690AFE38EE00C154FBAEFF935466B176CB0AED02458A552929F4EA7FC3E6F9F758DE7F22CC1F49641F492820441BDC109F0CE18F883FC93EA9AC4C1432682BA1C5B67BED8C861152A5F952A8CDCF1BCE02B8D93E80C113CE9FE2E4ACA49B2978B99A8C5FA231A77F5E7C604D44C7C6EA98D561294D4F7AB061432CAB8BBDCEC3659DE64F65265E6B9FC5F46879BB17CC34993853B30E503 | 77 | 20031210042907 2 6 100 1535 2 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A773107039B |
78 | 20010329014643 2 6 100 2046 5 7ED0888B660A818F15E5F76A7F2BF10C99D74129DA04446C60116C9C800501060B8AFF075DCE0C08CEFDF695440E6F16FCCDB06359D080EF62D6485CBAEB94B92BE771D535B4EA9C5D14D84CD7649E25C7CFEA2C914486CC2BFDE77C4C0DF1D6DDED65FEE2F53A7FA690AFE38EE00C154FBAEFF935466B176CB0AED02458A552929F4EA7FC3E6F9F758DE7F22CC1F49641F492820441BDC109F0CE18F883FC93EA9AC4C1432682BA1C5B67BED8C861152A5F952A8CDCF1BCE02B8D93E80C113CE9FE2E4ACA49B2978B99A8C5FA231A77F5E7C604D44C7C6EA98D561294D4F7AB061432CAB8BBDCEC3659DE64F65265E6B9FC5F46879BB17CC34993853BC9AF57 | 78 | 20031210043815 2 6 100 1535 5 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A7731492E37 |
79 | 20010329021950 2 6 100 2046 2 7ED0888B660A818F15E5F76A7F2BF10C99D74129DA04446C60116C9C800501060B8AFF075DCE0C08CEFDF695440E6F16FCCDB06359D080EF62D6485CBAEB94B92BE771D535B4EA9C5D14D84CD7649E25C7CFEA2C914486CC2BFDE77C4C0DF1D6DDED65FEE2F53A7FA690AFE38EE00C154FBAEFF935466B176CB0AED02458A552929F4EA7FC3E6F9F758DE7F22CC1F49641F492820441BDC109F0CE18F883FC93EA9AC4C1432682BA1C5B67BED8C861152A5F952A8CDCF1BCE02B8D93E80C113CE9FE2E4ACA49B2978B99A8C5FA231A77F5E7C604D44C7C6EA98D561294D4F7AB061432CAB8BBDCEC3659DE64F65265E6B9FC5F46879BB17CC34993853C205263 | 79 | 20031210045243 2 6 100 1535 2 FB54DC620BB7A5C2A28520E9FFC81958D7A76156412B647E9FCC729F84553FFB4428705868631244E0F804376D5F434C76608B93626D3AA169360C9DD40DFA3429F2E53AA4014730B49FFB6CCBC7FF9D0C391341610280598F7F8EE4E4F956683C59A740C7AB17A5C628694D4C36E6D6A54629822059ACD4C7C8C860262E7CBD04196BB41E7D194C91CFAB58353072EA09390E795733510D69D1267376B2FFA7BA2C88028820012DC84F6F250D88D1B6B44E22FCCDCDD3A3EC654A7731AB1953 |
80 | 20010329023256 2 6 100 2046 2 7ED0888B660A818F15E5F76A7F2BF10C99D74129DA04446C60116C9C800501060B8AFF075DCE0C08CEFDF695440E6F16FCCDB06359D080EF62D6485CBAEB94B92BE771D535B4EA9C5D14D84CD7649E25C7CFEA2C914486CC2BFDE77C4C0DF1D6DDED65FEE2F53A7FA690AFE38EE00C154FBAEFF935466B176CB0AED02458A552929F4EA7FC3E6F9F758DE7F22CC1F49641F492820441BDC109F0CE18F883FC93EA9AC4C1432682BA1C5B67BED8C861152A5F952A8CDCF1BCE02B8D93E80C113CE9FE2E4ACA49B2978B99A8C5FA231A77F5E7C604D44C7C6EA98D561294D4F7AB061432CAB8BBDCEC3659DE64F65265E6B9FC5F46879BB17CC34993853C3F2E53 | 80 | 20031210054833 2 6 100 2047 2 EEFD0DF9B60CBF61DDBA3364F8B6254256FC2DF3211B1D80F4556816C5D629B0A40228861BEE7B4497444DD9375EF7E8997BB7294C6AA097A1E5AD47DB72C14956898FD11CA292ED76215E09D8067835150928D5F09267B29214159C0CB695EECC90E05C0E21374ED6F04759B3F0E162EE2CFBC8259BC1A1F28C809700E1F3ECBA24A99A78BCCC6E776348705837F86A2B4A34DB592753468905179802788F52C337E0187F69C30D52C99546290D09154EAFEE72F9CA32A989AA45AD68220539A6AA302AEA4DCCCE7E6FCF6DEE57440A4511B4BAF5B4832D27247FDED231168413B12A0E1147A5706C56238788A7707463452E1254F2503BA197756F1C0B0F8B |
81 | 20010329031049 2 6 100 2046 5 7ED0888B660A818F15E5F76A7F2BF10C99D74129DA04446C60116C9C800501060B8AFF075DCE0C08CEFDF695440E6F16FCCDB06359D080EF62D6485CBAEB94B92BE771D535B4EA9C5D14D84CD7649E25C7CFEA2C914486CC2BFDE77C4C0DF1D6DDED65FEE2F53A7FA690AFE38EE00C154FBAEFF935466B176CB0AED02458A552929F4EA7FC3E6F9F758DE7F22CC1F49641F492820441BDC109F0CE18F883FC93EA9AC4C1432682BA1C5B67BED8C861152A5F952A8CDCF1BCE02B8D93E80C113CE9FE2E4ACA49B2978B99A8C5FA231A77F5E7C604D44C7C6EA98D561294D4F7AB061432CAB8BBDCEC3659DE64F65265E6B9FC5F46879BB17CC34993853CA28BBF | 81 | 20031210055609 2 6 100 2047 2 EEFD0DF9B60CBF61DDBA3364F8B6254256FC2DF3211B1D80F4556816C5D629B0A40228861BEE7B4497444DD9375EF7E8997BB7294C6AA097A1E5AD47DB72C14956898FD11CA292ED76215E09D8067835150928D5F09267B29214159C0CB695EECC90E05C0E21374ED6F04759B3F0E162EE2CFBC8259BC1A1F28C809700E1F3ECBA24A99A78BCCC6E776348705837F86A2B4A34DB592753468905179802788F52C337E0187F69C30D52C99546290D09154EAFEE72F9CA32A989AA45AD68220539A6AA302AEA4DCCCE7E6FCF6DEE57440A4511B4BAF5B4832D27247FDED231168413B12A0E1147A5706C56238788A7707463452E1254F2503BA197756F1C1CF773 |
82 | 20010329032045 2 6 100 2046 2 7ED0888B660A818F15E5F76A7F2BF10C99D74129DA04446C60116C9C800501060B8AFF075DCE0C08CEFDF695440E6F16FCCDB06359D080EF62D6485CBAEB94B92BE771D535B4EA9C5D14D84CD7649E25C7CFEA2C914486CC2BFDE77C4C0DF1D6DDED65FEE2F53A7FA690AFE38EE00C154FBAEFF935466B176CB0AED02458A552929F4EA7FC3E6F9F758DE7F22CC1F49641F492820441BDC109F0CE18F883FC93EA9AC4C1432682BA1C5B67BED8C861152A5F952A8CDCF1BCE02B8D93E80C113CE9FE2E4ACA49B2978B99A8C5FA231A77F5E7C604D44C7C6EA98D561294D4F7AB061432CAB8BBDCEC3659DE64F65265E6B9FC5F46879BB17CC34993853CB81103 | 82 | 20031210065401 2 6 100 2047 5 EEFD0DF9B60CBF61DDBA3364F8B6254256FC2DF3211B1D80F4556816C5D629B0A40228861BEE7B4497444DD9375EF7E8997BB7294C6AA097A1E5AD47DB72C14956898FD11CA292ED76215E09D8067835150928D5F09267B29214159C0CB695EECC90E05C0E21374ED6F04759B3F0E162EE2CFBC8259BC1A1F28C809700E1F3ECBA24A99A78BCCC6E776348705837F86A2B4A34DB592753468905179802788F52C337E0187F69C30D52C99546290D09154EAFEE72F9CA32A989AA45AD68220539A6AA302AEA4DCCCE7E6FCF6DEE57440A4511B4BAF5B4832D27247FDED231168413B12A0E1147A5706C56238788A7707463452E1254F2503BA197756F1CDD973F |
83 | 20010329052113 2 6 100 2046 5 7ED0888B660A818F15E5F76A7F2BF10C99D74129DA04446C60116C9C800501060B8AFF075DCE0C08CEFDF695440E6F16FCCDB06359D080EF62D6485CBAEB94B92BE771D535B4EA9C5D14D84CD7649E25C7CFEA2C914486CC2BFDE77C4C0DF1D6DDED65FEE2F53A7FA690AFE38EE00C154FBAEFF935466B176CB0AED02458A552929F4EA7FC3E6F9F758DE7F22CC1F49641F492820441BDC109F0CE18F883FC93EA9AC4C1432682BA1C5B67BED8C861152A5F952A8CDCF1BCE02B8D93E80C113CE9FE2E4ACA49B2978B99A8C5FA231A77F5E7C604D44C7C6EA98D561294D4F7AB061432CAB8BBDCEC3659DE64F65265E6B9FC5F46879BB17CC34993853DF13B47 | 83 | 20031210071146 2 6 100 2047 2 EEFD0DF9B60CBF61DDBA3364F8B6254256FC2DF3211B1D80F4556816C5D629B0A40228861BEE7B4497444DD9375EF7E8997BB7294C6AA097A1E5AD47DB72C14956898FD11CA292ED76215E09D8067835150928D5F09267B29214159C0CB695EECC90E05C0E21374ED6F04759B3F0E162EE2CFBC8259BC1A1F28C809700E1F3ECBA24A99A78BCCC6E776348705837F86A2B4A34DB592753468905179802788F52C337E0187F69C30D52C99546290D09154EAFEE72F9CA32A989AA45AD68220539A6AA302AEA4DCCCE7E6FCF6DEE57440A4511B4BAF5B4832D27247FDED231168413B12A0E1147A5706C56238788A7707463452E1254F2503BA197756F1D11D9FB |
84 | 20010329052449 2 6 100 2046 2 7ED0888B660A818F15E5F76A7F2BF10C99D74129DA04446C60116C9C800501060B8AFF075DCE0C08CEFDF695440E6F16FCCDB06359D080EF62D6485CBAEB94B92BE771D535B4EA9C5D14D84CD7649E25C7CFEA2C914486CC2BFDE77C4C0DF1D6DDED65FEE2F53A7FA690AFE38EE00C154FBAEFF935466B176CB0AED02458A552929F4EA7FC3E6F9F758DE7F22CC1F49641F492820441BDC109F0CE18F883FC93EA9AC4C1432682BA1C5B67BED8C861152A5F952A8CDCF1BCE02B8D93E80C113CE9FE2E4ACA49B2978B99A8C5FA231A77F5E7C604D44C7C6EA98D561294D4F7AB061432CAB8BBDCEC3659DE64F65265E6B9FC5F46879BB17CC34993853DF3ED53 | 84 | 20031210071754 2 6 100 2047 2 EEFD0DF9B60CBF61DDBA3364F8B6254256FC2DF3211B1D80F4556816C5D629B0A40228861BEE7B4497444DD9375EF7E8997BB7294C6AA097A1E5AD47DB72C14956898FD11CA292ED76215E09D8067835150928D5F09267B29214159C0CB695EECC90E05C0E21374ED6F04759B3F0E162EE2CFBC8259BC1A1F28C809700E1F3ECBA24A99A78BCCC6E776348705837F86A2B4A34DB592753468905179802788F52C337E0187F69C30D52C99546290D09154EAFEE72F9CA32A989AA45AD68220539A6AA302AEA4DCCCE7E6FCF6DEE57440A4511B4BAF5B4832D27247FDED231168413B12A0E1147A5706C56238788A7707463452E1254F2503BA197756F1D1ED47B |
85 | 20010329060404 2 6 100 2046 5 7ED0888B660A818F15E5F76A7F2BF10C99D74129DA04446C60116C9C800501060B8AFF075DCE0C08CEFDF695440E6F16FCCDB06359D080EF62D6485CBAEB94B92BE771D535B4EA9C5D14D84CD7649E25C7CFEA2C914486CC2BFDE77C4C0DF1D6DDED65FEE2F53A7FA690AFE38EE00C154FBAEFF935466B176CB0AED02458A552929F4EA7FC3E6F9F758DE7F22CC1F49641F492820441BDC109F0CE18F883FC93EA9AC4C1432682BA1C5B67BED8C861152A5F952A8CDCF1BCE02B8D93E80C113CE9FE2E4ACA49B2978B99A8C5FA231A77F5E7C604D44C7C6EA98D561294D4F7AB061432CAB8BBDCEC3659DE64F65265E6B9FC5F46879BB17CC34993853E5D25E7 | 85 | 20031210072552 2 6 100 2047 5 EEFD0DF9B60CBF61DDBA3364F8B6254256FC2DF3211B1D80F4556816C5D629B0A40228861BEE7B4497444DD9375EF7E8997BB7294C6AA097A1E5AD47DB72C14956898FD11CA292ED76215E09D8067835150928D5F09267B29214159C0CB695EECC90E05C0E21374ED6F04759B3F0E162EE2CFBC8259BC1A1F28C809700E1F3ECBA24A99A78BCCC6E776348705837F86A2B4A34DB592753468905179802788F52C337E0187F69C30D52C99546290D09154EAFEE72F9CA32A989AA45AD68220539A6AA302AEA4DCCCE7E6FCF6DEE57440A4511B4BAF5B4832D27247FDED231168413B12A0E1147A5706C56238788A7707463452E1254F2503BA197756F1D32CE4F |
86 | 20010329062856 2 6 100 2046 2 7ED0888B660A818F15E5F76A7F2BF10C99D74129DA04446C60116C9C800501060B8AFF075DCE0C08CEFDF695440E6F16FCCDB06359D080EF62D6485CBAEB94B92BE771D535B4EA9C5D14D84CD7649E25C7CFEA2C914486CC2BFDE77C4C0DF1D6DDED65FEE2F53A7FA690AFE38EE00C154FBAEFF935466B176CB0AED02458A552929F4EA7FC3E6F9F758DE7F22CC1F49641F492820441BDC109F0CE18F883FC93EA9AC4C1432682BA1C5B67BED8C861152A5F952A8CDCF1BCE02B8D93E80C113CE9FE2E4ACA49B2978B99A8C5FA231A77F5E7C604D44C7C6EA98D561294D4F7AB061432CAB8BBDCEC3659DE64F65265E6B9FC5F46879BB17CC34993853E9CF013 | 86 | 20031210073644 2 6 100 2047 2 EEFD0DF9B60CBF61DDBA3364F8B6254256FC2DF3211B1D80F4556816C5D629B0A40228861BEE7B4497444DD9375EF7E8997BB7294C6AA097A1E5AD47DB72C14956898FD11CA292ED76215E09D8067835150928D5F09267B29214159C0CB695EECC90E05C0E21374ED6F04759B3F0E162EE2CFBC8259BC1A1F28C809700E1F3ECBA24A99A78BCCC6E776348705837F86A2B4A34DB592753468905179802788F52C337E0187F69C30D52C99546290D09154EAFEE72F9CA32A989AA45AD68220539A6AA302AEA4DCCCE7E6FCF6DEE57440A4511B4BAF5B4832D27247FDED231168413B12A0E1147A5706C56238788A7707463452E1254F2503BA197756F1D4EC983 |
87 | 20010329063152 2 6 100 2046 2 7ED0888B660A818F15E5F76A7F2BF10C99D74129DA04446C60116C9C800501060B8AFF075DCE0C08CEFDF695440E6F16FCCDB06359D080EF62D6485CBAEB94B92BE771D535B4EA9C5D14D84CD7649E25C7CFEA2C914486CC2BFDE77C4C0DF1D6DDED65FEE2F53A7FA690AFE38EE00C154FBAEFF935466B176CB0AED02458A552929F4EA7FC3E6F9F758DE7F22CC1F49641F492820441BDC109F0CE18F883FC93EA9AC4C1432682BA1C5B67BED8C861152A5F952A8CDCF1BCE02B8D93E80C113CE9FE2E4ACA49B2978B99A8C5FA231A77F5E7C604D44C7C6EA98D561294D4F7AB061432CAB8BBDCEC3659DE64F65265E6B9FC5F46879BB17CC34993853E9E1CEB | 87 | 20031210074309 2 6 100 2047 5 EEFD0DF9B60CBF61DDBA3364F8B6254256FC2DF3211B1D80F4556816C5D629B0A40228861BEE7B4497444DD9375EF7E8997BB7294C6AA097A1E5AD47DB72C14956898FD11CA292ED76215E09D8067835150928D5F09267B29214159C0CB695EECC90E05C0E21374ED6F04759B3F0E162EE2CFBC8259BC1A1F28C809700E1F3ECBA24A99A78BCCC6E776348705837F86A2B4A34DB592753468905179802788F52C337E0187F69C30D52C99546290D09154EAFEE72F9CA32A989AA45AD68220539A6AA302AEA4DCCCE7E6FCF6DEE57440A4511B4BAF5B4832D27247FDED231168413B12A0E1147A5706C56238788A7707463452E1254F2503BA197756F1D5D4F07 |
88 | 20010329070601 2 6 100 2046 5 7ED0888B660A818F15E5F76A7F2BF10C99D74129DA04446C60116C9C800501060B8AFF075DCE0C08CEFDF695440E6F16FCCDB06359D080EF62D6485CBAEB94B92BE771D535B4EA9C5D14D84CD7649E25C7CFEA2C914486CC2BFDE77C4C0DF1D6DDED65FEE2F53A7FA690AFE38EE00C154FBAEFF935466B176CB0AED02458A552929F4EA7FC3E6F9F758DE7F22CC1F49641F492820441BDC109F0CE18F883FC93EA9AC4C1432682BA1C5B67BED8C861152A5F952A8CDCF1BCE02B8D93E80C113CE9FE2E4ACA49B2978B99A8C5FA231A77F5E7C604D44C7C6EA98D561294D4F7AB061432CAB8BBDCEC3659DE64F65265E6B9FC5F46879BB17CC34993853EF58B7F | 88 | 20031210075517 2 6 100 2047 2 EEFD0DF9B60CBF61DDBA3364F8B6254256FC2DF3211B1D80F4556816C5D629B0A40228861BEE7B4497444DD9375EF7E8997BB7294C6AA097A1E5AD47DB72C14956898FD11CA292ED76215E09D8067835150928D5F09267B29214159C0CB695EECC90E05C0E21374ED6F04759B3F0E162EE2CFBC8259BC1A1F28C809700E1F3ECBA24A99A78BCCC6E776348705837F86A2B4A34DB592753468905179802788F52C337E0187F69C30D52C99546290D09154EAFEE72F9CA32A989AA45AD68220539A6AA302AEA4DCCCE7E6FCF6DEE57440A4511B4BAF5B4832D27247FDED231168413B12A0E1147A5706C56238788A7707463452E1254F2503BA197756F1D7DE133 |
89 | 20010329071302 2 6 100 2046 5 7ED0888B660A818F15E5F76A7F2BF10C99D74129DA04446C60116C9C800501060B8AFF075DCE0C08CEFDF695440E6F16FCCDB06359D080EF62D6485CBAEB94B92BE771D535B4EA9C5D14D84CD7649E25C7CFEA2C914486CC2BFDE77C4C0DF1D6DDED65FEE2F53A7FA690AFE38EE00C154FBAEFF935466B176CB0AED02458A552929F4EA7FC3E6F9F758DE7F22CC1F49641F492820441BDC109F0CE18F883FC93EA9AC4C1432682BA1C5B67BED8C861152A5F952A8CDCF1BCE02B8D93E80C113CE9FE2E4ACA49B2978B99A8C5FA231A77F5E7C604D44C7C6EA98D561294D4F7AB061432CAB8BBDCEC3659DE64F65265E6B9FC5F46879BB17CC34993853F017697 | 89 | 20031210081718 2 6 100 2047 2 EEFD0DF9B60CBF61DDBA3364F8B6254256FC2DF3211B1D80F4556816C5D629B0A40228861BEE7B4497444DD9375EF7E8997BB7294C6AA097A1E5AD47DB72C14956898FD11CA292ED76215E09D8067835150928D5F09267B29214159C0CB695EECC90E05C0E21374ED6F04759B3F0E162EE2CFBC8259BC1A1F28C809700E1F3ECBA24A99A78BCCC6E776348705837F86A2B4A34DB592753468905179802788F52C337E0187F69C30D52C99546290D09154EAFEE72F9CA32A989AA45AD68220539A6AA302AEA4DCCCE7E6FCF6DEE57440A4511B4BAF5B4832D27247FDED231168413B12A0E1147A5706C56238788A7707463452E1254F2503BA197756F1DC395C3 |
90 | 20010329072011 2 6 100 2046 2 7ED0888B660A818F15E5F76A7F2BF10C99D74129DA04446C60116C9C800501060B8AFF075DCE0C08CEFDF695440E6F16FCCDB06359D080EF62D6485CBAEB94B92BE771D535B4EA9C5D14D84CD7649E25C7CFEA2C914486CC2BFDE77C4C0DF1D6DDED65FEE2F53A7FA690AFE38EE00C154FBAEFF935466B176CB0AED02458A552929F4EA7FC3E6F9F758DE7F22CC1F49641F492820441BDC109F0CE18F883FC93EA9AC4C1432682BA1C5B67BED8C861152A5F952A8CDCF1BCE02B8D93E80C113CE9FE2E4ACA49B2978B99A8C5FA231A77F5E7C604D44C7C6EA98D561294D4F7AB061432CAB8BBDCEC3659DE64F65265E6B9FC5F46879BB17CC34993853F0E72D3 | 90 | 20031210084322 2 6 100 2047 5 EEFD0DF9B60CBF61DDBA3364F8B6254256FC2DF3211B1D80F4556816C5D629B0A40228861BEE7B4497444DD9375EF7E8997BB7294C6AA097A1E5AD47DB72C14956898FD11CA292ED76215E09D8067835150928D5F09267B29214159C0CB695EECC90E05C0E21374ED6F04759B3F0E162EE2CFBC8259BC1A1F28C809700E1F3ECBA24A99A78BCCC6E776348705837F86A2B4A34DB592753468905179802788F52C337E0187F69C30D52C99546290D09154EAFEE72F9CA32A989AA45AD68220539A6AA302AEA4DCCCE7E6FCF6DEE57440A4511B4BAF5B4832D27247FDED231168413B12A0E1147A5706C56238788A7707463452E1254F2503BA197756F1E1A5567 |
91 | 20010329072445 2 6 100 2046 5 7ED0888B660A818F15E5F76A7F2BF10C99D74129DA04446C60116C9C800501060B8AFF075DCE0C08CEFDF695440E6F16FCCDB06359D080EF62D6485CBAEB94B92BE771D535B4EA9C5D14D84CD7649E25C7CFEA2C914486CC2BFDE77C4C0DF1D6DDED65FEE2F53A7FA690AFE38EE00C154FBAEFF935466B176CB0AED02458A552929F4EA7FC3E6F9F758DE7F22CC1F49641F492820441BDC109F0CE18F883FC93EA9AC4C1432682BA1C5B67BED8C861152A5F952A8CDCF1BCE02B8D93E80C113CE9FE2E4ACA49B2978B99A8C5FA231A77F5E7C604D44C7C6EA98D561294D4F7AB061432CAB8BBDCEC3659DE64F65265E6B9FC5F46879BB17CC34993853F14CE17 | 91 | 20031210085218 2 6 100 2047 2 EEFD0DF9B60CBF61DDBA3364F8B6254256FC2DF3211B1D80F4556816C5D629B0A40228861BEE7B4497444DD9375EF7E8997BB7294C6AA097A1E5AD47DB72C14956898FD11CA292ED76215E09D8067835150928D5F09267B29214159C0CB695EECC90E05C0E21374ED6F04759B3F0E162EE2CFBC8259BC1A1F28C809700E1F3ECBA24A99A78BCCC6E776348705837F86A2B4A34DB592753468905179802788F52C337E0187F69C30D52C99546290D09154EAFEE72F9CA32A989AA45AD68220539A6AA302AEA4DCCCE7E6FCF6DEE57440A4511B4BAF5B4832D27247FDED231168413B12A0E1147A5706C56238788A7707463452E1254F2503BA197756F1E3127AB |
92 | 20010329073641 2 6 100 2046 2 7ED0888B660A818F15E5F76A7F2BF10C99D74129DA04446C60116C9C800501060B8AFF075DCE0C08CEFDF695440E6F16FCCDB06359D080EF62D6485CBAEB94B92BE771D535B4EA9C5D14D84CD7649E25C7CFEA2C914486CC2BFDE77C4C0DF1D6DDED65FEE2F53A7FA690AFE38EE00C154FBAEFF935466B176CB0AED02458A552929F4EA7FC3E6F9F758DE7F22CC1F49641F492820441BDC109F0CE18F883FC93EA9AC4C1432682BA1C5B67BED8C861152A5F952A8CDCF1BCE02B8D93E80C113CE9FE2E4ACA49B2978B99A8C5FA231A77F5E7C604D44C7C6EA98D561294D4F7AB061432CAB8BBDCEC3659DE64F65265E6B9FC5F46879BB17CC34993853F2EEBA3 | 92 | 20031210090542 2 6 100 2047 5 EEFD0DF9B60CBF61DDBA3364F8B6254256FC2DF3211B1D80F4556816C5D629B0A40228861BEE7B4497444DD9375EF7E8997BB7294C6AA097A1E5AD47DB72C14956898FD11CA292ED76215E09D8067835150928D5F09267B29214159C0CB695EECC90E05C0E21374ED6F04759B3F0E162EE2CFBC8259BC1A1F28C809700E1F3ECBA24A99A78BCCC6E776348705837F86A2B4A34DB592753468905179802788F52C337E0187F69C30D52C99546290D09154EAFEE72F9CA32A989AA45AD68220539A6AA302AEA4DCCCE7E6FCF6DEE57440A4511B4BAF5B4832D27247FDED231168413B12A0E1147A5706C56238788A7707463452E1254F2503BA197756F1E586AD7 |
93 | 20010329075209 2 6 100 2046 5 7ED0888B660A818F15E5F76A7F2BF10C99D74129DA04446C60116C9C800501060B8AFF075DCE0C08CEFDF695440E6F16FCCDB06359D080EF62D6485CBAEB94B92BE771D535B4EA9C5D14D84CD7649E25C7CFEA2C914486CC2BFDE77C4C0DF1D6DDED65FEE2F53A7FA690AFE38EE00C154FBAEFF935466B176CB0AED02458A552929F4EA7FC3E6F9F758DE7F22CC1F49641F492820441BDC109F0CE18F883FC93EA9AC4C1432682BA1C5B67BED8C861152A5F952A8CDCF1BCE02B8D93E80C113CE9FE2E4ACA49B2978B99A8C5FA231A77F5E7C604D44C7C6EA98D561294D4F7AB061432CAB8BBDCEC3659DE64F65265E6B9FC5F46879BB17CC34993853F52E927 | 93 | 20031210093920 2 6 100 2047 2 EEFD0DF9B60CBF61DDBA3364F8B6254256FC2DF3211B1D80F4556816C5D629B0A40228861BEE7B4497444DD9375EF7E8997BB7294C6AA097A1E5AD47DB72C14956898FD11CA292ED76215E09D8067835150928D5F09267B29214159C0CB695EECC90E05C0E21374ED6F04759B3F0E162EE2CFBC8259BC1A1F28C809700E1F3ECBA24A99A78BCCC6E776348705837F86A2B4A34DB592753468905179802788F52C337E0187F69C30D52C99546290D09154EAFEE72F9CA32A989AA45AD68220539A6AA302AEA4DCCCE7E6FCF6DEE57440A4511B4BAF5B4832D27247FDED231168413B12A0E1147A5706C56238788A7707463452E1254F2503BA197756F1EC6C9D3 |
94 | 20010329080750 2 6 100 2046 2 7ED0888B660A818F15E5F76A7F2BF10C99D74129DA04446C60116C9C800501060B8AFF075DCE0C08CEFDF695440E6F16FCCDB06359D080EF62D6485CBAEB94B92BE771D535B4EA9C5D14D84CD7649E25C7CFEA2C914486CC2BFDE77C4C0DF1D6DDED65FEE2F53A7FA690AFE38EE00C154FBAEFF935466B176CB0AED02458A552929F4EA7FC3E6F9F758DE7F22CC1F49641F492820441BDC109F0CE18F883FC93EA9AC4C1432682BA1C5B67BED8C861152A5F952A8CDCF1BCE02B8D93E80C113CE9FE2E4ACA49B2978B99A8C5FA231A77F5E7C604D44C7C6EA98D561294D4F7AB061432CAB8BBDCEC3659DE64F65265E6B9FC5F46879BB17CC34993853F776F8B | 94 | 20031210100616 2 6 100 2047 2 EEFD0DF9B60CBF61DDBA3364F8B6254256FC2DF3211B1D80F4556816C5D629B0A40228861BEE7B4497444DD9375EF7E8997BB7294C6AA097A1E5AD47DB72C14956898FD11CA292ED76215E09D8067835150928D5F09267B29214159C0CB695EECC90E05C0E21374ED6F04759B3F0E162EE2CFBC8259BC1A1F28C809700E1F3ECBA24A99A78BCCC6E776348705837F86A2B4A34DB592753468905179802788F52C337E0187F69C30D52C99546290D09154EAFEE72F9CA32A989AA45AD68220539A6AA302AEA4DCCCE7E6FCF6DEE57440A4511B4BAF5B4832D27247FDED231168413B12A0E1147A5706C56238788A7707463452E1254F2503BA197756F1F19C713 |
95 | 20010329084002 2 6 100 2046 2 7ED0888B660A818F15E5F76A7F2BF10C99D74129DA04446C60116C9C800501060B8AFF075DCE0C08CEFDF695440E6F16FCCDB06359D080EF62D6485CBAEB94B92BE771D535B4EA9C5D14D84CD7649E25C7CFEA2C914486CC2BFDE77C4C0DF1D6DDED65FEE2F53A7FA690AFE38EE00C154FBAEFF935466B176CB0AED02458A552929F4EA7FC3E6F9F758DE7F22CC1F49641F492820441BDC109F0CE18F883FC93EA9AC4C1432682BA1C5B67BED8C861152A5F952A8CDCF1BCE02B8D93E80C113CE9FE2E4ACA49B2978B99A8C5FA231A77F5E7C604D44C7C6EA98D561294D4F7AB061432CAB8BBDCEC3659DE64F65265E6B9FC5F46879BB17CC34993853FC98043 | 95 | 20031210103627 2 6 100 2047 2 EEFD0DF9B60CBF61DDBA3364F8B6254256FC2DF3211B1D80F4556816C5D629B0A40228861BEE7B4497444DD9375EF7E8997BB7294C6AA097A1E5AD47DB72C14956898FD11CA292ED76215E09D8067835150928D5F09267B29214159C0CB695EECC90E05C0E21374ED6F04759B3F0E162EE2CFBC8259BC1A1F28C809700E1F3ECBA24A99A78BCCC6E776348705837F86A2B4A34DB592753468905179802788F52C337E0187F69C30D52C99546290D09154EAFEE72F9CA32A989AA45AD68220539A6AA302AEA4DCCCE7E6FCF6DEE57440A4511B4BAF5B4832D27247FDED231168413B12A0E1147A5706C56238788A7707463452E1254F2503BA197756F1F7B82B3 |
96 | 20010329084744 2 6 100 2046 5 7ED0888B660A818F15E5F76A7F2BF10C99D74129DA04446C60116C9C800501060B8AFF075DCE0C08CEFDF695440E6F16FCCDB06359D080EF62D6485CBAEB94B92BE771D535B4EA9C5D14D84CD7649E25C7CFEA2C914486CC2BFDE77C4C0DF1D6DDED65FEE2F53A7FA690AFE38EE00C154FBAEFF935466B176CB0AED02458A552929F4EA7FC3E6F9F758DE7F22CC1F49641F492820441BDC109F0CE18F883FC93EA9AC4C1432682BA1C5B67BED8C861152A5F952A8CDCF1BCE02B8D93E80C113CE9FE2E4ACA49B2978B99A8C5FA231A77F5E7C604D44C7C6EA98D561294D4F7AB061432CAB8BBDCEC3659DE64F65265E6B9FC5F46879BB17CC34993853FD7EAAF | 96 | 20031210104559 2 6 100 2047 5 EEFD0DF9B60CBF61DDBA3364F8B6254256FC2DF3211B1D80F4556816C5D629B0A40228861BEE7B4497444DD9375EF7E8997BB7294C6AA097A1E5AD47DB72C14956898FD11CA292ED76215E09D8067835150928D5F09267B29214159C0CB695EECC90E05C0E21374ED6F04759B3F0E162EE2CFBC8259BC1A1F28C809700E1F3ECBA24A99A78BCCC6E776348705837F86A2B4A34DB592753468905179802788F52C337E0187F69C30D52C99546290D09154EAFEE72F9CA32A989AA45AD68220539A6AA302AEA4DCCCE7E6FCF6DEE57440A4511B4BAF5B4832D27247FDED231168413B12A0E1147A5706C56238788A7707463452E1254F2503BA197756F1F95C2EF |
97 | 20010329090209 2 6 100 2046 5 7ED0888B660A818F15E5F76A7F2BF10C99D74129DA04446C60116C9C800501060B8AFF075DCE0C08CEFDF695440E6F16FCCDB06359D080EF62D6485CBAEB94B92BE771D535B4EA9C5D14D84CD7649E25C7CFEA2C914486CC2BFDE77C4C0DF1D6DDED65FEE2F53A7FA690AFE38EE00C154FBAEFF935466B176CB0AED02458A552929F4EA7FC3E6F9F758DE7F22CC1F49641F492820441BDC109F0CE18F883FC93EA9AC4C1432682BA1C5B67BED8C861152A5F952A8CDCF1BCE02B8D93E80C113CE9FE2E4ACA49B2978B99A8C5FA231A77F5E7C604D44C7C6EA98D561294D4F7AB061432CAB8BBDCEC3659DE64F65265E6B9FC5F46879BB17CC34993853FF9AF5F | 97 | 20031210104836 2 6 100 2047 5 EEFD0DF9B60CBF61DDBA3364F8B6254256FC2DF3211B1D80F4556816C5D629B0A40228861BEE7B4497444DD9375EF7E8997BB7294C6AA097A1E5AD47DB72C14956898FD11CA292ED76215E09D8067835150928D5F09267B29214159C0CB695EECC90E05C0E21374ED6F04759B3F0E162EE2CFBC8259BC1A1F28C809700E1F3ECBA24A99A78BCCC6E776348705837F86A2B4A34DB592753468905179802788F52C337E0187F69C30D52C99546290D09154EAFEE72F9CA32A989AA45AD68220539A6AA302AEA4DCCCE7E6FCF6DEE57440A4511B4BAF5B4832D27247FDED231168413B12A0E1147A5706C56238788A7707463452E1254F2503BA197756F1F969EAF |
98 | 20010329093527 2 6 100 2046 2 7ED0888B660A818F15E5F76A7F2BF10C99D74129DA04446C60116C9C800501060B8AFF075DCE0C08CEFDF695440E6F16FCCDB06359D080EF62D6485CBAEB94B92BE771D535B4EA9C5D14D84CD7649E25C7CFEA2C914486CC2BFDE77C4C0DF1D6DDED65FEE2F53A7FA690AFE38EE00C154FBAEFF935466B176CB0AED02458A552929F4EA7FC3E6F9F758DE7F22CC1F49641F492820441BDC109F0CE18F883FC93EA9AC4C1432682BA1C5B67BED8C861152A5F952A8CDCF1BCE02B8D93E80C113CE9FE2E4ACA49B2978B99A8C5FA231A77F5E7C604D44C7C6EA98D561294D4F7AB061432CAB8BBDCEC3659DE64F65265E6B9FC5F46879BB17CC3499385404E330B | 98 | 20031210110201 2 6 100 2047 5 EEFD0DF9B60CBF61DDBA3364F8B6254256FC2DF3211B1D80F4556816C5D629B0A40228861BEE7B4497444DD9375EF7E8997BB7294C6AA097A1E5AD47DB72C14956898FD11CA292ED76215E09D8067835150928D5F09267B29214159C0CB695EECC90E05C0E21374ED6F04759B3F0E162EE2CFBC8259BC1A1F28C809700E1F3ECBA24A99A78BCCC6E776348705837F86A2B4A34DB592753468905179802788F52C337E0187F69C30D52C99546290D09154EAFEE72F9CA32A989AA45AD68220539A6AA302AEA4DCCCE7E6FCF6DEE57440A4511B4BAF5B4832D27247FDED231168413B12A0E1147A5706C56238788A7707463452E1254F2503BA197756F1FBEA0DF |
99 | 20010329094652 2 6 100 2046 5 7ED0888B660A818F15E5F76A7F2BF10C99D74129DA04446C60116C9C800501060B8AFF075DCE0C08CEFDF695440E6F16FCCDB06359D080EF62D6485CBAEB94B92BE771D535B4EA9C5D14D84CD7649E25C7CFEA2C914486CC2BFDE77C4C0DF1D6DDED65FEE2F53A7FA690AFE38EE00C154FBAEFF935466B176CB0AED02458A552929F4EA7FC3E6F9F758DE7F22CC1F49641F492820441BDC109F0CE18F883FC93EA9AC4C1432682BA1C5B67BED8C861152A5F952A8CDCF1BCE02B8D93E80C113CE9FE2E4ACA49B2978B99A8C5FA231A77F5E7C604D44C7C6EA98D561294D4F7AB061432CAB8BBDCEC3659DE64F65265E6B9FC5F46879BB17CC349938540672D1F | 99 | 20031210111610 2 6 100 2047 2 EEFD0DF9B60CBF61DDBA3364F8B6254256FC2DF3211B1D80F4556816C5D629B0A40228861BEE7B4497444DD9375EF7E8997BB7294C6AA097A1E5AD47DB72C14956898FD11CA292ED76215E09D8067835150928D5F09267B29214159C0CB695EECC90E05C0E21374ED6F04759B3F0E162EE2CFBC8259BC1A1F28C809700E1F3ECBA24A99A78BCCC6E776348705837F86A2B4A34DB592753468905179802788F52C337E0187F69C30D52C99546290D09154EAFEE72F9CA32A989AA45AD68220539A6AA302AEA4DCCCE7E6FCF6DEE57440A4511B4BAF5B4832D27247FDED231168413B12A0E1147A5706C56238788A7707463452E1254F2503BA197756F1FE4C70B |
100 | 20010329103445 2 6 100 2046 2 7ED0888B660A818F15E5F76A7F2BF10C99D74129DA04446C60116C9C800501060B8AFF075DCE0C08CEFDF695440E6F16FCCDB06359D080EF62D6485CBAEB94B92BE771D535B4EA9C5D14D84CD7649E25C7CFEA2C914486CC2BFDE77C4C0DF1D6DDED65FEE2F53A7FA690AFE38EE00C154FBAEFF935466B176CB0AED02458A552929F4EA7FC3E6F9F758DE7F22CC1F49641F492820441BDC109F0CE18F883FC93EA9AC4C1432682BA1C5B67BED8C861152A5F952A8CDCF1BCE02B8D93E80C113CE9FE2E4ACA49B2978B99A8C5FA231A77F5E7C604D44C7C6EA98D561294D4F7AB061432CAB8BBDCEC3659DE64F65265E6B9FC5F46879BB17CC349938540E4B213 | 100 | 20031210111837 2 6 100 2047 2 EEFD0DF9B60CBF61DDBA3364F8B6254256FC2DF3211B1D80F4556816C5D629B0A40228861BEE7B4497444DD9375EF7E8997BB7294C6AA097A1E5AD47DB72C14956898FD11CA292ED76215E09D8067835150928D5F09267B29214159C0CB695EECC90E05C0E21374ED6F04759B3F0E162EE2CFBC8259BC1A1F28C809700E1F3ECBA24A99A78BCCC6E776348705837F86A2B4A34DB592753468905179802788F52C337E0187F69C30D52C99546290D09154EAFEE72F9CA32A989AA45AD68220539A6AA302AEA4DCCCE7E6FCF6DEE57440A4511B4BAF5B4832D27247FDED231168413B12A0E1147A5706C56238788A7707463452E1254F2503BA197756F1FE50DBB |
101 | 20010329111418 2 6 100 2046 5 7ED0888B660A818F15E5F76A7F2BF10C99D74129DA04446C60116C9C800501060B8AFF075DCE0C08CEFDF695440E6F16FCCDB06359D080EF62D6485CBAEB94B92BE771D535B4EA9C5D14D84CD7649E25C7CFEA2C914486CC2BFDE77C4C0DF1D6DDED65FEE2F53A7FA690AFE38EE00C154FBAEFF935466B176CB0AED02458A552929F4EA7FC3E6F9F758DE7F22CC1F49641F492820441BDC109F0CE18F883FC93EA9AC4C1432682BA1C5B67BED8C861152A5F952A8CDCF1BCE02B8D93E80C113CE9FE2E4ACA49B2978B99A8C5FA231A77F5E7C604D44C7C6EA98D561294D4F7AB061432CAB8BBDCEC3659DE64F65265E6B9FC5F46879BB17CC34993854144947F | 101 | 20031210112215 2 6 100 2047 5 EEFD0DF9B60CBF61DDBA3364F8B6254256FC2DF3211B1D80F4556816C5D629B0A40228861BEE7B4497444DD9375EF7E8997BB7294C6AA097A1E5AD47DB72C14956898FD11CA292ED76215E09D8067835150928D5F09267B29214159C0CB695EECC90E05C0E21374ED6F04759B3F0E162EE2CFBC8259BC1A1F28C809700E1F3ECBA24A99A78BCCC6E776348705837F86A2B4A34DB592753468905179802788F52C337E0187F69C30D52C99546290D09154EAFEE72F9CA32A989AA45AD68220539A6AA302AEA4DCCCE7E6FCF6DEE57440A4511B4BAF5B4832D27247FDED231168413B12A0E1147A5706C56238788A7707463452E1254F2503BA197756F1FE964FF |
102 | 20010329112031 2 6 100 2046 2 7ED0888B660A818F15E5F76A7F2BF10C99D74129DA04446C60116C9C800501060B8AFF075DCE0C08CEFDF695440E6F16FCCDB06359D080EF62D6485CBAEB94B92BE771D535B4EA9C5D14D84CD7649E25C7CFEA2C914486CC2BFDE77C4C0DF1D6DDED65FEE2F53A7FA690AFE38EE00C154FBAEFF935466B176CB0AED02458A552929F4EA7FC3E6F9F758DE7F22CC1F49641F492820441BDC109F0CE18F883FC93EA9AC4C1432682BA1C5B67BED8C861152A5F952A8CDCF1BCE02B8D93E80C113CE9FE2E4ACA49B2978B99A8C5FA231A77F5E7C604D44C7C6EA98D561294D4F7AB061432CAB8BBDCEC3659DE64F65265E6B9FC5F46879BB17CC3499385414F223B | 102 | 20031210124102 2 6 100 2047 2 EEFD0DF9B60CBF61DDBA3364F8B6254256FC2DF3211B1D80F4556816C5D629B0A40228861BEE7B4497444DD9375EF7E8997BB7294C6AA097A1E5AD47DB72C14956898FD11CA292ED76215E09D8067835150928D5F09267B29214159C0CB695EECC90E05C0E21374ED6F04759B3F0E162EE2CFBC8259BC1A1F28C809700E1F3ECBA24A99A78BCCC6E776348705837F86A2B4A34DB592753468905179802788F52C337E0187F69C30D52C99546290D09154EAFEE72F9CA32A989AA45AD68220539A6AA302AEA4DCCCE7E6FCF6DEE57440A4511B4BAF5B4832D27247FDED231168413B12A0E1147A5706C56238788A7707463452E1254F2503BA197756F20F33023 |
103 | 20010329112413 2 6 100 2046 2 7ED0888B660A818F15E5F76A7F2BF10C99D74129DA04446C60116C9C800501060B8AFF075DCE0C08CEFDF695440E6F16FCCDB06359D080EF62D6485CBAEB94B92BE771D535B4EA9C5D14D84CD7649E25C7CFEA2C914486CC2BFDE77C4C0DF1D6DDED65FEE2F53A7FA690AFE38EE00C154FBAEFF935466B176CB0AED02458A552929F4EA7FC3E6F9F758DE7F22CC1F49641F492820441BDC109F0CE18F883FC93EA9AC4C1432682BA1C5B67BED8C861152A5F952A8CDCF1BCE02B8D93E80C113CE9FE2E4ACA49B2978B99A8C5FA231A77F5E7C604D44C7C6EA98D561294D4F7AB061432CAB8BBDCEC3659DE64F65265E6B9FC5F46879BB17CC349938541522073 | 103 | 20031210125610 2 6 100 2047 2 EEFD0DF9B60CBF61DDBA3364F8B6254256FC2DF3211B1D80F4556816C5D629B0A40228861BEE7B4497444DD9375EF7E8997BB7294C6AA097A1E5AD47DB72C14956898FD11CA292ED76215E09D8067835150928D5F09267B29214159C0CB695EECC90E05C0E21374ED6F04759B3F0E162EE2CFBC8259BC1A1F28C809700E1F3ECBA24A99A78BCCC6E776348705837F86A2B4A34DB592753468905179802788F52C337E0187F69C30D52C99546290D09154EAFEE72F9CA32A989AA45AD68220539A6AA302AEA4DCCCE7E6FCF6DEE57440A4511B4BAF5B4832D27247FDED231168413B12A0E1147A5706C56238788A7707463452E1254F2503BA197756F21208AFB |
104 | 20010329114209 2 6 100 2046 2 7ED0888B660A818F15E5F76A7F2BF10C99D74129DA04446C60116C9C800501060B8AFF075DCE0C08CEFDF695440E6F16FCCDB06359D080EF62D6485CBAEB94B92BE771D535B4EA9C5D14D84CD7649E25C7CFEA2C914486CC2BFDE77C4C0DF1D6DDED65FEE2F53A7FA690AFE38EE00C154FBAEFF935466B176CB0AED02458A552929F4EA7FC3E6F9F758DE7F22CC1F49641F492820441BDC109F0CE18F883FC93EA9AC4C1432682BA1C5B67BED8C861152A5F952A8CDCF1BCE02B8D93E80C113CE9FE2E4ACA49B2978B99A8C5FA231A77F5E7C604D44C7C6EA98D561294D4F7AB061432CAB8BBDCEC3659DE64F65265E6B9FC5F46879BB17CC3499385417C8E53 | 104 | 20031210130630 2 6 100 2047 2 EEFD0DF9B60CBF61DDBA3364F8B6254256FC2DF3211B1D80F4556816C5D629B0A40228861BEE7B4497444DD9375EF7E8997BB7294C6AA097A1E5AD47DB72C14956898FD11CA292ED76215E09D8067835150928D5F09267B29214159C0CB695EECC90E05C0E21374ED6F04759B3F0E162EE2CFBC8259BC1A1F28C809700E1F3ECBA24A99A78BCCC6E776348705837F86A2B4A34DB592753468905179802788F52C337E0187F69C30D52C99546290D09154EAFEE72F9CA32A989AA45AD68220539A6AA302AEA4DCCCE7E6FCF6DEE57440A4511B4BAF5B4832D27247FDED231168413B12A0E1147A5706C56238788A7707463452E1254F2503BA197756F213CBA8B |
105 | 20010329125026 2 6 100 2046 2 7ED0888B660A818F15E5F76A7F2BF10C99D74129DA04446C60116C9C800501060B8AFF075DCE0C08CEFDF695440E6F16FCCDB06359D080EF62D6485CBAEB94B92BE771D535B4EA9C5D14D84CD7649E25C7CFEA2C914486CC2BFDE77C4C0DF1D6DDED65FEE2F53A7FA690AFE38EE00C154FBAEFF935466B176CB0AED02458A552929F4EA7FC3E6F9F758DE7F22CC1F49641F492820441BDC109F0CE18F883FC93EA9AC4C1432682BA1C5B67BED8C861152A5F952A8CDCF1BCE02B8D93E80C113CE9FE2E4ACA49B2978B99A8C5FA231A77F5E7C604D44C7C6EA98D561294D4F7AB061432CAB8BBDCEC3659DE64F65265E6B9FC5F46879BB17CC3499385422E41AB | 105 | 20031210132517 2 6 100 2047 2 EEFD0DF9B60CBF61DDBA3364F8B6254256FC2DF3211B1D80F4556816C5D629B0A40228861BEE7B4497444DD9375EF7E8997BB7294C6AA097A1E5AD47DB72C14956898FD11CA292ED76215E09D8067835150928D5F09267B29214159C0CB695EECC90E05C0E21374ED6F04759B3F0E162EE2CFBC8259BC1A1F28C809700E1F3ECBA24A99A78BCCC6E776348705837F86A2B4A34DB592753468905179802788F52C337E0187F69C30D52C99546290D09154EAFEE72F9CA32A989AA45AD68220539A6AA302AEA4DCCCE7E6FCF6DEE57440A4511B4BAF5B4832D27247FDED231168413B12A0E1147A5706C56238788A7707463452E1254F2503BA197756F21754843 |
106 | 20010329132045 2 6 100 2046 5 7ED0888B660A818F15E5F76A7F2BF10C99D74129DA04446C60116C9C800501060B8AFF075DCE0C08CEFDF695440E6F16FCCDB06359D080EF62D6485CBAEB94B92BE771D535B4EA9C5D14D84CD7649E25C7CFEA2C914486CC2BFDE77C4C0DF1D6DDED65FEE2F53A7FA690AFE38EE00C154FBAEFF935466B176CB0AED02458A552929F4EA7FC3E6F9F758DE7F22CC1F49641F492820441BDC109F0CE18F883FC93EA9AC4C1432682BA1C5B67BED8C861152A5F952A8CDCF1BCE02B8D93E80C113CE9FE2E4ACA49B2978B99A8C5FA231A77F5E7C604D44C7C6EA98D561294D4F7AB061432CAB8BBDCEC3659DE64F65265E6B9FC5F46879BB17CC3499385427DD3FF | 106 | 20031210132855 2 6 100 2047 2 EEFD0DF9B60CBF61DDBA3364F8B6254256FC2DF3211B1D80F4556816C5D629B0A40228861BEE7B4497444DD9375EF7E8997BB7294C6AA097A1E5AD47DB72C14956898FD11CA292ED76215E09D8067835150928D5F09267B29214159C0CB695EECC90E05C0E21374ED6F04759B3F0E162EE2CFBC8259BC1A1F28C809700E1F3ECBA24A99A78BCCC6E776348705837F86A2B4A34DB592753468905179802788F52C337E0187F69C30D52C99546290D09154EAFEE72F9CA32A989AA45AD68220539A6AA302AEA4DCCCE7E6FCF6DEE57440A4511B4BAF5B4832D27247FDED231168413B12A0E1147A5706C56238788A7707463452E1254F2503BA197756F2179D39B |
107 | 20010329134105 2 6 100 2046 5 7ED0888B660A818F15E5F76A7F2BF10C99D74129DA04446C60116C9C800501060B8AFF075DCE0C08CEFDF695440E6F16FCCDB06359D080EF62D6485CBAEB94B92BE771D535B4EA9C5D14D84CD7649E25C7CFEA2C914486CC2BFDE77C4C0DF1D6DDED65FEE2F53A7FA690AFE38EE00C154FBAEFF935466B176CB0AED02458A552929F4EA7FC3E6F9F758DE7F22CC1F49641F492820441BDC109F0CE18F883FC93EA9AC4C1432682BA1C5B67BED8C861152A5F952A8CDCF1BCE02B8D93E80C113CE9FE2E4ACA49B2978B99A8C5FA231A77F5E7C604D44C7C6EA98D561294D4F7AB061432CAB8BBDCEC3659DE64F65265E6B9FC5F46879BB17CC349938542AFA2D7 | 107 | 20031210140211 2 6 100 2047 2 EEFD0DF9B60CBF61DDBA3364F8B6254256FC2DF3211B1D80F4556816C5D629B0A40228861BEE7B4497444DD9375EF7E8997BB7294C6AA097A1E5AD47DB72C14956898FD11CA292ED76215E09D8067835150928D5F09267B29214159C0CB695EECC90E05C0E21374ED6F04759B3F0E162EE2CFBC8259BC1A1F28C809700E1F3ECBA24A99A78BCCC6E776348705837F86A2B4A34DB592753468905179802788F52C337E0187F69C30D52C99546290D09154EAFEE72F9CA32A989AA45AD68220539A6AA302AEA4DCCCE7E6FCF6DEE57440A4511B4BAF5B4832D27247FDED231168413B12A0E1147A5706C56238788A7707463452E1254F2503BA197756F21E6E73B |
108 | 20010329134914 2 6 100 2046 5 7ED0888B660A818F15E5F76A7F2BF10C99D74129DA04446C60116C9C800501060B8AFF075DCE0C08CEFDF695440E6F16FCCDB06359D080EF62D6485CBAEB94B92BE771D535B4EA9C5D14D84CD7649E25C7CFEA2C914486CC2BFDE77C4C0DF1D6DDED65FEE2F53A7FA690AFE38EE00C154FBAEFF935466B176CB0AED02458A552929F4EA7FC3E6F9F758DE7F22CC1F49641F492820441BDC109F0CE18F883FC93EA9AC4C1432682BA1C5B67BED8C861152A5F952A8CDCF1BCE02B8D93E80C113CE9FE2E4ACA49B2978B99A8C5FA231A77F5E7C604D44C7C6EA98D561294D4F7AB061432CAB8BBDCEC3659DE64F65265E6B9FC5F46879BB17CC349938542C04A37 | 108 | 20031210141340 2 6 100 2047 5 EEFD0DF9B60CBF61DDBA3364F8B6254256FC2DF3211B1D80F4556816C5D629B0A40228861BEE7B4497444DD9375EF7E8997BB7294C6AA097A1E5AD47DB72C14956898FD11CA292ED76215E09D8067835150928D5F09267B29214159C0CB695EECC90E05C0E21374ED6F04759B3F0E162EE2CFBC8259BC1A1F28C809700E1F3ECBA24A99A78BCCC6E776348705837F86A2B4A34DB592753468905179802788F52C337E0187F69C30D52C99546290D09154EAFEE72F9CA32A989AA45AD68220539A6AA302AEA4DCCCE7E6FCF6DEE57440A4511B4BAF5B4832D27247FDED231168413B12A0E1147A5706C56238788A7707463452E1254F2503BA197756F22068817 |
109 | 20010403222140 2 6 100 3190 5 669BA3ED661F226A090BE5644A2BB4209371B78FC3E6848A095821993F59084CA5EE12052F977D01F0666F03F6573B199DFEC9AB94588C2C60DE3B3E7CF5094587919FCC3FB40A61C261E891A0F91D9FFC8F30CA12CF809DD8290DD786FA8B041FFAC5793C38F38757EA6790472AC2692185B554B0046E8C065C983C0ACC8D2F85AB4BEDF7CE233009218C9691FE44261580D4149F1D4471B0B5DF79E224252474EBC3B7B5490950BB438BF498E79F8794498B3A3B5FBB42829C3BBEA4067F28C23BE40377B986BD5443CCCF02405B8CCCAA09E8179F0168D4969994171A6AD98F81015BC84E10A44E1EFD2E0862C5D1AAFE99014715A36800DBD9A6C51C0226CC82A651DAE4F73D54C4D103C13D1C15CF8CCA67D5CB39F03C66F3B7467F8FFDCC5074CD0C1B2538FBF956971BF39314CEDD20E1B10DE16D86E10BE7FA5B1A706AEB4C356F49807A22072CD00559AF0A863788956651919E26A315EAD1D26E7C98FC4CFA35A0F04DD400A2991A1FFE5B271FEDE54375896A29F968BE1D511BA466A92AC3E3772709FC815B0AB16DAF | 109 | 20031210143133 2 6 100 2047 5 EEFD0DF9B60CBF61DDBA3364F8B6254256FC2DF3211B1D80F4556816C5D629B0A40228861BEE7B4497444DD9375EF7E8997BB7294C6AA097A1E5AD47DB72C14956898FD11CA292ED76215E09D8067835150928D5F09267B29214159C0CB695EECC90E05C0E21374ED6F04759B3F0E162EE2CFBC8259BC1A1F28C809700E1F3ECBA24A99A78BCCC6E776348705837F86A2B4A34DB592753468905179802788F52C337E0187F69C30D52C99546290D09154EAFEE72F9CA32A989AA45AD68220539A6AA302AEA4DCCCE7E6FCF6DEE57440A4511B4BAF5B4832D27247FDED231168413B12A0E1147A5706C56238788A7707463452E1254F2503BA197756F223D6017 |
110 | 20010403225231 2 6 100 3190 5 669BA3ED661F226A090BE5644A2BB4209371B78FC3E6848A095821993F59084CA5EE12052F977D01F0666F03F6573B199DFEC9AB94588C2C60DE3B3E7CF5094587919FCC3FB40A61C261E891A0F91D9FFC8F30CA12CF809DD8290DD786FA8B041FFAC5793C38F38757EA6790472AC2692185B554B0046E8C065C983C0ACC8D2F85AB4BEDF7CE233009218C9691FE44261580D4149F1D4471B0B5DF79E224252474EBC3B7B5490950BB438BF498E79F8794498B3A3B5FBB42829C3BBEA4067F28C23BE40377B986BD5443CCCF02405B8CCCAA09E8179F0168D4969994171A6AD98F81015BC84E10A44E1EFD2E0862C5D1AAFE99014715A36800DBD9A6C51C0226CC82A651DAE4F73D54C4D103C13D1C15CF8CCA67D5CB39F03C66F3B7467F8FFDCC5074CD0C1B2538FBF956971BF39314CEDD20E1B10DE16D86E10BE7FA5B1A706AEB4C356F49807A22072CD00559AF0A863788956651919E26A315EAD1D26E7C98FC4CFA35A0F04DD400A2991A1FFE5B271FEDE54375896A29F968BE1D511BA466A92AC3E3772709FC815B0AC56CFF | 110 | 20031210143812 2 6 100 2047 2 EEFD0DF9B60CBF61DDBA3364F8B6254256FC2DF3211B1D80F4556816C5D629B0A40228861BEE7B4497444DD9375EF7E8997BB7294C6AA097A1E5AD47DB72C14956898FD11CA292ED76215E09D8067835150928D5F09267B29214159C0CB695EECC90E05C0E21374ED6F04759B3F0E162EE2CFBC8259BC1A1F28C809700E1F3ECBA24A99A78BCCC6E776348705837F86A2B4A34DB592753468905179802788F52C337E0187F69C30D52C99546290D09154EAFEE72F9CA32A989AA45AD68220539A6AA302AEA4DCCCE7E6FCF6DEE57440A4511B4BAF5B4832D27247FDED231168413B12A0E1147A5706C56238788A7707463452E1254F2503BA197756F224A70F3 |
111 | 20010404053436 2 6 100 3190 5 669BA3ED661F226A090BE5644A2BB4209371B78FC3E6848A095821993F59084CA5EE12052F977D01F0666F03F6573B199DFEC9AB94588C2C60DE3B3E7CF5094587919FCC3FB40A61C261E891A0F91D9FFC8F30CA12CF809DD8290DD786FA8B041FFAC5793C38F38757EA6790472AC2692185B554B0046E8C065C983C0ACC8D2F85AB4BEDF7CE233009218C9691FE44261580D4149F1D4471B0B5DF79E224252474EBC3B7B5490950BB438BF498E79F8794498B3A3B5FBB42829C3BBEA4067F28C23BE40377B986BD5443CCCF02405B8CCCAA09E8179F0168D4969994171A6AD98F81015BC84E10A44E1EFD2E0862C5D1AAFE99014715A36800DBD9A6C51C0226CC82A651DAE4F73D54C4D103C13D1C15CF8CCA67D5CB39F03C66F3B7467F8FFDCC5074CD0C1B2538FBF956971BF39314CEDD20E1B10DE16D86E10BE7FA5B1A706AEB4C356F49807A22072CD00559AF0A863788956651919E26A315EAD1D26E7C98FC4CFA35A0F04DD400A2991A1FFE5B271FEDE54375896A29F968BE1D511BA466A92AC3E3772709FC815B0C2F4B7F | 111 | 20031210150410 2 6 100 2047 2 EEFD0DF9B60CBF61DDBA3364F8B6254256FC2DF3211B1D80F4556816C5D629B0A40228861BEE7B4497444DD9375EF7E8997BB7294C6AA097A1E5AD47DB72C14956898FD11CA292ED76215E09D8067835150928D5F09267B29214159C0CB695EECC90E05C0E21374ED6F04759B3F0E162EE2CFBC8259BC1A1F28C809700E1F3ECBA24A99A78BCCC6E776348705837F86A2B4A34DB592753468905179802788F52C337E0187F69C30D52C99546290D09154EAFEE72F9CA32A989AA45AD68220539A6AA302AEA4DCCCE7E6FCF6DEE57440A4511B4BAF5B4832D27247FDED231168413B12A0E1147A5706C56238788A7707463452E1254F2503BA197756F22A24CFB |
112 | 20010404092851 2 6 100 3190 5 669BA3ED661F226A090BE5644A2BB4209371B78FC3E6848A095821993F59084CA5EE12052F977D01F0666F03F6573B199DFEC9AB94588C2C60DE3B3E7CF5094587919FCC3FB40A61C261E891A0F91D9FFC8F30CA12CF809DD8290DD786FA8B041FFAC5793C38F38757EA6790472AC2692185B554B0046E8C065C983C0ACC8D2F85AB4BEDF7CE233009218C9691FE44261580D4149F1D4471B0B5DF79E224252474EBC3B7B5490950BB438BF498E79F8794498B3A3B5FBB42829C3BBEA4067F28C23BE40377B986BD5443CCCF02405B8CCCAA09E8179F0168D4969994171A6AD98F81015BC84E10A44E1EFD2E0862C5D1AAFE99014715A36800DBD9A6C51C0226CC82A651DAE4F73D54C4D103C13D1C15CF8CCA67D5CB39F03C66F3B7467F8FFDCC5074CD0C1B2538FBF956971BF39314CEDD20E1B10DE16D86E10BE7FA5B1A706AEB4C356F49807A22072CD00559AF0A863788956651919E26A315EAD1D26E7C98FC4CFA35A0F04DD400A2991A1FFE5B271FEDE54375896A29F968BE1D511BA466A92AC3E3772709FC815B0D04E7F7 | 112 | 20031210153131 2 6 100 2047 2 EEFD0DF9B60CBF61DDBA3364F8B6254256FC2DF3211B1D80F4556816C5D629B0A40228861BEE7B4497444DD9375EF7E8997BB7294C6AA097A1E5AD47DB72C14956898FD11CA292ED76215E09D8067835150928D5F09267B29214159C0CB695EECC90E05C0E21374ED6F04759B3F0E162EE2CFBC8259BC1A1F28C809700E1F3ECBA24A99A78BCCC6E776348705837F86A2B4A34DB592753468905179802788F52C337E0187F69C30D52C99546290D09154EAFEE72F9CA32A989AA45AD68220539A6AA302AEA4DCCCE7E6FCF6DEE57440A4511B4BAF5B4832D27247FDED231168413B12A0E1147A5706C56238788A7707463452E1254F2503BA197756F22FAA253 |
113 | 20010404093943 2 6 100 3190 2 669BA3ED661F226A090BE5644A2BB4209371B78FC3E6848A095821993F59084CA5EE12052F977D01F0666F03F6573B199DFEC9AB94588C2C60DE3B3E7CF5094587919FCC3FB40A61C261E891A0F91D9FFC8F30CA12CF809DD8290DD786FA8B041FFAC5793C38F38757EA6790472AC2692185B554B0046E8C065C983C0ACC8D2F85AB4BEDF7CE233009218C9691FE44261580D4149F1D4471B0B5DF79E224252474EBC3B7B5490950BB438BF498E79F8794498B3A3B5FBB42829C3BBEA4067F28C23BE40377B986BD5443CCCF02405B8CCCAA09E8179F0168D4969994171A6AD98F81015BC84E10A44E1EFD2E0862C5D1AAFE99014715A36800DBD9A6C51C0226CC82A651DAE4F73D54C4D103C13D1C15CF8CCA67D5CB39F03C66F3B7467F8FFDCC5074CD0C1B2538FBF956971BF39314CEDD20E1B10DE16D86E10BE7FA5B1A706AEB4C356F49807A22072CD00559AF0A863788956651919E26A315EAD1D26E7C98FC4CFA35A0F04DD400A2991A1FFE5B271FEDE54375896A29F968BE1D511BA466A92AC3E3772709FC815B0D07794B | 113 | 20031210153718 2 6 100 2047 2 EEFD0DF9B60CBF61DDBA3364F8B6254256FC2DF3211B1D80F4556816C5D629B0A40228861BEE7B4497444DD9375EF7E8997BB7294C6AA097A1E5AD47DB72C14956898FD11CA292ED76215E09D8067835150928D5F09267B29214159C0CB695EECC90E05C0E21374ED6F04759B3F0E162EE2CFBC8259BC1A1F28C809700E1F3ECBA24A99A78BCCC6E776348705837F86A2B4A34DB592753468905179802788F52C337E0187F69C30D52C99546290D09154EAFEE72F9CA32A989AA45AD68220539A6AA302AEA4DCCCE7E6FCF6DEE57440A4511B4BAF5B4832D27247FDED231168413B12A0E1147A5706C56238788A7707463452E1254F2503BA197756F23071C7B |
114 | 20010404102659 2 6 100 3190 5 669BA3ED661F226A090BE5644A2BB4209371B78FC3E6848A095821993F59084CA5EE12052F977D01F0666F03F6573B199DFEC9AB94588C2C60DE3B3E7CF5094587919FCC3FB40A61C261E891A0F91D9FFC8F30CA12CF809DD8290DD786FA8B041FFAC5793C38F38757EA6790472AC2692185B554B0046E8C065C983C0ACC8D2F85AB4BEDF7CE233009218C9691FE44261580D4149F1D4471B0B5DF79E224252474EBC3B7B5490950BB438BF498E79F8794498B3A3B5FBB42829C3BBEA4067F28C23BE40377B986BD5443CCCF02405B8CCCAA09E8179F0168D4969994171A6AD98F81015BC84E10A44E1EFD2E0862C5D1AAFE99014715A36800DBD9A6C51C0226CC82A651DAE4F73D54C4D103C13D1C15CF8CCA67D5CB39F03C66F3B7467F8FFDCC5074CD0C1B2538FBF956971BF39314CEDD20E1B10DE16D86E10BE7FA5B1A706AEB4C356F49807A22072CD00559AF0A863788956651919E26A315EAD1D26E7C98FC4CFA35A0F04DD400A2991A1FFE5B271FEDE54375896A29F968BE1D511BA466A92AC3E3772709FC815B0D2BE8CF | 114 | 20031210154203 2 6 100 2047 2 EEFD0DF9B60CBF61DDBA3364F8B6254256FC2DF3211B1D80F4556816C5D629B0A40228861BEE7B4497444DD9375EF7E8997BB7294C6AA097A1E5AD47DB72C14956898FD11CA292ED76215E09D8067835150928D5F09267B29214159C0CB695EECC90E05C0E21374ED6F04759B3F0E162EE2CFBC8259BC1A1F28C809700E1F3ECBA24A99A78BCCC6E776348705837F86A2B4A34DB592753468905179802788F52C337E0187F69C30D52C99546290D09154EAFEE72F9CA32A989AA45AD68220539A6AA302AEA4DCCCE7E6FCF6DEE57440A4511B4BAF5B4832D27247FDED231168413B12A0E1147A5706C56238788A7707463452E1254F2503BA197756F230FFC0B |
115 | 20010404112553 2 6 100 3190 2 669BA3ED661F226A090BE5644A2BB4209371B78FC3E6848A095821993F59084CA5EE12052F977D01F0666F03F6573B199DFEC9AB94588C2C60DE3B3E7CF5094587919FCC3FB40A61C261E891A0F91D9FFC8F30CA12CF809DD8290DD786FA8B041FFAC5793C38F38757EA6790472AC2692185B554B0046E8C065C983C0ACC8D2F85AB4BEDF7CE233009218C9691FE44261580D4149F1D4471B0B5DF79E224252474EBC3B7B5490950BB438BF498E79F8794498B3A3B5FBB42829C3BBEA4067F28C23BE40377B986BD5443CCCF02405B8CCCAA09E8179F0168D4969994171A6AD98F81015BC84E10A44E1EFD2E0862C5D1AAFE99014715A36800DBD9A6C51C0226CC82A651DAE4F73D54C4D103C13D1C15CF8CCA67D5CB39F03C66F3B7467F8FFDCC5074CD0C1B2538FBF956971BF39314CEDD20E1B10DE16D86E10BE7FA5B1A706AEB4C356F49807A22072CD00559AF0A863788956651919E26A315EAD1D26E7C98FC4CFA35A0F04DD400A2991A1FFE5B271FEDE54375896A29F968BE1D511BA466A92AC3E3772709FC815B0D5D012B | 115 | 20031210161808 2 6 100 2047 2 EEFD0DF9B60CBF61DDBA3364F8B6254256FC2DF3211B1D80F4556816C5D629B0A40228861BEE7B4497444DD9375EF7E8997BB7294C6AA097A1E5AD47DB72C14956898FD11CA292ED76215E09D8067835150928D5F09267B29214159C0CB695EECC90E05C0E21374ED6F04759B3F0E162EE2CFBC8259BC1A1F28C809700E1F3ECBA24A99A78BCCC6E776348705837F86A2B4A34DB592753468905179802788F52C337E0187F69C30D52C99546290D09154EAFEE72F9CA32A989AA45AD68220539A6AA302AEA4DCCCE7E6FCF6DEE57440A4511B4BAF5B4832D27247FDED231168413B12A0E1147A5706C56238788A7707463452E1254F2503BA197756F2383B65B |
116 | 20010404174625 2 6 100 3190 5 669BA3ED661F226A090BE5644A2BB4209371B78FC3E6848A095821993F59084CA5EE12052F977D01F0666F03F6573B199DFEC9AB94588C2C60DE3B3E7CF5094587919FCC3FB40A61C261E891A0F91D9FFC8F30CA12CF809DD8290DD786FA8B041FFAC5793C38F38757EA6790472AC2692185B554B0046E8C065C983C0ACC8D2F85AB4BEDF7CE233009218C9691FE44261580D4149F1D4471B0B5DF79E224252474EBC3B7B5490950BB438BF498E79F8794498B3A3B5FBB42829C3BBEA4067F28C23BE40377B986BD5443CCCF02405B8CCCAA09E8179F0168D4969994171A6AD98F81015BC84E10A44E1EFD2E0862C5D1AAFE99014715A36800DBD9A6C51C0226CC82A651DAE4F73D54C4D103C13D1C15CF8CCA67D5CB39F03C66F3B7467F8FFDCC5074CD0C1B2538FBF956971BF39314CEDD20E1B10DE16D86E10BE7FA5B1A706AEB4C356F49807A22072CD00559AF0A863788956651919E26A315EAD1D26E7C98FC4CFA35A0F04DD400A2991A1FFE5B271FEDE54375896A29F968BE1D511BA466A92AC3E3772709FC815B0EA59E17 | 116 | 20031210185714 2 6 100 3071 2 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A3061924F36F3 |
117 | 20010404184645 2 6 100 3190 5 669BA3ED661F226A090BE5644A2BB4209371B78FC3E6848A095821993F59084CA5EE12052F977D01F0666F03F6573B199DFEC9AB94588C2C60DE3B3E7CF5094587919FCC3FB40A61C261E891A0F91D9FFC8F30CA12CF809DD8290DD786FA8B041FFAC5793C38F38757EA6790472AC2692185B554B0046E8C065C983C0ACC8D2F85AB4BEDF7CE233009218C9691FE44261580D4149F1D4471B0B5DF79E224252474EBC3B7B5490950BB438BF498E79F8794498B3A3B5FBB42829C3BBEA4067F28C23BE40377B986BD5443CCCF02405B8CCCAA09E8179F0168D4969994171A6AD98F81015BC84E10A44E1EFD2E0862C5D1AAFE99014715A36800DBD9A6C51C0226CC82A651DAE4F73D54C4D103C13D1C15CF8CCA67D5CB39F03C66F3B7467F8FFDCC5074CD0C1B2538FBF956971BF39314CEDD20E1B10DE16D86E10BE7FA5B1A706AEB4C356F49807A22072CD00559AF0A863788956651919E26A315EAD1D26E7C98FC4CFA35A0F04DD400A2991A1FFE5B271FEDE54375896A29F968BE1D511BA466A92AC3E3772709FC815B0ED6DA4F | 117 | 20031210204537 2 6 100 3071 2 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A306192C04AB3 |
118 | 20010404193402 2 6 100 3190 2 669BA3ED661F226A090BE5644A2BB4209371B78FC3E6848A095821993F59084CA5EE12052F977D01F0666F03F6573B199DFEC9AB94588C2C60DE3B3E7CF5094587919FCC3FB40A61C261E891A0F91D9FFC8F30CA12CF809DD8290DD786FA8B041FFAC5793C38F38757EA6790472AC2692185B554B0046E8C065C983C0ACC8D2F85AB4BEDF7CE233009218C9691FE44261580D4149F1D4471B0B5DF79E224252474EBC3B7B5490950BB438BF498E79F8794498B3A3B5FBB42829C3BBEA4067F28C23BE40377B986BD5443CCCF02405B8CCCAA09E8179F0168D4969994171A6AD98F81015BC84E10A44E1EFD2E0862C5D1AAFE99014715A36800DBD9A6C51C0226CC82A651DAE4F73D54C4D103C13D1C15CF8CCA67D5CB39F03C66F3B7467F8FFDCC5074CD0C1B2538FBF956971BF39314CEDD20E1B10DE16D86E10BE7FA5B1A706AEB4C356F49807A22072CD00559AF0A863788956651919E26A315EAD1D26E7C98FC4CFA35A0F04DD400A2991A1FFE5B271FEDE54375896A29F968BE1D511BA466A92AC3E3772709FC815B0EFB39B3 | 118 | 20031210205604 2 6 100 3071 2 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A306192C3734B |
119 | 20010404230716 2 6 100 3190 2 669BA3ED661F226A090BE5644A2BB4209371B78FC3E6848A095821993F59084CA5EE12052F977D01F0666F03F6573B199DFEC9AB94588C2C60DE3B3E7CF5094587919FCC3FB40A61C261E891A0F91D9FFC8F30CA12CF809DD8290DD786FA8B041FFAC5793C38F38757EA6790472AC2692185B554B0046E8C065C983C0ACC8D2F85AB4BEDF7CE233009218C9691FE44261580D4149F1D4471B0B5DF79E224252474EBC3B7B5490950BB438BF498E79F8794498B3A3B5FBB42829C3BBEA4067F28C23BE40377B986BD5443CCCF02405B8CCCAA09E8179F0168D4969994171A6AD98F81015BC84E10A44E1EFD2E0862C5D1AAFE99014715A36800DBD9A6C51C0226CC82A651DAE4F73D54C4D103C13D1C15CF8CCA67D5CB39F03C66F3B7467F8FFDCC5074CD0C1B2538FBF956971BF39314CEDD20E1B10DE16D86E10BE7FA5B1A706AEB4C356F49807A22072CD00559AF0A863788956651919E26A315EAD1D26E7C98FC4CFA35A0F04DD400A2991A1FFE5B271FEDE54375896A29F968BE1D511BA466A92AC3E3772709FC815B0FB07C1B | 119 | 20031210210523 2 6 100 3071 2 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A306192C58A0B |
120 | 20010405044433 2 6 100 3190 2 669BA3ED661F226A090BE5644A2BB4209371B78FC3E6848A095821993F59084CA5EE12052F977D01F0666F03F6573B199DFEC9AB94588C2C60DE3B3E7CF5094587919FCC3FB40A61C261E891A0F91D9FFC8F30CA12CF809DD8290DD786FA8B041FFAC5793C38F38757EA6790472AC2692185B554B0046E8C065C983C0ACC8D2F85AB4BEDF7CE233009218C9691FE44261580D4149F1D4471B0B5DF79E224252474EBC3B7B5490950BB438BF498E79F8794498B3A3B5FBB42829C3BBEA4067F28C23BE40377B986BD5443CCCF02405B8CCCAA09E8179F0168D4969994171A6AD98F81015BC84E10A44E1EFD2E0862C5D1AAFE99014715A36800DBD9A6C51C0226CC82A651DAE4F73D54C4D103C13D1C15CF8CCA67D5CB39F03C66F3B7467F8FFDCC5074CD0C1B2538FBF956971BF39314CEDD20E1B10DE16D86E10BE7FA5B1A706AEB4C356F49807A22072CD00559AF0A863788956651919E26A315EAD1D26E7C98FC4CFA35A0F04DD400A2991A1FFE5B271FEDE54375896A29F968BE1D511BA466A92AC3E3772709FC815B10DD9FC3 | 120 | 20031210233701 2 6 100 3071 2 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A306193680D03 |
121 | 20010405053429 2 6 100 3190 5 669BA3ED661F226A090BE5644A2BB4209371B78FC3E6848A095821993F59084CA5EE12052F977D01F0666F03F6573B199DFEC9AB94588C2C60DE3B3E7CF5094587919FCC3FB40A61C261E891A0F91D9FFC8F30CA12CF809DD8290DD786FA8B041FFAC5793C38F38757EA6790472AC2692185B554B0046E8C065C983C0ACC8D2F85AB4BEDF7CE233009218C9691FE44261580D4149F1D4471B0B5DF79E224252474EBC3B7B5490950BB438BF498E79F8794498B3A3B5FBB42829C3BBEA4067F28C23BE40377B986BD5443CCCF02405B8CCCAA09E8179F0168D4969994171A6AD98F81015BC84E10A44E1EFD2E0862C5D1AAFE99014715A36800DBD9A6C51C0226CC82A651DAE4F73D54C4D103C13D1C15CF8CCA67D5CB39F03C66F3B7467F8FFDCC5074CD0C1B2538FBF956971BF39314CEDD20E1B10DE16D86E10BE7FA5B1A706AEB4C356F49807A22072CD00559AF0A863788956651919E26A315EAD1D26E7C98FC4CFA35A0F04DD400A2991A1FFE5B271FEDE54375896A29F968BE1D511BA466A92AC3E3772709FC815B11038737 | 121 | 20031211013125 2 6 100 3071 2 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A306193E1DD73 |
122 | 20010405062826 2 6 100 3190 5 669BA3ED661F226A090BE5644A2BB4209371B78FC3E6848A095821993F59084CA5EE12052F977D01F0666F03F6573B199DFEC9AB94588C2C60DE3B3E7CF5094587919FCC3FB40A61C261E891A0F91D9FFC8F30CA12CF809DD8290DD786FA8B041FFAC5793C38F38757EA6790472AC2692185B554B0046E8C065C983C0ACC8D2F85AB4BEDF7CE233009218C9691FE44261580D4149F1D4471B0B5DF79E224252474EBC3B7B5490950BB438BF498E79F8794498B3A3B5FBB42829C3BBEA4067F28C23BE40377B986BD5443CCCF02405B8CCCAA09E8179F0168D4969994171A6AD98F81015BC84E10A44E1EFD2E0862C5D1AAFE99014715A36800DBD9A6C51C0226CC82A651DAE4F73D54C4D103C13D1C15CF8CCA67D5CB39F03C66F3B7467F8FFDCC5074CD0C1B2538FBF956971BF39314CEDD20E1B10DE16D86E10BE7FA5B1A706AEB4C356F49807A22072CD00559AF0A863788956651919E26A315EAD1D26E7C98FC4CFA35A0F04DD400A2991A1FFE5B271FEDE54375896A29F968BE1D511BA466A92AC3E3772709FC815B112E24E7 | 122 | 20031211052015 2 6 100 3071 2 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A306194DA94E3 |
123 | 20010405092601 2 6 100 3190 2 669BA3ED661F226A090BE5644A2BB4209371B78FC3E6848A095821993F59084CA5EE12052F977D01F0666F03F6573B199DFEC9AB94588C2C60DE3B3E7CF5094587919FCC3FB40A61C261E891A0F91D9FFC8F30CA12CF809DD8290DD786FA8B041FFAC5793C38F38757EA6790472AC2692185B554B0046E8C065C983C0ACC8D2F85AB4BEDF7CE233009218C9691FE44261580D4149F1D4471B0B5DF79E224252474EBC3B7B5490950BB438BF498E79F8794498B3A3B5FBB42829C3BBEA4067F28C23BE40377B986BD5443CCCF02405B8CCCAA09E8179F0168D4969994171A6AD98F81015BC84E10A44E1EFD2E0862C5D1AAFE99014715A36800DBD9A6C51C0226CC82A651DAE4F73D54C4D103C13D1C15CF8CCA67D5CB39F03C66F3B7467F8FFDCC5074CD0C1B2538FBF956971BF39314CEDD20E1B10DE16D86E10BE7FA5B1A706AEB4C356F49807A22072CD00559AF0A863788956651919E26A315EAD1D26E7C98FC4CFA35A0F04DD400A2991A1FFE5B271FEDE54375896A29F968BE1D511BA466A92AC3E3772709FC815B11C9E9FB | 123 | 20031211064439 2 6 100 3071 5 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A30619531A017 |
124 | 20010405113007 2 6 100 3190 2 669BA3ED661F226A090BE5644A2BB4209371B78FC3E6848A095821993F59084CA5EE12052F977D01F0666F03F6573B199DFEC9AB94588C2C60DE3B3E7CF5094587919FCC3FB40A61C261E891A0F91D9FFC8F30CA12CF809DD8290DD786FA8B041FFAC5793C38F38757EA6790472AC2692185B554B0046E8C065C983C0ACC8D2F85AB4BEDF7CE233009218C9691FE44261580D4149F1D4471B0B5DF79E224252474EBC3B7B5490950BB438BF498E79F8794498B3A3B5FBB42829C3BBEA4067F28C23BE40377B986BD5443CCCF02405B8CCCAA09E8179F0168D4969994171A6AD98F81015BC84E10A44E1EFD2E0862C5D1AAFE99014715A36800DBD9A6C51C0226CC82A651DAE4F73D54C4D103C13D1C15CF8CCA67D5CB39F03C66F3B7467F8FFDCC5074CD0C1B2538FBF956971BF39314CEDD20E1B10DE16D86E10BE7FA5B1A706AEB4C356F49807A22072CD00559AF0A863788956651919E26A315EAD1D26E7C98FC4CFA35A0F04DD400A2991A1FFE5B271FEDE54375896A29F968BE1D511BA466A92AC3E3772709FC815B123803EB | 124 | 20031211074935 2 6 100 3071 2 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A306195731BAB |
125 | 20010405122212 2 6 100 3190 2 669BA3ED661F226A090BE5644A2BB4209371B78FC3E6848A095821993F59084CA5EE12052F977D01F0666F03F6573B199DFEC9AB94588C2C60DE3B3E7CF5094587919FCC3FB40A61C261E891A0F91D9FFC8F30CA12CF809DD8290DD786FA8B041FFAC5793C38F38757EA6790472AC2692185B554B0046E8C065C983C0ACC8D2F85AB4BEDF7CE233009218C9691FE44261580D4149F1D4471B0B5DF79E224252474EBC3B7B5490950BB438BF498E79F8794498B3A3B5FBB42829C3BBEA4067F28C23BE40377B986BD5443CCCF02405B8CCCAA09E8179F0168D4969994171A6AD98F81015BC84E10A44E1EFD2E0862C5D1AAFE99014715A36800DBD9A6C51C0226CC82A651DAE4F73D54C4D103C13D1C15CF8CCA67D5CB39F03C66F3B7467F8FFDCC5074CD0C1B2538FBF956971BF39314CEDD20E1B10DE16D86E10BE7FA5B1A706AEB4C356F49807A22072CD00559AF0A863788956651919E26A315EAD1D26E7C98FC4CFA35A0F04DD400A2991A1FFE5B271FEDE54375896A29F968BE1D511BA466A92AC3E3772709FC815B12612ED3 | 125 | 20031211081053 2 6 100 3071 2 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A306195830BAB |
126 | 20010405182035 2 6 100 3190 5 669BA3ED661F226A090BE5644A2BB4209371B78FC3E6848A095821993F59084CA5EE12052F977D01F0666F03F6573B199DFEC9AB94588C2C60DE3B3E7CF5094587919FCC3FB40A61C261E891A0F91D9FFC8F30CA12CF809DD8290DD786FA8B041FFAC5793C38F38757EA6790472AC2692185B554B0046E8C065C983C0ACC8D2F85AB4BEDF7CE233009218C9691FE44261580D4149F1D4471B0B5DF79E224252474EBC3B7B5490950BB438BF498E79F8794498B3A3B5FBB42829C3BBEA4067F28C23BE40377B986BD5443CCCF02405B8CCCAA09E8179F0168D4969994171A6AD98F81015BC84E10A44E1EFD2E0862C5D1AAFE99014715A36800DBD9A6C51C0226CC82A651DAE4F73D54C4D103C13D1C15CF8CCA67D5CB39F03C66F3B7467F8FFDCC5074CD0C1B2538FBF956971BF39314CEDD20E1B10DE16D86E10BE7FA5B1A706AEB4C356F49807A22072CD00559AF0A863788956651919E26A315EAD1D26E7C98FC4CFA35A0F04DD400A2991A1FFE5B271FEDE54375896A29F968BE1D511BA466A92AC3E3772709FC815B13A25087 | 126 | 20031211123240 2 6 100 3071 5 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A306196A4C097 |
127 | 20010405210758 2 6 100 3190 2 669BA3ED661F226A090BE5644A2BB4209371B78FC3E6848A095821993F59084CA5EE12052F977D01F0666F03F6573B199DFEC9AB94588C2C60DE3B3E7CF5094587919FCC3FB40A61C261E891A0F91D9FFC8F30CA12CF809DD8290DD786FA8B041FFAC5793C38F38757EA6790472AC2692185B554B0046E8C065C983C0ACC8D2F85AB4BEDF7CE233009218C9691FE44261580D4149F1D4471B0B5DF79E224252474EBC3B7B5490950BB438BF498E79F8794498B3A3B5FBB42829C3BBEA4067F28C23BE40377B986BD5443CCCF02405B8CCCAA09E8179F0168D4969994171A6AD98F81015BC84E10A44E1EFD2E0862C5D1AAFE99014715A36800DBD9A6C51C0226CC82A651DAE4F73D54C4D103C13D1C15CF8CCA67D5CB39F03C66F3B7467F8FFDCC5074CD0C1B2538FBF956971BF39314CEDD20E1B10DE16D86E10BE7FA5B1A706AEB4C356F49807A22072CD00559AF0A863788956651919E26A315EAD1D26E7C98FC4CFA35A0F04DD400A2991A1FFE5B271FEDE54375896A29F968BE1D511BA466A92AC3E3772709FC815B142C4E23 | 127 | 20031211160831 2 6 100 3071 2 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A3061978B740B |
128 | 20010405220222 2 6 100 3190 2 669BA3ED661F226A090BE5644A2BB4209371B78FC3E6848A095821993F59084CA5EE12052F977D01F0666F03F6573B199DFEC9AB94588C2C60DE3B3E7CF5094587919FCC3FB40A61C261E891A0F91D9FFC8F30CA12CF809DD8290DD786FA8B041FFAC5793C38F38757EA6790472AC2692185B554B0046E8C065C983C0ACC8D2F85AB4BEDF7CE233009218C9691FE44261580D4149F1D4471B0B5DF79E224252474EBC3B7B5490950BB438BF498E79F8794498B3A3B5FBB42829C3BBEA4067F28C23BE40377B986BD5443CCCF02405B8CCCAA09E8179F0168D4969994171A6AD98F81015BC84E10A44E1EFD2E0862C5D1AAFE99014715A36800DBD9A6C51C0226CC82A651DAE4F73D54C4D103C13D1C15CF8CCA67D5CB39F03C66F3B7467F8FFDCC5074CD0C1B2538FBF956971BF39314CEDD20E1B10DE16D86E10BE7FA5B1A706AEB4C356F49807A22072CD00559AF0A863788956651919E26A315EAD1D26E7C98FC4CFA35A0F04DD400A2991A1FFE5B271FEDE54375896A29F968BE1D511BA466A92AC3E3772709FC815B145878F3 | 128 | 20031211195847 2 6 100 3071 2 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A30619889E1B3 |
129 | 20010406020130 2 6 100 3190 2 669BA3ED661F226A090BE5644A2BB4209371B78FC3E6848A095821993F59084CA5EE12052F977D01F0666F03F6573B199DFEC9AB94588C2C60DE3B3E7CF5094587919FCC3FB40A61C261E891A0F91D9FFC8F30CA12CF809DD8290DD786FA8B041FFAC5793C38F38757EA6790472AC2692185B554B0046E8C065C983C0ACC8D2F85AB4BEDF7CE233009218C9691FE44261580D4149F1D4471B0B5DF79E224252474EBC3B7B5490950BB438BF498E79F8794498B3A3B5FBB42829C3BBEA4067F28C23BE40377B986BD5443CCCF02405B8CCCAA09E8179F0168D4969994171A6AD98F81015BC84E10A44E1EFD2E0862C5D1AAFE99014715A36800DBD9A6C51C0226CC82A651DAE4F73D54C4D103C13D1C15CF8CCA67D5CB39F03C66F3B7467F8FFDCC5074CD0C1B2538FBF956971BF39314CEDD20E1B10DE16D86E10BE7FA5B1A706AEB4C356F49807A22072CD00559AF0A863788956651919E26A315EAD1D26E7C98FC4CFA35A0F04DD400A2991A1FFE5B271FEDE54375896A29F968BE1D511BA466A92AC3E3772709FC815B152AF6AB | 129 | 20031211201456 2 6 100 3071 2 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A30619892ED83 |
130 | 20010406053538 2 6 100 3190 2 669BA3ED661F226A090BE5644A2BB4209371B78FC3E6848A095821993F59084CA5EE12052F977D01F0666F03F6573B199DFEC9AB94588C2C60DE3B3E7CF5094587919FCC3FB40A61C261E891A0F91D9FFC8F30CA12CF809DD8290DD786FA8B041FFAC5793C38F38757EA6790472AC2692185B554B0046E8C065C983C0ACC8D2F85AB4BEDF7CE233009218C9691FE44261580D4149F1D4471B0B5DF79E224252474EBC3B7B5490950BB438BF498E79F8794498B3A3B5FBB42829C3BBEA4067F28C23BE40377B986BD5443CCCF02405B8CCCAA09E8179F0168D4969994171A6AD98F81015BC84E10A44E1EFD2E0862C5D1AAFE99014715A36800DBD9A6C51C0226CC82A651DAE4F73D54C4D103C13D1C15CF8CCA67D5CB39F03C66F3B7467F8FFDCC5074CD0C1B2538FBF956971BF39314CEDD20E1B10DE16D86E10BE7FA5B1A706AEB4C356F49807A22072CD00559AF0A863788956651919E26A315EAD1D26E7C98FC4CFA35A0F04DD400A2991A1FFE5B271FEDE54375896A29F968BE1D511BA466A92AC3E3772709FC815B15E78C8B | 130 | 20031211221441 2 6 100 3071 2 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A30619910A74B |
131 | 20010406073014 2 6 100 3190 5 669BA3ED661F226A090BE5644A2BB4209371B78FC3E6848A095821993F59084CA5EE12052F977D01F0666F03F6573B199DFEC9AB94588C2C60DE3B3E7CF5094587919FCC3FB40A61C261E891A0F91D9FFC8F30CA12CF809DD8290DD786FA8B041FFAC5793C38F38757EA6790472AC2692185B554B0046E8C065C983C0ACC8D2F85AB4BEDF7CE233009218C9691FE44261580D4149F1D4471B0B5DF79E224252474EBC3B7B5490950BB438BF498E79F8794498B3A3B5FBB42829C3BBEA4067F28C23BE40377B986BD5443CCCF02405B8CCCAA09E8179F0168D4969994171A6AD98F81015BC84E10A44E1EFD2E0862C5D1AAFE99014715A36800DBD9A6C51C0226CC82A651DAE4F73D54C4D103C13D1C15CF8CCA67D5CB39F03C66F3B7467F8FFDCC5074CD0C1B2538FBF956971BF39314CEDD20E1B10DE16D86E10BE7FA5B1A706AEB4C356F49807A22072CD00559AF0A863788956651919E26A315EAD1D26E7C98FC4CFA35A0F04DD400A2991A1FFE5B271FEDE54375896A29F968BE1D511BA466A92AC3E3772709FC815B1649BFEF | 131 | 20031211223303 2 6 100 3071 2 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A3061991D35CB |
132 | 20010406074100 2 6 100 3190 5 669BA3ED661F226A090BE5644A2BB4209371B78FC3E6848A095821993F59084CA5EE12052F977D01F0666F03F6573B199DFEC9AB94588C2C60DE3B3E7CF5094587919FCC3FB40A61C261E891A0F91D9FFC8F30CA12CF809DD8290DD786FA8B041FFAC5793C38F38757EA6790472AC2692185B554B0046E8C065C983C0ACC8D2F85AB4BEDF7CE233009218C9691FE44261580D4149F1D4471B0B5DF79E224252474EBC3B7B5490950BB438BF498E79F8794498B3A3B5FBB42829C3BBEA4067F28C23BE40377B986BD5443CCCF02405B8CCCAA09E8179F0168D4969994171A6AD98F81015BC84E10A44E1EFD2E0862C5D1AAFE99014715A36800DBD9A6C51C0226CC82A651DAE4F73D54C4D103C13D1C15CF8CCA67D5CB39F03C66F3B7467F8FFDCC5074CD0C1B2538FBF956971BF39314CEDD20E1B10DE16D86E10BE7FA5B1A706AEB4C356F49807A22072CD00559AF0A863788956651919E26A315EAD1D26E7C98FC4CFA35A0F04DD400A2991A1FFE5B271FEDE54375896A29F968BE1D511BA466A92AC3E3772709FC815B164D4E3F | 132 | 20031211235558 2 6 100 3071 2 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A306199712CCB |
133 | 20010406103625 2 6 100 3190 2 669BA3ED661F226A090BE5644A2BB4209371B78FC3E6848A095821993F59084CA5EE12052F977D01F0666F03F6573B199DFEC9AB94588C2C60DE3B3E7CF5094587919FCC3FB40A61C261E891A0F91D9FFC8F30CA12CF809DD8290DD786FA8B041FFAC5793C38F38757EA6790472AC2692185B554B0046E8C065C983C0ACC8D2F85AB4BEDF7CE233009218C9691FE44261580D4149F1D4471B0B5DF79E224252474EBC3B7B5490950BB438BF498E79F8794498B3A3B5FBB42829C3BBEA4067F28C23BE40377B986BD5443CCCF02405B8CCCAA09E8179F0168D4969994171A6AD98F81015BC84E10A44E1EFD2E0862C5D1AAFE99014715A36800DBD9A6C51C0226CC82A651DAE4F73D54C4D103C13D1C15CF8CCA67D5CB39F03C66F3B7467F8FFDCC5074CD0C1B2538FBF956971BF39314CEDD20E1B10DE16D86E10BE7FA5B1A706AEB4C356F49807A22072CD00559AF0A863788956651919E26A315EAD1D26E7C98FC4CFA35A0F04DD400A2991A1FFE5B271FEDE54375896A29F968BE1D511BA466A92AC3E3772709FC815B16E07B33 | 133 | 20031212005818 2 6 100 3071 2 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A306199AE96DB |
134 | 20010406131946 2 6 100 3190 2 669BA3ED661F226A090BE5644A2BB4209371B78FC3E6848A095821993F59084CA5EE12052F977D01F0666F03F6573B199DFEC9AB94588C2C60DE3B3E7CF5094587919FCC3FB40A61C261E891A0F91D9FFC8F30CA12CF809DD8290DD786FA8B041FFAC5793C38F38757EA6790472AC2692185B554B0046E8C065C983C0ACC8D2F85AB4BEDF7CE233009218C9691FE44261580D4149F1D4471B0B5DF79E224252474EBC3B7B5490950BB438BF498E79F8794498B3A3B5FBB42829C3BBEA4067F28C23BE40377B986BD5443CCCF02405B8CCCAA09E8179F0168D4969994171A6AD98F81015BC84E10A44E1EFD2E0862C5D1AAFE99014715A36800DBD9A6C51C0226CC82A651DAE4F73D54C4D103C13D1C15CF8CCA67D5CB39F03C66F3B7467F8FFDCC5074CD0C1B2538FBF956971BF39314CEDD20E1B10DE16D86E10BE7FA5B1A706AEB4C356F49807A22072CD00559AF0A863788956651919E26A315EAD1D26E7C98FC4CFA35A0F04DD400A2991A1FFE5B271FEDE54375896A29F968BE1D511BA466A92AC3E3772709FC815B17706243 | 134 | 20031212033251 2 6 100 3071 2 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A30619A50DDD3 |
135 | 20010406170234 2 6 100 3190 5 669BA3ED661F226A090BE5644A2BB4209371B78FC3E6848A095821993F59084CA5EE12052F977D01F0666F03F6573B199DFEC9AB94588C2C60DE3B3E7CF5094587919FCC3FB40A61C261E891A0F91D9FFC8F30CA12CF809DD8290DD786FA8B041FFAC5793C38F38757EA6790472AC2692185B554B0046E8C065C983C0ACC8D2F85AB4BEDF7CE233009218C9691FE44261580D4149F1D4471B0B5DF79E224252474EBC3B7B5490950BB438BF498E79F8794498B3A3B5FBB42829C3BBEA4067F28C23BE40377B986BD5443CCCF02405B8CCCAA09E8179F0168D4969994171A6AD98F81015BC84E10A44E1EFD2E0862C5D1AAFE99014715A36800DBD9A6C51C0226CC82A651DAE4F73D54C4D103C13D1C15CF8CCA67D5CB39F03C66F3B7467F8FFDCC5074CD0C1B2538FBF956971BF39314CEDD20E1B10DE16D86E10BE7FA5B1A706AEB4C356F49807A22072CD00559AF0A863788956651919E26A315EAD1D26E7C98FC4CFA35A0F04DD400A2991A1FFE5B271FEDE54375896A29F968BE1D511BA466A92AC3E3772709FC815B182FD957 | 135 | 20031212053332 2 6 100 3071 5 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A30619AB31B57 |
136 | 20010406182949 2 6 100 3190 2 669BA3ED661F226A090BE5644A2BB4209371B78FC3E6848A095821993F59084CA5EE12052F977D01F0666F03F6573B199DFEC9AB94588C2C60DE3B3E7CF5094587919FCC3FB40A61C261E891A0F91D9FFC8F30CA12CF809DD8290DD786FA8B041FFAC5793C38F38757EA6790472AC2692185B554B0046E8C065C983C0ACC8D2F85AB4BEDF7CE233009218C9691FE44261580D4149F1D4471B0B5DF79E224252474EBC3B7B5490950BB438BF498E79F8794498B3A3B5FBB42829C3BBEA4067F28C23BE40377B986BD5443CCCF02405B8CCCAA09E8179F0168D4969994171A6AD98F81015BC84E10A44E1EFD2E0862C5D1AAFE99014715A36800DBD9A6C51C0226CC82A651DAE4F73D54C4D103C13D1C15CF8CCA67D5CB39F03C66F3B7467F8FFDCC5074CD0C1B2538FBF956971BF39314CEDD20E1B10DE16D86E10BE7FA5B1A706AEB4C356F49807A22072CD00559AF0A863788956651919E26A315EAD1D26E7C98FC4CFA35A0F04DD400A2991A1FFE5B271FEDE54375896A29F968BE1D511BA466A92AC3E3772709FC815B18768903 | 136 | 20031212084926 2 6 100 3071 5 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A30619B8949F7 |
137 | 20010406203157 2 6 100 3190 2 669BA3ED661F226A090BE5644A2BB4209371B78FC3E6848A095821993F59084CA5EE12052F977D01F0666F03F6573B199DFEC9AB94588C2C60DE3B3E7CF5094587919FCC3FB40A61C261E891A0F91D9FFC8F30CA12CF809DD8290DD786FA8B041FFAC5793C38F38757EA6790472AC2692185B554B0046E8C065C983C0ACC8D2F85AB4BEDF7CE233009218C9691FE44261580D4149F1D4471B0B5DF79E224252474EBC3B7B5490950BB438BF498E79F8794498B3A3B5FBB42829C3BBEA4067F28C23BE40377B986BD5443CCCF02405B8CCCAA09E8179F0168D4969994171A6AD98F81015BC84E10A44E1EFD2E0862C5D1AAFE99014715A36800DBD9A6C51C0226CC82A651DAE4F73D54C4D103C13D1C15CF8CCA67D5CB39F03C66F3B7467F8FFDCC5074CD0C1B2538FBF956971BF39314CEDD20E1B10DE16D86E10BE7FA5B1A706AEB4C356F49807A22072CD00559AF0A863788956651919E26A315EAD1D26E7C98FC4CFA35A0F04DD400A2991A1FFE5B271FEDE54375896A29F968BE1D511BA466A92AC3E3772709FC815B18DCFC3B | 137 | 20031212130319 2 6 100 3071 2 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A30619C84A1A3 |
138 | 20010407022825 2 6 100 3190 5 669BA3ED661F226A090BE5644A2BB4209371B78FC3E6848A095821993F59084CA5EE12052F977D01F0666F03F6573B199DFEC9AB94588C2C60DE3B3E7CF5094587919FCC3FB40A61C261E891A0F91D9FFC8F30CA12CF809DD8290DD786FA8B041FFAC5793C38F38757EA6790472AC2692185B554B0046E8C065C983C0ACC8D2F85AB4BEDF7CE233009218C9691FE44261580D4149F1D4471B0B5DF79E224252474EBC3B7B5490950BB438BF498E79F8794498B3A3B5FBB42829C3BBEA4067F28C23BE40377B986BD5443CCCF02405B8CCCAA09E8179F0168D4969994171A6AD98F81015BC84E10A44E1EFD2E0862C5D1AAFE99014715A36800DBD9A6C51C0226CC82A651DAE4F73D54C4D103C13D1C15CF8CCA67D5CB39F03C66F3B7467F8FFDCC5074CD0C1B2538FBF956971BF39314CEDD20E1B10DE16D86E10BE7FA5B1A706AEB4C356F49807A22072CD00559AF0A863788956651919E26A315EAD1D26E7C98FC4CFA35A0F04DD400A2991A1FFE5B271FEDE54375896A29F968BE1D511BA466A92AC3E3772709FC815B1A1AF797 | 138 | 20031212192346 2 6 100 3071 2 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A30619E1B24BB |
139 | 20010407071024 2 6 100 3190 5 669BA3ED661F226A090BE5644A2BB4209371B78FC3E6848A095821993F59084CA5EE12052F977D01F0666F03F6573B199DFEC9AB94588C2C60DE3B3E7CF5094587919FCC3FB40A61C261E891A0F91D9FFC8F30CA12CF809DD8290DD786FA8B041FFAC5793C38F38757EA6790472AC2692185B554B0046E8C065C983C0ACC8D2F85AB4BEDF7CE233009218C9691FE44261580D4149F1D4471B0B5DF79E224252474EBC3B7B5490950BB438BF498E79F8794498B3A3B5FBB42829C3BBEA4067F28C23BE40377B986BD5443CCCF02405B8CCCAA09E8179F0168D4969994171A6AD98F81015BC84E10A44E1EFD2E0862C5D1AAFE99014715A36800DBD9A6C51C0226CC82A651DAE4F73D54C4D103C13D1C15CF8CCA67D5CB39F03C66F3B7467F8FFDCC5074CD0C1B2538FBF956971BF39314CEDD20E1B10DE16D86E10BE7FA5B1A706AEB4C356F49807A22072CD00559AF0A863788956651919E26A315EAD1D26E7C98FC4CFA35A0F04DD400A2991A1FFE5B271FEDE54375896A29F968BE1D511BA466A92AC3E3772709FC815B1B1551E7 | 139 | 20031212210042 2 6 100 3071 2 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A30619E7F37FB |
140 | 20010407112402 2 6 100 3190 5 669BA3ED661F226A090BE5644A2BB4209371B78FC3E6848A095821993F59084CA5EE12052F977D01F0666F03F6573B199DFEC9AB94588C2C60DE3B3E7CF5094587919FCC3FB40A61C261E891A0F91D9FFC8F30CA12CF809DD8290DD786FA8B041FFAC5793C38F38757EA6790472AC2692185B554B0046E8C065C983C0ACC8D2F85AB4BEDF7CE233009218C9691FE44261580D4149F1D4471B0B5DF79E224252474EBC3B7B5490950BB438BF498E79F8794498B3A3B5FBB42829C3BBEA4067F28C23BE40377B986BD5443CCCF02405B8CCCAA09E8179F0168D4969994171A6AD98F81015BC84E10A44E1EFD2E0862C5D1AAFE99014715A36800DBD9A6C51C0226CC82A651DAE4F73D54C4D103C13D1C15CF8CCA67D5CB39F03C66F3B7467F8FFDCC5074CD0C1B2538FBF956971BF39314CEDD20E1B10DE16D86E10BE7FA5B1A706AEB4C356F49807A22072CD00559AF0A863788956651919E26A315EAD1D26E7C98FC4CFA35A0F04DD400A2991A1FFE5B271FEDE54375896A29F968BE1D511BA466A92AC3E3772709FC815B1BF78EC7 | 140 | 20031213002102 2 6 100 3071 2 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A30619F59BABB |
141 | 20010407123215 2 6 100 3190 2 669BA3ED661F226A090BE5644A2BB4209371B78FC3E6848A095821993F59084CA5EE12052F977D01F0666F03F6573B199DFEC9AB94588C2C60DE3B3E7CF5094587919FCC3FB40A61C261E891A0F91D9FFC8F30CA12CF809DD8290DD786FA8B041FFAC5793C38F38757EA6790472AC2692185B554B0046E8C065C983C0ACC8D2F85AB4BEDF7CE233009218C9691FE44261580D4149F1D4471B0B5DF79E224252474EBC3B7B5490950BB438BF498E79F8794498B3A3B5FBB42829C3BBEA4067F28C23BE40377B986BD5443CCCF02405B8CCCAA09E8179F0168D4969994171A6AD98F81015BC84E10A44E1EFD2E0862C5D1AAFE99014715A36800DBD9A6C51C0226CC82A651DAE4F73D54C4D103C13D1C15CF8CCA67D5CB39F03C66F3B7467F8FFDCC5074CD0C1B2538FBF956971BF39314CEDD20E1B10DE16D86E10BE7FA5B1A706AEB4C356F49807A22072CD00559AF0A863788956651919E26A315EAD1D26E7C98FC4CFA35A0F04DD400A2991A1FFE5B271FEDE54375896A29F968BE1D511BA466A92AC3E3772709FC815B1C30021B | 141 | 20031213061439 2 6 100 3071 5 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A3061A0D9208F |
142 | 20010407161504 2 6 100 3190 2 669BA3ED661F226A090BE5644A2BB4209371B78FC3E6848A095821993F59084CA5EE12052F977D01F0666F03F6573B199DFEC9AB94588C2C60DE3B3E7CF5094587919FCC3FB40A61C261E891A0F91D9FFC8F30CA12CF809DD8290DD786FA8B041FFAC5793C38F38757EA6790472AC2692185B554B0046E8C065C983C0ACC8D2F85AB4BEDF7CE233009218C9691FE44261580D4149F1D4471B0B5DF79E224252474EBC3B7B5490950BB438BF498E79F8794498B3A3B5FBB42829C3BBEA4067F28C23BE40377B986BD5443CCCF02405B8CCCAA09E8179F0168D4969994171A6AD98F81015BC84E10A44E1EFD2E0862C5D1AAFE99014715A36800DBD9A6C51C0226CC82A651DAE4F73D54C4D103C13D1C15CF8CCA67D5CB39F03C66F3B7467F8FFDCC5074CD0C1B2538FBF956971BF39314CEDD20E1B10DE16D86E10BE7FA5B1A706AEB4C356F49807A22072CD00559AF0A863788956651919E26A315EAD1D26E7C98FC4CFA35A0F04DD400A2991A1FFE5B271FEDE54375896A29F968BE1D511BA466A92AC3E3772709FC815B1CF27743 | 142 | 20031213071620 2 6 100 3071 5 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A3061A115D66F |
143 | 20010407171629 2 6 100 3190 5 669BA3ED661F226A090BE5644A2BB4209371B78FC3E6848A095821993F59084CA5EE12052F977D01F0666F03F6573B199DFEC9AB94588C2C60DE3B3E7CF5094587919FCC3FB40A61C261E891A0F91D9FFC8F30CA12CF809DD8290DD786FA8B041FFAC5793C38F38757EA6790472AC2692185B554B0046E8C065C983C0ACC8D2F85AB4BEDF7CE233009218C9691FE44261580D4149F1D4471B0B5DF79E224252474EBC3B7B5490950BB438BF498E79F8794498B3A3B5FBB42829C3BBEA4067F28C23BE40377B986BD5443CCCF02405B8CCCAA09E8179F0168D4969994171A6AD98F81015BC84E10A44E1EFD2E0862C5D1AAFE99014715A36800DBD9A6C51C0226CC82A651DAE4F73D54C4D103C13D1C15CF8CCA67D5CB39F03C66F3B7467F8FFDCC5074CD0C1B2538FBF956971BF39314CEDD20E1B10DE16D86E10BE7FA5B1A706AEB4C356F49807A22072CD00559AF0A863788956651919E26A315EAD1D26E7C98FC4CFA35A0F04DD400A2991A1FFE5B271FEDE54375896A29F968BE1D511BA466A92AC3E3772709FC815B1D25FAD7 | 143 | 20031213072644 2 6 100 3071 5 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A3061A1186097 |
144 | 20010407191502 2 6 100 3190 2 669BA3ED661F226A090BE5644A2BB4209371B78FC3E6848A095821993F59084CA5EE12052F977D01F0666F03F6573B199DFEC9AB94588C2C60DE3B3E7CF5094587919FCC3FB40A61C261E891A0F91D9FFC8F30CA12CF809DD8290DD786FA8B041FFAC5793C38F38757EA6790472AC2692185B554B0046E8C065C983C0ACC8D2F85AB4BEDF7CE233009218C9691FE44261580D4149F1D4471B0B5DF79E224252474EBC3B7B5490950BB438BF498E79F8794498B3A3B5FBB42829C3BBEA4067F28C23BE40377B986BD5443CCCF02405B8CCCAA09E8179F0168D4969994171A6AD98F81015BC84E10A44E1EFD2E0862C5D1AAFE99014715A36800DBD9A6C51C0226CC82A651DAE4F73D54C4D103C13D1C15CF8CCA67D5CB39F03C66F3B7467F8FFDCC5074CD0C1B2538FBF956971BF39314CEDD20E1B10DE16D86E10BE7FA5B1A706AEB4C356F49807A22072CD00559AF0A863788956651919E26A315EAD1D26E7C98FC4CFA35A0F04DD400A2991A1FFE5B271FEDE54375896A29F968BE1D511BA466A92AC3E3772709FC815B1D8C2753 | 144 | 20031213090613 2 6 100 3071 5 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A3061A17DACC7 |
145 | 20010420002705 2 6 100 4094 2 65B5B9F5ECFADB4CCB38D1BC894302E95B4843290F1A7A40579DF3E2FF98C1D3DA9F210857C784433DF32ADF9E0C80121211690E1FFB41B8DB4E86AFE388A09C9BB2C98EDC581C2E65D57F61BB920C3D1B7B058B5FADFF65D607DAFF443B8BA1ACE1A3A7B16EA0713F62537C6689E3C4A0F61198F3B054FCF140CFADD8622C0E7621998331E59DA6F72E9D608D0E58F526E95F485C7CA30A416617DA3CCFF722BB82362606283D054B34B83ECDB4C91BAB835944010EBE5E9FA7B016ED89891DD553CC71B5CF76EDB2A184B377F670D6AF191763EEFD175E48EA37EE18B9E44E2D017D845C444C8111816819866E490B52F7F879A0C6F401CF7859674F93E304365F4E8CB8C312EFB725732A46D7CF0C9D2939AEE25F428CEFC90959DBF8ADD612F343EF9BFCA2FBA61BD4BF93E1E54626D227FDA812E18D071579AB4EEAC9901DAB183BCB0D9F48732D92CE66B386EAE5D8212C9FD156DC3F09B171B5603E17A468D244F3B6880EBCDA189BA9E23E4A4C6C2995ACF264F8CE9D54B27316343C0BC19221F75E6A2AC68011741695E599F73460B7A042E0461DB189CDCE223B40336BF2251AE3B363159960C9F63B47EFC43790D474DABB9A686DAF21E0DD76533749FCA9F144FA9C243CEF1364C79D981ED81DC4635C73B7F8908BA190AA920ED370F815BC2F9B3D28ED87BE34A01498836222C17B70C246C03CA1C10C1E08F3 | 145 | 20031213110037 2 6 100 3071 5 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A3061A1F577E7 |
146 | 20010420005243 2 6 100 4094 2 65B5B9F5ECFADB4CCB38D1BC894302E95B4843290F1A7A40579DF3E2FF98C1D3DA9F210857C784433DF32ADF9E0C80121211690E1FFB41B8DB4E86AFE388A09C9BB2C98EDC581C2E65D57F61BB920C3D1B7B058B5FADFF65D607DAFF443B8BA1ACE1A3A7B16EA0713F62537C6689E3C4A0F61198F3B054FCF140CFADD8622C0E7621998331E59DA6F72E9D608D0E58F526E95F485C7CA30A416617DA3CCFF722BB82362606283D054B34B83ECDB4C91BAB835944010EBE5E9FA7B016ED89891DD553CC71B5CF76EDB2A184B377F670D6AF191763EEFD175E48EA37EE18B9E44E2D017D845C444C8111816819866E490B52F7F879A0C6F401CF7859674F93E304365F4E8CB8C312EFB725732A46D7CF0C9D2939AEE25F428CEFC90959DBF8ADD612F343EF9BFCA2FBA61BD4BF93E1E54626D227FDA812E18D071579AB4EEAC9901DAB183BCB0D9F48732D92CE66B386EAE5D8212C9FD156DC3F09B171B5603E17A468D244F3B6880EBCDA189BA9E23E4A4C6C2995ACF264F8CE9D54B27316343C0BC19221F75E6A2AC68011741695E599F73460B7A042E0461DB189CDCE223B40336BF2251AE3B363159960C9F63B47EFC43790D474DABB9A686DAF21E0DD76533749FCA9F144FA9C243CEF1364C79D981ED81DC4635C73B7F8908BA190AA920ED370F815BC2F9B3D28ED87BE34A01498836222C17B70C246C03CA1C10C219FB3 | 146 | 20031213113226 2 6 100 3071 2 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A3061A2113AC3 |
147 | 20010420035225 2 6 100 4094 5 65B5B9F5ECFADB4CCB38D1BC894302E95B4843290F1A7A40579DF3E2FF98C1D3DA9F210857C784433DF32ADF9E0C80121211690E1FFB41B8DB4E86AFE388A09C9BB2C98EDC581C2E65D57F61BB920C3D1B7B058B5FADFF65D607DAFF443B8BA1ACE1A3A7B16EA0713F62537C6689E3C4A0F61198F3B054FCF140CFADD8622C0E7621998331E59DA6F72E9D608D0E58F526E95F485C7CA30A416617DA3CCFF722BB82362606283D054B34B83ECDB4C91BAB835944010EBE5E9FA7B016ED89891DD553CC71B5CF76EDB2A184B377F670D6AF191763EEFD175E48EA37EE18B9E44E2D017D845C444C8111816819866E490B52F7F879A0C6F401CF7859674F93E304365F4E8CB8C312EFB725732A46D7CF0C9D2939AEE25F428CEFC90959DBF8ADD612F343EF9BFCA2FBA61BD4BF93E1E54626D227FDA812E18D071579AB4EEAC9901DAB183BCB0D9F48732D92CE66B386EAE5D8212C9FD156DC3F09B171B5603E17A468D244F3B6880EBCDA189BA9E23E4A4C6C2995ACF264F8CE9D54B27316343C0BC19221F75E6A2AC68011741695E599F73460B7A042E0461DB189CDCE223B40336BF2251AE3B363159960C9F63B47EFC43790D474DABB9A686DAF21E0DD76533749FCA9F144FA9C243CEF1364C79D981ED81DC4635C73B7F8908BA190AA920ED370F815BC2F9B3D28ED87BE34A01498836222C17B70C246C03CA1C10C660B3F | 147 | 20031213120232 2 6 100 3071 2 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A3061A22A232B |
148 | 20010420145749 2 6 100 4094 2 65B5B9F5ECFADB4CCB38D1BC894302E95B4843290F1A7A40579DF3E2FF98C1D3DA9F210857C784433DF32ADF9E0C80121211690E1FFB41B8DB4E86AFE388A09C9BB2C98EDC581C2E65D57F61BB920C3D1B7B058B5FADFF65D607DAFF443B8BA1ACE1A3A7B16EA0713F62537C6689E3C4A0F61198F3B054FCF140CFADD8622C0E7621998331E59DA6F72E9D608D0E58F526E95F485C7CA30A416617DA3CCFF722BB82362606283D054B34B83ECDB4C91BAB835944010EBE5E9FA7B016ED89891DD553CC71B5CF76EDB2A184B377F670D6AF191763EEFD175E48EA37EE18B9E44E2D017D845C444C8111816819866E490B52F7F879A0C6F401CF7859674F93E304365F4E8CB8C312EFB725732A46D7CF0C9D2939AEE25F428CEFC90959DBF8ADD612F343EF9BFCA2FBA61BD4BF93E1E54626D227FDA812E18D071579AB4EEAC9901DAB183BCB0D9F48732D92CE66B386EAE5D8212C9FD156DC3F09B171B5603E17A468D244F3B6880EBCDA189BA9E23E4A4C6C2995ACF264F8CE9D54B27316343C0BC19221F75E6A2AC68011741695E599F73460B7A042E0461DB189CDCE223B40336BF2251AE3B363159960C9F63B47EFC43790D474DABB9A686DAF21E0DD76533749FCA9F144FA9C243CEF1364C79D981ED81DC4635C73B7F8908BA190AA920ED370F815BC2F9B3D28ED87BE34A01498836222C17B70C246C03CA1C10D741313 | 148 | 20031213121926 2 6 100 3071 2 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A3061A23443D3 |
149 | 20010420205718 2 6 100 4094 2 65B5B9F5ECFADB4CCB38D1BC894302E95B4843290F1A7A40579DF3E2FF98C1D3DA9F210857C784433DF32ADF9E0C80121211690E1FFB41B8DB4E86AFE388A09C9BB2C98EDC581C2E65D57F61BB920C3D1B7B058B5FADFF65D607DAFF443B8BA1ACE1A3A7B16EA0713F62537C6689E3C4A0F61198F3B054FCF140CFADD8622C0E7621998331E59DA6F72E9D608D0E58F526E95F485C7CA30A416617DA3CCFF722BB82362606283D054B34B83ECDB4C91BAB835944010EBE5E9FA7B016ED89891DD553CC71B5CF76EDB2A184B377F670D6AF191763EEFD175E48EA37EE18B9E44E2D017D845C444C8111816819866E490B52F7F879A0C6F401CF7859674F93E304365F4E8CB8C312EFB725732A46D7CF0C9D2939AEE25F428CEFC90959DBF8ADD612F343EF9BFCA2FBA61BD4BF93E1E54626D227FDA812E18D071579AB4EEAC9901DAB183BCB0D9F48732D92CE66B386EAE5D8212C9FD156DC3F09B171B5603E17A468D244F3B6880EBCDA189BA9E23E4A4C6C2995ACF264F8CE9D54B27316343C0BC19221F75E6A2AC68011741695E599F73460B7A042E0461DB189CDCE223B40336BF2251AE3B363159960C9F63B47EFC43790D474DABB9A686DAF21E0DD76533749FCA9F144FA9C243CEF1364C79D981ED81DC4635C73B7F8908BA190AA920ED370F815BC2F9B3D28ED87BE34A01498836222C17B70C246C03CA1C10DD41193 | 149 | 20031213130353 2 6 100 3071 5 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A3061A25D51E7 |
150 | 20010420232458 2 6 100 4094 5 65B5B9F5ECFADB4CCB38D1BC894302E95B4843290F1A7A40579DF3E2FF98C1D3DA9F210857C784433DF32ADF9E0C80121211690E1FFB41B8DB4E86AFE388A09C9BB2C98EDC581C2E65D57F61BB920C3D1B7B058B5FADFF65D607DAFF443B8BA1ACE1A3A7B16EA0713F62537C6689E3C4A0F61198F3B054FCF140CFADD8622C0E7621998331E59DA6F72E9D608D0E58F526E95F485C7CA30A416617DA3CCFF722BB82362606283D054B34B83ECDB4C91BAB835944010EBE5E9FA7B016ED89891DD553CC71B5CF76EDB2A184B377F670D6AF191763EEFD175E48EA37EE18B9E44E2D017D845C444C8111816819866E490B52F7F879A0C6F401CF7859674F93E304365F4E8CB8C312EFB725732A46D7CF0C9D2939AEE25F428CEFC90959DBF8ADD612F343EF9BFCA2FBA61BD4BF93E1E54626D227FDA812E18D071579AB4EEAC9901DAB183BCB0D9F48732D92CE66B386EAE5D8212C9FD156DC3F09B171B5603E17A468D244F3B6880EBCDA189BA9E23E4A4C6C2995ACF264F8CE9D54B27316343C0BC19221F75E6A2AC68011741695E599F73460B7A042E0461DB189CDCE223B40336BF2251AE3B363159960C9F63B47EFC43790D474DABB9A686DAF21E0DD76533749FCA9F144FA9C243CEF1364C79D981ED81DC4635C73B7F8908BA190AA920ED370F815BC2F9B3D28ED87BE34A01498836222C17B70C246C03CA1C10E0AB4EF | 150 | 20031213143149 2 6 100 3071 2 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A3061A2B63CBB |
151 | 20010421003952 2 6 100 4094 5 65B5B9F5ECFADB4CCB38D1BC894302E95B4843290F1A7A40579DF3E2FF98C1D3DA9F210857C784433DF32ADF9E0C80121211690E1FFB41B8DB4E86AFE388A09C9BB2C98EDC581C2E65D57F61BB920C3D1B7B058B5FADFF65D607DAFF443B8BA1ACE1A3A7B16EA0713F62537C6689E3C4A0F61198F3B054FCF140CFADD8622C0E7621998331E59DA6F72E9D608D0E58F526E95F485C7CA30A416617DA3CCFF722BB82362606283D054B34B83ECDB4C91BAB835944010EBE5E9FA7B016ED89891DD553CC71B5CF76EDB2A184B377F670D6AF191763EEFD175E48EA37EE18B9E44E2D017D845C444C8111816819866E490B52F7F879A0C6F401CF7859674F93E304365F4E8CB8C312EFB725732A46D7CF0C9D2939AEE25F428CEFC90959DBF8ADD612F343EF9BFCA2FBA61BD4BF93E1E54626D227FDA812E18D071579AB4EEAC9901DAB183BCB0D9F48732D92CE66B386EAE5D8212C9FD156DC3F09B171B5603E17A468D244F3B6880EBCDA189BA9E23E4A4C6C2995ACF264F8CE9D54B27316343C0BC19221F75E6A2AC68011741695E599F73460B7A042E0461DB189CDCE223B40336BF2251AE3B363159960C9F63B47EFC43790D474DABB9A686DAF21E0DD76533749FCA9F144FA9C243CEF1364C79D981ED81DC4635C73B7F8908BA190AA920ED370F815BC2F9B3D28ED87BE34A01498836222C17B70C246C03CA1C10E22F857 | 151 | 20031213153322 2 6 100 3071 5 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A3061A2F05FC7 |
152 | 20010421013245 2 6 100 4094 2 65B5B9F5ECFADB4CCB38D1BC894302E95B4843290F1A7A40579DF3E2FF98C1D3DA9F210857C784433DF32ADF9E0C80121211690E1FFB41B8DB4E86AFE388A09C9BB2C98EDC581C2E65D57F61BB920C3D1B7B058B5FADFF65D607DAFF443B8BA1ACE1A3A7B16EA0713F62537C6689E3C4A0F61198F3B054FCF140CFADD8622C0E7621998331E59DA6F72E9D608D0E58F526E95F485C7CA30A416617DA3CCFF722BB82362606283D054B34B83ECDB4C91BAB835944010EBE5E9FA7B016ED89891DD553CC71B5CF76EDB2A184B377F670D6AF191763EEFD175E48EA37EE18B9E44E2D017D845C444C8111816819866E490B52F7F879A0C6F401CF7859674F93E304365F4E8CB8C312EFB725732A46D7CF0C9D2939AEE25F428CEFC90959DBF8ADD612F343EF9BFCA2FBA61BD4BF93E1E54626D227FDA812E18D071579AB4EEAC9901DAB183BCB0D9F48732D92CE66B386EAE5D8212C9FD156DC3F09B171B5603E17A468D244F3B6880EBCDA189BA9E23E4A4C6C2995ACF264F8CE9D54B27316343C0BC19221F75E6A2AC68011741695E599F73460B7A042E0461DB189CDCE223B40336BF2251AE3B363159960C9F63B47EFC43790D474DABB9A686DAF21E0DD76533749FCA9F144FA9C243CEF1364C79D981ED81DC4635C73B7F8908BA190AA920ED370F815BC2F9B3D28ED87BE34A01498836222C17B70C246C03CA1C10E31828B | 152 | 20031213180906 2 6 100 3071 2 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A3061A39439A3 |
153 | 20010421085157 2 6 100 4094 2 65B5B9F5ECFADB4CCB38D1BC894302E95B4843290F1A7A40579DF3E2FF98C1D3DA9F210857C784433DF32ADF9E0C80121211690E1FFB41B8DB4E86AFE388A09C9BB2C98EDC581C2E65D57F61BB920C3D1B7B058B5FADFF65D607DAFF443B8BA1ACE1A3A7B16EA0713F62537C6689E3C4A0F61198F3B054FCF140CFADD8622C0E7621998331E59DA6F72E9D608D0E58F526E95F485C7CA30A416617DA3CCFF722BB82362606283D054B34B83ECDB4C91BAB835944010EBE5E9FA7B016ED89891DD553CC71B5CF76EDB2A184B377F670D6AF191763EEFD175E48EA37EE18B9E44E2D017D845C444C8111816819866E490B52F7F879A0C6F401CF7859674F93E304365F4E8CB8C312EFB725732A46D7CF0C9D2939AEE25F428CEFC90959DBF8ADD612F343EF9BFCA2FBA61BD4BF93E1E54626D227FDA812E18D071579AB4EEAC9901DAB183BCB0D9F48732D92CE66B386EAE5D8212C9FD156DC3F09B171B5603E17A468D244F3B6880EBCDA189BA9E23E4A4C6C2995ACF264F8CE9D54B27316343C0BC19221F75E6A2AC68011741695E599F73460B7A042E0461DB189CDCE223B40336BF2251AE3B363159960C9F63B47EFC43790D474DABB9A686DAF21E0DD76533749FCA9F144FA9C243CEF1364C79D981ED81DC4635C73B7F8908BA190AA920ED370F815BC2F9B3D28ED87BE34A01498836222C17B70C246C03CA1C10EE28B2B | 153 | 20031213183520 2 6 100 3071 5 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A3061A3A7705F |
154 | 20010421092617 2 6 100 4094 2 65B5B9F5ECFADB4CCB38D1BC894302E95B4843290F1A7A40579DF3E2FF98C1D3DA9F210857C784433DF32ADF9E0C80121211690E1FFB41B8DB4E86AFE388A09C9BB2C98EDC581C2E65D57F61BB920C3D1B7B058B5FADFF65D607DAFF443B8BA1ACE1A3A7B16EA0713F62537C6689E3C4A0F61198F3B054FCF140CFADD8622C0E7621998331E59DA6F72E9D608D0E58F526E95F485C7CA30A416617DA3CCFF722BB82362606283D054B34B83ECDB4C91BAB835944010EBE5E9FA7B016ED89891DD553CC71B5CF76EDB2A184B377F670D6AF191763EEFD175E48EA37EE18B9E44E2D017D845C444C8111816819866E490B52F7F879A0C6F401CF7859674F93E304365F4E8CB8C312EFB725732A46D7CF0C9D2939AEE25F428CEFC90959DBF8ADD612F343EF9BFCA2FBA61BD4BF93E1E54626D227FDA812E18D071579AB4EEAC9901DAB183BCB0D9F48732D92CE66B386EAE5D8212C9FD156DC3F09B171B5603E17A468D244F3B6880EBCDA189BA9E23E4A4C6C2995ACF264F8CE9D54B27316343C0BC19221F75E6A2AC68011741695E599F73460B7A042E0461DB189CDCE223B40336BF2251AE3B363159960C9F63B47EFC43790D474DABB9A686DAF21E0DD76533749FCA9F144FA9C243CEF1364C79D981ED81DC4635C73B7F8908BA190AA920ED370F815BC2F9B3D28ED87BE34A01498836222C17B70C246C03CA1C10EE97A3B | 154 | 20031213192228 2 6 100 3071 5 DBB2151A52F948EE950BE096B2B7C2A260C5BBE57C02EC432FA6E2025306FE486F77352C63622A8F40A65ECD815737C9837C7803980D25CBFAA3438A1BA8A7D41F214A836AB31A067B5813967059AE75B73358FE33930E7B9BEE4149CD71A9234F9E7C35C5097456E2BF17F748E70FB2AB12BC9D75C1BB024CCEA7556384034A22840352DA1CF6EB9E09FA6C5B6317A74DF67318935850079364F06665282743B45E0ABE6866867FB13BE2A082F604E0BA399215A072CE818104A53F37D08F0373CE7DBBF4EBCEFF05349A025A7DD06D5E79205CD74919862E06BFD15990391BBBA75BD27A36C422165AA6CA14F6A1AA5CEB6D862456C7BDA91982DF12D159B859248A9159B935635199498628871815BF0C9F0706265988F9ABB278CBBB941A07E46A713D8F2C10E174C3E4138C3C125BF582359E4D6C3773609C9D6293C22C620AAAE50EF3BDFA3B97D802993BFE0E7BE01FAB3F3E8CE4A2454E5A01E2C08DE17D9D5B9F76D8466FBA22A14C11CA5C7E678514FD72B3DF3D0A3061A3D2DEA7 |
155 | 20010421135621 2 6 100 4094 2 65B5B9F5ECFADB4CCB38D1BC894302E95B4843290F1A7A40579DF3E2FF98C1D3DA9F210857C784433DF32ADF9E0C80121211690E1FFB41B8DB4E86AFE388A09C9BB2C98EDC581C2E65D57F61BB920C3D1B7B058B5FADFF65D607DAFF443B8BA1ACE1A3A7B16EA0713F62537C6689E3C4A0F61198F3B054FCF140CFADD8622C0E7621998331E59DA6F72E9D608D0E58F526E95F485C7CA30A416617DA3CCFF722BB82362606283D054B34B83ECDB4C91BAB835944010EBE5E9FA7B016ED89891DD553CC71B5CF76EDB2A184B377F670D6AF191763EEFD175E48EA37EE18B9E44E2D017D845C444C8111816819866E490B52F7F879A0C6F401CF7859674F93E304365F4E8CB8C312EFB725732A46D7CF0C9D2939AEE25F428CEFC90959DBF8ADD612F343EF9BFCA2FBA61BD4BF93E1E54626D227FDA812E18D071579AB4EEAC9901DAB183BCB0D9F48732D92CE66B386EAE5D8212C9FD156DC3F09B171B5603E17A468D244F3B6880EBCDA189BA9E23E4A4C6C2995ACF264F8CE9D54B27316343C0BC19221F75E6A2AC68011741695E599F73460B7A042E0461DB189CDCE223B40336BF2251AE3B363159960C9F63B47EFC43790D474DABB9A686DAF21E0DD76533749FCA9F144FA9C243CEF1364C79D981ED81DC4635C73B7F8908BA190AA920ED370F815BC2F9B3D28ED87BE34A01498836222C17B70C246C03CA1C10F52C463 | 155 | 20031213125532 2 6 200 4095 2 CE96240B0B5684D9E281FDA07D5B6C316E14C7AE83913F86D13CAD2546F93B533D15629D4B3E2C76753C5ABCC29A8FB610CA1C3EB1014B0FD8209C330FFF6EB8A562474B7D387E3F8074FA29D0B58BAD5E6967A0AD667C41D41E1241669431F865C57E9EEB00E69BEB1D18C3B940810324B394FAB8F75B27A9B4E7972F07B4916A6A3D50F0445024697155382BF1AD14F90F8BAB7E9D3CCBAE6CD84E488A98770A8C64943582C6D2BB529511945ABA146115273EB6BD718B62FEBFCD503FB56E8D4262E17DC5CE1A9B1D3E8FFA5CE0B825498BC6254DA9CC69DDF7AD9BA582AB8F812C4DE3228C88C5640BAEF5F62B7C039588D6CD7F694F039507AA3AAF4FB368A3712230FFC05B66A14C7003E2AD6A938D544B8B9908C4536F945AC4BDB1CA623F2826A25CA16B39730C9FE940A8642EB35088ED341BE768C10B152C8A65D32E4DBE68764E6B2ABDE6824088B6BE258D7E3AEA155CB919E1C500CDCEE435515CF09575F75551C16FBA0F3AEDE0AABA544E89A58E4C34E255EAAFD8F65340DAA55E3ED8AB903FE188416340ACE15D36F9CEDE379CC3586E6D320F72AA310A1B0A781D06B7418A50525105FA749306AC59A788D6866B7DDD0F4C059BA6CEE43FAD5AD2A362B9DE1C57324ADE8B5B46C6B1DDABD82F0670F7A4DA869F204EFB27EA7E049BC7D6CFD2071682C894161922A99108EB3BB8922113BA9923E8050C3B |
156 | 20010422012438 2 6 100 4094 2 65B5B9F5ECFADB4CCB38D1BC894302E95B4843290F1A7A40579DF3E2FF98C1D3DA9F210857C784433DF32ADF9E0C80121211690E1FFB41B8DB4E86AFE388A09C9BB2C98EDC581C2E65D57F61BB920C3D1B7B058B5FADFF65D607DAFF443B8BA1ACE1A3A7B16EA0713F62537C6689E3C4A0F61198F3B054FCF140CFADD8622C0E7621998331E59DA6F72E9D608D0E58F526E95F485C7CA30A416617DA3CCFF722BB82362606283D054B34B83ECDB4C91BAB835944010EBE5E9FA7B016ED89891DD553CC71B5CF76EDB2A184B377F670D6AF191763EEFD175E48EA37EE18B9E44E2D017D845C444C8111816819866E490B52F7F879A0C6F401CF7859674F93E304365F4E8CB8C312EFB725732A46D7CF0C9D2939AEE25F428CEFC90959DBF8ADD612F343EF9BFCA2FBA61BD4BF93E1E54626D227FDA812E18D071579AB4EEAC9901DAB183BCB0D9F48732D92CE66B386EAE5D8212C9FD156DC3F09B171B5603E17A468D244F3B6880EBCDA189BA9E23E4A4C6C2995ACF264F8CE9D54B27316343C0BC19221F75E6A2AC68011741695E599F73460B7A042E0461DB189CDCE223B40336BF2251AE3B363159960C9F63B47EFC43790D474DABB9A686DAF21E0DD76533749FCA9F144FA9C243CEF1364C79D981ED81DC4635C73B7F8908BA190AA920ED370F815BC2F9B3D28ED87BE34A01498836222C17B70C246C03CA1C110627AF3 | 156 | 20031213125653 2 6 200 4095 2 CE96240B0B5684D9E281FDA07D5B6C316E14C7AE83913F86D13CAD2546F93B533D15629D4B3E2C76753C5ABCC29A8FB610CA1C3EB1014B0FD8209C330FFF6EB8A562474B7D387E3F8074FA29D0B58BAD5E6967A0AD667C41D41E1241669431F865C57E9EEB00E69BEB1D18C3B940810324B394FAB8F75B27A9B4E7972F07B4916A6A3D50F0445024697155382BF1AD14F90F8BAB7E9D3CCBAE6CD84E488A98770A8C64943582C6D2BB529511945ABA146115273EB6BD718B62FEBFCD503FB56E8D4262E17DC5CE1A9B1D3E8FFA5CE0B825498BC6254DA9CC69DDF7AD9BA582AB8F812C4DE3228C88C5640BAEF5F62B7C039588D6CD7F694F039507AA3AAF4FB368A3712230FFC05B66A14C7003E2AD6A938D544B8B9908C4536F945AC4BDB1CA623F2826A25CA16B39730C9FE940A8642EB35088ED341BE768C10B152C8A65D32E4DBE68764E6B2ABDE6824088B6BE258D7E3AEA155CB919E1C500CDCEE435515CF09575F75551C16FBA0F3AEDE0AABA544E89A58E4C34E255EAAFD8F65340DAA55E3ED8AB903FE188416340ACE15D36F9CEDE379CC3586E6D320F72AA310A1B0A781D06B7418A50525105FA749306AC59A788D6866B7DDD0F4C059BA6CEE43FAD5AD2A362B9DE1C57324ADE8B5B46C6B1DDABD82F0670F7A4DA869F204EFB27EA7E049BC7D6CFD2071682C894161922A99108EB3BB8922113BA9923E8EB2F2B |
157 | 20010422042530 2 6 100 4094 2 65B5B9F5ECFADB4CCB38D1BC894302E95B4843290F1A7A40579DF3E2FF98C1D3DA9F210857C784433DF32ADF9E0C80121211690E1FFB41B8DB4E86AFE388A09C9BB2C98EDC581C2E65D57F61BB920C3D1B7B058B5FADFF65D607DAFF443B8BA1ACE1A3A7B16EA0713F62537C6689E3C4A0F61198F3B054FCF140CFADD8622C0E7621998331E59DA6F72E9D608D0E58F526E95F485C7CA30A416617DA3CCFF722BB82362606283D054B34B83ECDB4C91BAB835944010EBE5E9FA7B016ED89891DD553CC71B5CF76EDB2A184B377F670D6AF191763EEFD175E48EA37EE18B9E44E2D017D845C444C8111816819866E490B52F7F879A0C6F401CF7859674F93E304365F4E8CB8C312EFB725732A46D7CF0C9D2939AEE25F428CEFC90959DBF8ADD612F343EF9BFCA2FBA61BD4BF93E1E54626D227FDA812E18D071579AB4EEAC9901DAB183BCB0D9F48732D92CE66B386EAE5D8212C9FD156DC3F09B171B5603E17A468D244F3B6880EBCDA189BA9E23E4A4C6C2995ACF264F8CE9D54B27316343C0BC19221F75E6A2AC68011741695E599F73460B7A042E0461DB189CDCE223B40336BF2251AE3B363159960C9F63B47EFC43790D474DABB9A686DAF21E0DD76533749FCA9F144FA9C243CEF1364C79D981ED81DC4635C73B7F8908BA190AA920ED370F815BC2F9B3D28ED87BE34A01498836222C17B70C246C03CA1C110A793B3 | 157 | 20031213125813 2 6 200 4095 2 CE96240B0B5684D9E281FDA07D5B6C316E14C7AE83913F86D13CAD2546F93B533D15629D4B3E2C76753C5ABCC29A8FB610CA1C3EB1014B0FD8209C330FFF6EB8A562474B7D387E3F8074FA29D0B58BAD5E6967A0AD667C41D41E1241669431F865C57E9EEB00E69BEB1D18C3B940810324B394FAB8F75B27A9B4E7972F07B4916A6A3D50F0445024697155382BF1AD14F90F8BAB7E9D3CCBAE6CD84E488A98770A8C64943582C6D2BB529511945ABA146115273EB6BD718B62FEBFCD503FB56E8D4262E17DC5CE1A9B1D3E8FFA5CE0B825498BC6254DA9CC69DDF7AD9BA582AB8F812C4DE3228C88C5640BAEF5F62B7C039588D6CD7F694F039507AA3AAF4FB368A3712230FFC05B66A14C7003E2AD6A938D544B8B9908C4536F945AC4BDB1CA623F2826A25CA16B39730C9FE940A8642EB35088ED341BE768C10B152C8A65D32E4DBE68764E6B2ABDE6824088B6BE258D7E3AEA155CB919E1C500CDCEE435515CF09575F75551C16FBA0F3AEDE0AABA544E89A58E4C34E255EAAFD8F65340DAA55E3ED8AB903FE188416340ACE15D36F9CEDE379CC3586E6D320F72AA310A1B0A781D06B7418A50525105FA749306AC59A788D6866B7DDD0F4C059BA6CEE43FAD5AD2A362B9DE1C57324ADE8B5B46C6B1DDABD82F0670F7A4DA869F204EFB27EA7E049BC7D6CFD2071682C894161922A99108EB3BB8922113BA9923EAB66F4B |
158 | 20010422163438 2 6 100 4094 5 65B5B9F5ECFADB4CCB38D1BC894302E95B4843290F1A7A40579DF3E2FF98C1D3DA9F210857C784433DF32ADF9E0C80121211690E1FFB41B8DB4E86AFE388A09C9BB2C98EDC581C2E65D57F61BB920C3D1B7B058B5FADFF65D607DAFF443B8BA1ACE1A3A7B16EA0713F62537C6689E3C4A0F61198F3B054FCF140CFADD8622C0E7621998331E59DA6F72E9D608D0E58F526E95F485C7CA30A416617DA3CCFF722BB82362606283D054B34B83ECDB4C91BAB835944010EBE5E9FA7B016ED89891DD553CC71B5CF76EDB2A184B377F670D6AF191763EEFD175E48EA37EE18B9E44E2D017D845C444C8111816819866E490B52F7F879A0C6F401CF7859674F93E304365F4E8CB8C312EFB725732A46D7CF0C9D2939AEE25F428CEFC90959DBF8ADD612F343EF9BFCA2FBA61BD4BF93E1E54626D227FDA812E18D071579AB4EEAC9901DAB183BCB0D9F48732D92CE66B386EAE5D8212C9FD156DC3F09B171B5603E17A468D244F3B6880EBCDA189BA9E23E4A4C6C2995ACF264F8CE9D54B27316343C0BC19221F75E6A2AC68011741695E599F73460B7A042E0461DB189CDCE223B40336BF2251AE3B363159960C9F63B47EFC43790D474DABB9A686DAF21E0DD76533749FCA9F144FA9C243CEF1364C79D981ED81DC4635C73B7F8908BA190AA920ED370F815BC2F9B3D28ED87BE34A01498836222C17B70C246C03CA1C111D2A227 | 158 | 20031213125934 2 6 200 4095 2 CE96240B0B5684D9E281FDA07D5B6C316E14C7AE83913F86D13CAD2546F93B533D15629D4B3E2C76753C5ABCC29A8FB610CA1C3EB1014B0FD8209C330FFF6EB8A562474B7D387E3F8074FA29D0B58BAD5E6967A0AD667C41D41E1241669431F865C57E9EEB00E69BEB1D18C3B940810324B394FAB8F75B27A9B4E7972F07B4916A6A3D50F0445024697155382BF1AD14F90F8BAB7E9D3CCBAE6CD84E488A98770A8C64943582C6D2BB529511945ABA146115273EB6BD718B62FEBFCD503FB56E8D4262E17DC5CE1A9B1D3E8FFA5CE0B825498BC6254DA9CC69DDF7AD9BA582AB8F812C4DE3228C88C5640BAEF5F62B7C039588D6CD7F694F039507AA3AAF4FB368A3712230FFC05B66A14C7003E2AD6A938D544B8B9908C4536F945AC4BDB1CA623F2826A25CA16B39730C9FE940A8642EB35088ED341BE768C10B152C8A65D32E4DBE68764E6B2ABDE6824088B6BE258D7E3AEA155CB919E1C500CDCEE435515CF09575F75551C16FBA0F3AEDE0AABA544E89A58E4C34E255EAAFD8F65340DAA55E3ED8AB903FE188416340ACE15D36F9CEDE379CC3586E6D320F72AA310A1B0A781D06B7418A50525105FA749306AC59A788D6866B7DDD0F4C059BA6CEE43FAD5AD2A362B9DE1C57324ADE8B5B46C6B1DDABD82F0670F7A4DA869F204EFB27EA7E049BC7D6CFD2071682C894161922A99108EB3BB8922113BA9923EAFE508B |
159 | 20031213130055 2 6 200 4095 2 CE96240B0B5684D9E281FDA07D5B6C316E14C7AE83913F86D13CAD2546F93B533D15629D4B3E2C76753C5ABCC29A8FB610CA1C3EB1014B0FD8209C330FFF6EB8A562474B7D387E3F8074FA29D0B58BAD5E6967A0AD667C41D41E1241669431F865C57E9EEB00E69BEB1D18C3B940810324B394FAB8F75B27A9B4E7972F07B4916A6A3D50F0445024697155382BF1AD14F90F8BAB7E9D3CCBAE6CD84E488A98770A8C64943582C6D2BB529511945ABA146115273EB6BD718B62FEBFCD503FB56E8D4262E17DC5CE1A9B1D3E8FFA5CE0B825498BC6254DA9CC69DDF7AD9BA582AB8F812C4DE3228C88C5640BAEF5F62B7C039588D6CD7F694F039507AA3AAF4FB368A3712230FFC05B66A14C7003E2AD6A938D544B8B9908C4536F945AC4BDB1CA623F2826A25CA16B39730C9FE940A8642EB35088ED341BE768C10B152C8A65D32E4DBE68764E6B2ABDE6824088B6BE258D7E3AEA155CB919E1C500CDCEE435515CF09575F75551C16FBA0F3AEDE0AABA544E89A58E4C34E255EAAFD8F65340DAA55E3ED8AB903FE188416340ACE15D36F9CEDE379CC3586E6D320F72AA310A1B0A781D06B7418A50525105FA749306AC59A788D6866B7DDD0F4C059BA6CEE43FAD5AD2A362B9DE1C57324ADE8B5B46C6B1DDABD82F0670F7A4DA869F204EFB27EA7E049BC7D6CFD2071682C894161922A99108EB3BB8922113BA9923EB96812B | ||
160 | 20031213130217 2 6 200 4095 2 CE96240B0B5684D9E281FDA07D5B6C316E14C7AE83913F86D13CAD2546F93B533D15629D4B3E2C76753C5ABCC29A8FB610CA1C3EB1014B0FD8209C330FFF6EB8A562474B7D387E3F8074FA29D0B58BAD5E6967A0AD667C41D41E1241669431F865C57E9EEB00E69BEB1D18C3B940810324B394FAB8F75B27A9B4E7972F07B4916A6A3D50F0445024697155382BF1AD14F90F8BAB7E9D3CCBAE6CD84E488A98770A8C64943582C6D2BB529511945ABA146115273EB6BD718B62FEBFCD503FB56E8D4262E17DC5CE1A9B1D3E8FFA5CE0B825498BC6254DA9CC69DDF7AD9BA582AB8F812C4DE3228C88C5640BAEF5F62B7C039588D6CD7F694F039507AA3AAF4FB368A3712230FFC05B66A14C7003E2AD6A938D544B8B9908C4536F945AC4BDB1CA623F2826A25CA16B39730C9FE940A8642EB35088ED341BE768C10B152C8A65D32E4DBE68764E6B2ABDE6824088B6BE258D7E3AEA155CB919E1C500CDCEE435515CF09575F75551C16FBA0F3AEDE0AABA544E89A58E4C34E255EAAFD8F65340DAA55E3ED8AB903FE188416340ACE15D36F9CEDE379CC3586E6D320F72AA310A1B0A781D06B7418A50525105FA749306AC59A788D6866B7DDD0F4C059BA6CEE43FAD5AD2A362B9DE1C57324ADE8B5B46C6B1DDABD82F0670F7A4DA869F204EFB27EA7E049BC7D6CFD2071682C894161922A99108EB3BB8922113BA9923EBB738CB | ||
161 | 20031213130337 2 6 200 4095 5 CE96240B0B5684D9E281FDA07D5B6C316E14C7AE83913F86D13CAD2546F93B533D15629D4B3E2C76753C5ABCC29A8FB610CA1C3EB1014B0FD8209C330FFF6EB8A562474B7D387E3F8074FA29D0B58BAD5E6967A0AD667C41D41E1241669431F865C57E9EEB00E69BEB1D18C3B940810324B394FAB8F75B27A9B4E7972F07B4916A6A3D50F0445024697155382BF1AD14F90F8BAB7E9D3CCBAE6CD84E488A98770A8C64943582C6D2BB529511945ABA146115273EB6BD718B62FEBFCD503FB56E8D4262E17DC5CE1A9B1D3E8FFA5CE0B825498BC6254DA9CC69DDF7AD9BA582AB8F812C4DE3228C88C5640BAEF5F62B7C039588D6CD7F694F039507AA3AAF4FB368A3712230FFC05B66A14C7003E2AD6A938D544B8B9908C4536F945AC4BDB1CA623F2826A25CA16B39730C9FE940A8642EB35088ED341BE768C10B152C8A65D32E4DBE68764E6B2ABDE6824088B6BE258D7E3AEA155CB919E1C500CDCEE435515CF09575F75551C16FBA0F3AEDE0AABA544E89A58E4C34E255EAAFD8F65340DAA55E3ED8AB903FE188416340ACE15D36F9CEDE379CC3586E6D320F72AA310A1B0A781D06B7418A50525105FA749306AC59A788D6866B7DDD0F4C059BA6CEE43FAD5AD2A362B9DE1C57324ADE8B5B46C6B1DDABD82F0670F7A4DA869F204EFB27EA7E049BC7D6CFD2071682C894161922A99108EB3BB8922113BA9923EBDB337F | ||
162 | 20031213130458 2 6 200 4095 2 CE96240B0B5684D9E281FDA07D5B6C316E14C7AE83913F86D13CAD2546F93B533D15629D4B3E2C76753C5ABCC29A8FB610CA1C3EB1014B0FD8209C330FFF6EB8A562474B7D387E3F8074FA29D0B58BAD5E6967A0AD667C41D41E1241669431F865C57E9EEB00E69BEB1D18C3B940810324B394FAB8F75B27A9B4E7972F07B4916A6A3D50F0445024697155382BF1AD14F90F8BAB7E9D3CCBAE6CD84E488A98770A8C64943582C6D2BB529511945ABA146115273EB6BD718B62FEBFCD503FB56E8D4262E17DC5CE1A9B1D3E8FFA5CE0B825498BC6254DA9CC69DDF7AD9BA582AB8F812C4DE3228C88C5640BAEF5F62B7C039588D6CD7F694F039507AA3AAF4FB368A3712230FFC05B66A14C7003E2AD6A938D544B8B9908C4536F945AC4BDB1CA623F2826A25CA16B39730C9FE940A8642EB35088ED341BE768C10B152C8A65D32E4DBE68764E6B2ABDE6824088B6BE258D7E3AEA155CB919E1C500CDCEE435515CF09575F75551C16FBA0F3AEDE0AABA544E89A58E4C34E255EAAFD8F65340DAA55E3ED8AB903FE188416340ACE15D36F9CEDE379CC3586E6D320F72AA310A1B0A781D06B7418A50525105FA749306AC59A788D6866B7DDD0F4C059BA6CEE43FAD5AD2A362B9DE1C57324ADE8B5B46C6B1DDABD82F0670F7A4DA869F204EFB27EA7E049BC7D6CFD2071682C894161922A99108EB3BB8922113BA9923ECA8B62B | ||
163 | 20031213130619 2 6 200 4095 2 CE96240B0B5684D9E281FDA07D5B6C316E14C7AE83913F86D13CAD2546F93B533D15629D4B3E2C76753C5ABCC29A8FB610CA1C3EB1014B0FD8209C330FFF6EB8A562474B7D387E3F8074FA29D0B58BAD5E6967A0AD667C41D41E1241669431F865C57E9EEB00E69BEB1D18C3B940810324B394FAB8F75B27A9B4E7972F07B4916A6A3D50F0445024697155382BF1AD14F90F8BAB7E9D3CCBAE6CD84E488A98770A8C64943582C6D2BB529511945ABA146115273EB6BD718B62FEBFCD503FB56E8D4262E17DC5CE1A9B1D3E8FFA5CE0B825498BC6254DA9CC69DDF7AD9BA582AB8F812C4DE3228C88C5640BAEF5F62B7C039588D6CD7F694F039507AA3AAF4FB368A3712230FFC05B66A14C7003E2AD6A938D544B8B9908C4536F945AC4BDB1CA623F2826A25CA16B39730C9FE940A8642EB35088ED341BE768C10B152C8A65D32E4DBE68764E6B2ABDE6824088B6BE258D7E3AEA155CB919E1C500CDCEE435515CF09575F75551C16FBA0F3AEDE0AABA544E89A58E4C34E255EAAFD8F65340DAA55E3ED8AB903FE188416340ACE15D36F9CEDE379CC3586E6D320F72AA310A1B0A781D06B7418A50525105FA749306AC59A788D6866B7DDD0F4C059BA6CEE43FAD5AD2A362B9DE1C57324ADE8B5B46C6B1DDABD82F0670F7A4DA869F204EFB27EA7E049BC7D6CFD2071682C894161922A99108EB3BB8922113BA9923ECBCE443 | ||
164 | 20031213130740 2 6 200 4095 2 CE96240B0B5684D9E281FDA07D5B6C316E14C7AE83913F86D13CAD2546F93B533D15629D4B3E2C76753C5ABCC29A8FB610CA1C3EB1014B0FD8209C330FFF6EB8A562474B7D387E3F8074FA29D0B58BAD5E6967A0AD667C41D41E1241669431F865C57E9EEB00E69BEB1D18C3B940810324B394FAB8F75B27A9B4E7972F07B4916A6A3D50F0445024697155382BF1AD14F90F8BAB7E9D3CCBAE6CD84E488A98770A8C64943582C6D2BB529511945ABA146115273EB6BD718B62FEBFCD503FB56E8D4262E17DC5CE1A9B1D3E8FFA5CE0B825498BC6254DA9CC69DDF7AD9BA582AB8F812C4DE3228C88C5640BAEF5F62B7C039588D6CD7F694F039507AA3AAF4FB368A3712230FFC05B66A14C7003E2AD6A938D544B8B9908C4536F945AC4BDB1CA623F2826A25CA16B39730C9FE940A8642EB35088ED341BE768C10B152C8A65D32E4DBE68764E6B2ABDE6824088B6BE258D7E3AEA155CB919E1C500CDCEE435515CF09575F75551C16FBA0F3AEDE0AABA544E89A58E4C34E255EAAFD8F65340DAA55E3ED8AB903FE188416340ACE15D36F9CEDE379CC3586E6D320F72AA310A1B0A781D06B7418A50525105FA749306AC59A788D6866B7DDD0F4C059BA6CEE43FAD5AD2A362B9DE1C57324ADE8B5B46C6B1DDABD82F0670F7A4DA869F204EFB27EA7E049BC7D6CFD2071682C894161922A99108EB3BB8922113BA9923ED1637DB | ||
165 | 20031213130901 2 6 200 4095 5 CE96240B0B5684D9E281FDA07D5B6C316E14C7AE83913F86D13CAD2546F93B533D15629D4B3E2C76753C5ABCC29A8FB610CA1C3EB1014B0FD8209C330FFF6EB8A562474B7D387E3F8074FA29D0B58BAD5E6967A0AD667C41D41E1241669431F865C57E9EEB00E69BEB1D18C3B940810324B394FAB8F75B27A9B4E7972F07B4916A6A3D50F0445024697155382BF1AD14F90F8BAB7E9D3CCBAE6CD84E488A98770A8C64943582C6D2BB529511945ABA146115273EB6BD718B62FEBFCD503FB56E8D4262E17DC5CE1A9B1D3E8FFA5CE0B825498BC6254DA9CC69DDF7AD9BA582AB8F812C4DE3228C88C5640BAEF5F62B7C039588D6CD7F694F039507AA3AAF4FB368A3712230FFC05B66A14C7003E2AD6A938D544B8B9908C4536F945AC4BDB1CA623F2826A25CA16B39730C9FE940A8642EB35088ED341BE768C10B152C8A65D32E4DBE68764E6B2ABDE6824088B6BE258D7E3AEA155CB919E1C500CDCEE435515CF09575F75551C16FBA0F3AEDE0AABA544E89A58E4C34E255EAAFD8F65340DAA55E3ED8AB903FE188416340ACE15D36F9CEDE379CC3586E6D320F72AA310A1B0A781D06B7418A50525105FA749306AC59A788D6866B7DDD0F4C059BA6CEE43FAD5AD2A362B9DE1C57324ADE8B5B46C6B1DDABD82F0670F7A4DA869F204EFB27EA7E049BC7D6CFD2071682C894161922A99108EB3BB8922113BA9923ED3EA08F | ||
166 | 20031213131021 2 6 200 4095 2 CE96240B0B5684D9E281FDA07D5B6C316E14C7AE83913F86D13CAD2546F93B533D15629D4B3E2C76753C5ABCC29A8FB610CA1C3EB1014B0FD8209C330FFF6EB8A562474B7D387E3F8074FA29D0B58BAD5E6967A0AD667C41D41E1241669431F865C57E9EEB00E69BEB1D18C3B940810324B394FAB8F75B27A9B4E7972F07B4916A6A3D50F0445024697155382BF1AD14F90F8BAB7E9D3CCBAE6CD84E488A98770A8C64943582C6D2BB529511945ABA146115273EB6BD718B62FEBFCD503FB56E8D4262E17DC5CE1A9B1D3E8FFA5CE0B825498BC6254DA9CC69DDF7AD9BA582AB8F812C4DE3228C88C5640BAEF5F62B7C039588D6CD7F694F039507AA3AAF4FB368A3712230FFC05B66A14C7003E2AD6A938D544B8B9908C4536F945AC4BDB1CA623F2826A25CA16B39730C9FE940A8642EB35088ED341BE768C10B152C8A65D32E4DBE68764E6B2ABDE6824088B6BE258D7E3AEA155CB919E1C500CDCEE435515CF09575F75551C16FBA0F3AEDE0AABA544E89A58E4C34E255EAAFD8F65340DAA55E3ED8AB903FE188416340ACE15D36F9CEDE379CC3586E6D320F72AA310A1B0A781D06B7418A50525105FA749306AC59A788D6866B7DDD0F4C059BA6CEE43FAD5AD2A362B9DE1C57324ADE8B5B46C6B1DDABD82F0670F7A4DA869F204EFB27EA7E049BC7D6CFD2071682C894161922A99108EB3BB8922113BA9923EDC96C6B | ||
167 | 20031213131142 2 6 200 4095 5 CE96240B0B5684D9E281FDA07D5B6C316E14C7AE83913F86D13CAD2546F93B533D15629D4B3E2C76753C5ABCC29A8FB610CA1C3EB1014B0FD8209C330FFF6EB8A562474B7D387E3F8074FA29D0B58BAD5E6967A0AD667C41D41E1241669431F865C57E9EEB00E69BEB1D18C3B940810324B394FAB8F75B27A9B4E7972F07B4916A6A3D50F0445024697155382BF1AD14F90F8BAB7E9D3CCBAE6CD84E488A98770A8C64943582C6D2BB529511945ABA146115273EB6BD718B62FEBFCD503FB56E8D4262E17DC5CE1A9B1D3E8FFA5CE0B825498BC6254DA9CC69DDF7AD9BA582AB8F812C4DE3228C88C5640BAEF5F62B7C039588D6CD7F694F039507AA3AAF4FB368A3712230FFC05B66A14C7003E2AD6A938D544B8B9908C4536F945AC4BDB1CA623F2826A25CA16B39730C9FE940A8642EB35088ED341BE768C10B152C8A65D32E4DBE68764E6B2ABDE6824088B6BE258D7E3AEA155CB919E1C500CDCEE435515CF09575F75551C16FBA0F3AEDE0AABA544E89A58E4C34E255EAAFD8F65340DAA55E3ED8AB903FE188416340ACE15D36F9CEDE379CC3586E6D320F72AA310A1B0A781D06B7418A50525105FA749306AC59A788D6866B7DDD0F4C059BA6CEE43FAD5AD2A362B9DE1C57324ADE8B5B46C6B1DDABD82F0670F7A4DA869F204EFB27EA7E049BC7D6CFD2071682C894161922A99108EB3BB8922113BA9923EEB92FCF | ||
168 | 20031213131303 2 6 200 4095 2 CE96240B0B5684D9E281FDA07D5B6C316E14C7AE83913F86D13CAD2546F93B533D15629D4B3E2C76753C5ABCC29A8FB610CA1C3EB1014B0FD8209C330FFF6EB8A562474B7D387E3F8074FA29D0B58BAD5E6967A0AD667C41D41E1241669431F865C57E9EEB00E69BEB1D18C3B940810324B394FAB8F75B27A9B4E7972F07B4916A6A3D50F0445024697155382BF1AD14F90F8BAB7E9D3CCBAE6CD84E488A98770A8C64943582C6D2BB529511945ABA146115273EB6BD718B62FEBFCD503FB56E8D4262E17DC5CE1A9B1D3E8FFA5CE0B825498BC6254DA9CC69DDF7AD9BA582AB8F812C4DE3228C88C5640BAEF5F62B7C039588D6CD7F694F039507AA3AAF4FB368A3712230FFC05B66A14C7003E2AD6A938D544B8B9908C4536F945AC4BDB1CA623F2826A25CA16B39730C9FE940A8642EB35088ED341BE768C10B152C8A65D32E4DBE68764E6B2ABDE6824088B6BE258D7E3AEA155CB919E1C500CDCEE435515CF09575F75551C16FBA0F3AEDE0AABA544E89A58E4C34E255EAAFD8F65340DAA55E3ED8AB903FE188416340ACE15D36F9CEDE379CC3586E6D320F72AA310A1B0A781D06B7418A50525105FA749306AC59A788D6866B7DDD0F4C059BA6CEE43FAD5AD2A362B9DE1C57324ADE8B5B46C6B1DDABD82F0670F7A4DA869F204EFB27EA7E049BC7D6CFD2071682C894161922A99108EB3BB8922113BA9923F2D2CCF3 | ||
169 | 20031213131424 2 6 200 4095 2 CE96240B0B5684D9E281FDA07D5B6C316E14C7AE83913F86D13CAD2546F93B533D15629D4B3E2C76753C5ABCC29A8FB610CA1C3EB1014B0FD8209C330FFF6EB8A562474B7D387E3F8074FA29D0B58BAD5E6967A0AD667C41D41E1241669431F865C57E9EEB00E69BEB1D18C3B940810324B394FAB8F75B27A9B4E7972F07B4916A6A3D50F0445024697155382BF1AD14F90F8BAB7E9D3CCBAE6CD84E488A98770A8C64943582C6D2BB529511945ABA146115273EB6BD718B62FEBFCD503FB56E8D4262E17DC5CE1A9B1D3E8FFA5CE0B825498BC6254DA9CC69DDF7AD9BA582AB8F812C4DE3228C88C5640BAEF5F62B7C039588D6CD7F694F039507AA3AAF4FB368A3712230FFC05B66A14C7003E2AD6A938D544B8B9908C4536F945AC4BDB1CA623F2826A25CA16B39730C9FE940A8642EB35088ED341BE768C10B152C8A65D32E4DBE68764E6B2ABDE6824088B6BE258D7E3AEA155CB919E1C500CDCEE435515CF09575F75551C16FBA0F3AEDE0AABA544E89A58E4C34E255EAAFD8F65340DAA55E3ED8AB903FE188416340ACE15D36F9CEDE379CC3586E6D320F72AA310A1B0A781D06B7418A50525105FA749306AC59A788D6866B7DDD0F4C059BA6CEE43FAD5AD2A362B9DE1C57324ADE8B5B46C6B1DDABD82F0670F7A4DA869F204EFB27EA7E049BC7D6CFD2071682C894161922A99108EB3BB8922113BA9923F6C89BBB | ||
170 | 20031213131545 2 6 200 4095 2 CE96240B0B5684D9E281FDA07D5B6C316E14C7AE83913F86D13CAD2546F93B533D15629D4B3E2C76753C5ABCC29A8FB610CA1C3EB1014B0FD8209C330FFF6EB8A562474B7D387E3F8074FA29D0B58BAD5E6967A0AD667C41D41E1241669431F865C57E9EEB00E69BEB1D18C3B940810324B394FAB8F75B27A9B4E7972F07B4916A6A3D50F0445024697155382BF1AD14F90F8BAB7E9D3CCBAE6CD84E488A98770A8C64943582C6D2BB529511945ABA146115273EB6BD718B62FEBFCD503FB56E8D4262E17DC5CE1A9B1D3E8FFA5CE0B825498BC6254DA9CC69DDF7AD9BA582AB8F812C4DE3228C88C5640BAEF5F62B7C039588D6CD7F694F039507AA3AAF4FB368A3712230FFC05B66A14C7003E2AD6A938D544B8B9908C4536F945AC4BDB1CA623F2826A25CA16B39730C9FE940A8642EB35088ED341BE768C10B152C8A65D32E4DBE68764E6B2ABDE6824088B6BE258D7E3AEA155CB919E1C500CDCEE435515CF09575F75551C16FBA0F3AEDE0AABA544E89A58E4C34E255EAAFD8F65340DAA55E3ED8AB903FE188416340ACE15D36F9CEDE379CC3586E6D320F72AA310A1B0A781D06B7418A50525105FA749306AC59A788D6866B7DDD0F4C059BA6CEE43FAD5AD2A362B9DE1C57324ADE8B5B46C6B1DDABD82F0670F7A4DA869F204EFB27EA7E049BC7D6CFD2071682C894161922A99108EB3BB8922113BA9923F7962EDB | ||
171 | 20031213131706 2 6 200 4095 5 CE96240B0B5684D9E281FDA07D5B6C316E14C7AE83913F86D13CAD2546F93B533D15629D4B3E2C76753C5ABCC29A8FB610CA1C3EB1014B0FD8209C330FFF6EB8A562474B7D387E3F8074FA29D0B58BAD5E6967A0AD667C41D41E1241669431F865C57E9EEB00E69BEB1D18C3B940810324B394FAB8F75B27A9B4E7972F07B4916A6A3D50F0445024697155382BF1AD14F90F8BAB7E9D3CCBAE6CD84E488A98770A8C64943582C6D2BB529511945ABA146115273EB6BD718B62FEBFCD503FB56E8D4262E17DC5CE1A9B1D3E8FFA5CE0B825498BC6254DA9CC69DDF7AD9BA582AB8F812C4DE3228C88C5640BAEF5F62B7C039588D6CD7F694F039507AA3AAF4FB368A3712230FFC05B66A14C7003E2AD6A938D544B8B9908C4536F945AC4BDB1CA623F2826A25CA16B39730C9FE940A8642EB35088ED341BE768C10B152C8A65D32E4DBE68764E6B2ABDE6824088B6BE258D7E3AEA155CB919E1C500CDCEE435515CF09575F75551C16FBA0F3AEDE0AABA544E89A58E4C34E255EAAFD8F65340DAA55E3ED8AB903FE188416340ACE15D36F9CEDE379CC3586E6D320F72AA310A1B0A781D06B7418A50525105FA749306AC59A788D6866B7DDD0F4C059BA6CEE43FAD5AD2A362B9DE1C57324ADE8B5B46C6B1DDABD82F0670F7A4DA869F204EFB27EA7E049BC7D6CFD2071682C894161922A99108EB3BB8922113BA9923F85A4767 | ||
172 | 20031213131827 2 6 200 4095 5 CE96240B0B5684D9E281FDA07D5B6C316E14C7AE83913F86D13CAD2546F93B533D15629D4B3E2C76753C5ABCC29A8FB610CA1C3EB1014B0FD8209C330FFF6EB8A562474B7D387E3F8074FA29D0B58BAD5E6967A0AD667C41D41E1241669431F865C57E9EEB00E69BEB1D18C3B940810324B394FAB8F75B27A9B4E7972F07B4916A6A3D50F0445024697155382BF1AD14F90F8BAB7E9D3CCBAE6CD84E488A98770A8C64943582C6D2BB529511945ABA146115273EB6BD718B62FEBFCD503FB56E8D4262E17DC5CE1A9B1D3E8FFA5CE0B825498BC6254DA9CC69DDF7AD9BA582AB8F812C4DE3228C88C5640BAEF5F62B7C039588D6CD7F694F039507AA3AAF4FB368A3712230FFC05B66A14C7003E2AD6A938D544B8B9908C4536F945AC4BDB1CA623F2826A25CA16B39730C9FE940A8642EB35088ED341BE768C10B152C8A65D32E4DBE68764E6B2ABDE6824088B6BE258D7E3AEA155CB919E1C500CDCEE435515CF09575F75551C16FBA0F3AEDE0AABA544E89A58E4C34E255EAAFD8F65340DAA55E3ED8AB903FE188416340ACE15D36F9CEDE379CC3586E6D320F72AA310A1B0A781D06B7418A50525105FA749306AC59A788D6866B7DDD0F4C059BA6CEE43FAD5AD2A362B9DE1C57324ADE8B5B46C6B1DDABD82F0670F7A4DA869F204EFB27EA7E049BC7D6CFD2071682C894161922A99108EB3BB8922113BA9923F8A196C7 | ||
173 | 20031213131947 2 6 200 4095 5 CE96240B0B5684D9E281FDA07D5B6C316E14C7AE83913F86D13CAD2546F93B533D15629D4B3E2C76753C5ABCC29A8FB610CA1C3EB1014B0FD8209C330FFF6EB8A562474B7D387E3F8074FA29D0B58BAD5E6967A0AD667C41D41E1241669431F865C57E9EEB00E69BEB1D18C3B940810324B394FAB8F75B27A9B4E7972F07B4916A6A3D50F0445024697155382BF1AD14F90F8BAB7E9D3CCBAE6CD84E488A98770A8C64943582C6D2BB529511945ABA146115273EB6BD718B62FEBFCD503FB56E8D4262E17DC5CE1A9B1D3E8FFA5CE0B825498BC6254DA9CC69DDF7AD9BA582AB8F812C4DE3228C88C5640BAEF5F62B7C039588D6CD7F694F039507AA3AAF4FB368A3712230FFC05B66A14C7003E2AD6A938D544B8B9908C4536F945AC4BDB1CA623F2826A25CA16B39730C9FE940A8642EB35088ED341BE768C10B152C8A65D32E4DBE68764E6B2ABDE6824088B6BE258D7E3AEA155CB919E1C500CDCEE435515CF09575F75551C16FBA0F3AEDE0AABA544E89A58E4C34E255EAAFD8F65340DAA55E3ED8AB903FE188416340ACE15D36F9CEDE379CC3586E6D320F72AA310A1B0A781D06B7418A50525105FA749306AC59A788D6866B7DDD0F4C059BA6CEE43FAD5AD2A362B9DE1C57324ADE8B5B46C6B1DDABD82F0670F7A4DA869F204EFB27EA7E049BC7D6CFD2071682C894161922A99108EB3BB8922113BA9923F94500EF | ||
174 | 20031213132108 2 6 200 4095 5 CE96240B0B5684D9E281FDA07D5B6C316E14C7AE83913F86D13CAD2546F93B533D15629D4B3E2C76753C5ABCC29A8FB610CA1C3EB1014B0FD8209C330FFF6EB8A562474B7D387E3F8074FA29D0B58BAD5E6967A0AD667C41D41E1241669431F865C57E9EEB00E69BEB1D18C3B940810324B394FAB8F75B27A9B4E7972F07B4916A6A3D50F0445024697155382BF1AD14F90F8BAB7E9D3CCBAE6CD84E488A98770A8C64943582C6D2BB529511945ABA146115273EB6BD718B62FEBFCD503FB56E8D4262E17DC5CE1A9B1D3E8FFA5CE0B825498BC6254DA9CC69DDF7AD9BA582AB8F812C4DE3228C88C5640BAEF5F62B7C039588D6CD7F694F039507AA3AAF4FB368A3712230FFC05B66A14C7003E2AD6A938D544B8B9908C4536F945AC4BDB1CA623F2826A25CA16B39730C9FE940A8642EB35088ED341BE768C10B152C8A65D32E4DBE68764E6B2ABDE6824088B6BE258D7E3AEA155CB919E1C500CDCEE435515CF09575F75551C16FBA0F3AEDE0AABA544E89A58E4C34E255EAAFD8F65340DAA55E3ED8AB903FE188416340ACE15D36F9CEDE379CC3586E6D320F72AA310A1B0A781D06B7418A50525105FA749306AC59A788D6866B7DDD0F4C059BA6CEE43FAD5AD2A362B9DE1C57324ADE8B5B46C6B1DDABD82F0670F7A4DA869F204EFB27EA7E049BC7D6CFD2071682C894161922A99108EB3BB8922113BA9923FAF467BF | ||
175 | 20031213132229 2 6 200 4095 2 CE96240B0B5684D9E281FDA07D5B6C316E14C7AE83913F86D13CAD2546F93B533D15629D4B3E2C76753C5ABCC29A8FB610CA1C3EB1014B0FD8209C330FFF6EB8A562474B7D387E3F8074FA29D0B58BAD5E6967A0AD667C41D41E1241669431F865C57E9EEB00E69BEB1D18C3B940810324B394FAB8F75B27A9B4E7972F07B4916A6A3D50F0445024697155382BF1AD14F90F8BAB7E9D3CCBAE6CD84E488A98770A8C64943582C6D2BB529511945ABA146115273EB6BD718B62FEBFCD503FB56E8D4262E17DC5CE1A9B1D3E8FFA5CE0B825498BC6254DA9CC69DDF7AD9BA582AB8F812C4DE3228C88C5640BAEF5F62B7C039588D6CD7F694F039507AA3AAF4FB368A3712230FFC05B66A14C7003E2AD6A938D544B8B9908C4536F945AC4BDB1CA623F2826A25CA16B39730C9FE940A8642EB35088ED341BE768C10B152C8A65D32E4DBE68764E6B2ABDE6824088B6BE258D7E3AEA155CB919E1C500CDCEE435515CF09575F75551C16FBA0F3AEDE0AABA544E89A58E4C34E255EAAFD8F65340DAA55E3ED8AB903FE188416340ACE15D36F9CEDE379CC3586E6D320F72AA310A1B0A781D06B7418A50525105FA749306AC59A788D6866B7DDD0F4C059BA6CEE43FAD5AD2A362B9DE1C57324ADE8B5B46C6B1DDABD82F0670F7A4DA869F204EFB27EA7E049BC7D6CFD2071682C894161922A99108EB3BB8922113BA9923FB5A7803 | ||
176 | 20031213132350 2 6 200 4095 5 CE96240B0B5684D9E281FDA07D5B6C316E14C7AE83913F86D13CAD2546F93B533D15629D4B3E2C76753C5ABCC29A8FB610CA1C3EB1014B0FD8209C330FFF6EB8A562474B7D387E3F8074FA29D0B58BAD5E6967A0AD667C41D41E1241669431F865C57E9EEB00E69BEB1D18C3B940810324B394FAB8F75B27A9B4E7972F07B4916A6A3D50F0445024697155382BF1AD14F90F8BAB7E9D3CCBAE6CD84E488A98770A8C64943582C6D2BB529511945ABA146115273EB6BD718B62FEBFCD503FB56E8D4262E17DC5CE1A9B1D3E8FFA5CE0B825498BC6254DA9CC69DDF7AD9BA582AB8F812C4DE3228C88C5640BAEF5F62B7C039588D6CD7F694F039507AA3AAF4FB368A3712230FFC05B66A14C7003E2AD6A938D544B8B9908C4536F945AC4BDB1CA623F2826A25CA16B39730C9FE940A8642EB35088ED341BE768C10B152C8A65D32E4DBE68764E6B2ABDE6824088B6BE258D7E3AEA155CB919E1C500CDCEE435515CF09575F75551C16FBA0F3AEDE0AABA544E89A58E4C34E255EAAFD8F65340DAA55E3ED8AB903FE188416340ACE15D36F9CEDE379CC3586E6D320F72AA310A1B0A781D06B7418A50525105FA749306AC59A788D6866B7DDD0F4C059BA6CEE43FAD5AD2A362B9DE1C57324ADE8B5B46C6B1DDABD82F0670F7A4DA869F204EFB27EA7E049BC7D6CFD2071682C894161922A99108EB3BB8922113BA9923FB7D5467 | ||
177 | 20031213132511 2 6 200 4095 5 CE96240B0B5684D9E281FDA07D5B6C316E14C7AE83913F86D13CAD2546F93B533D15629D4B3E2C76753C5ABCC29A8FB610CA1C3EB1014B0FD8209C330FFF6EB8A562474B7D387E3F8074FA29D0B58BAD5E6967A0AD667C41D41E1241669431F865C57E9EEB00E69BEB1D18C3B940810324B394FAB8F75B27A9B4E7972F07B4916A6A3D50F0445024697155382BF1AD14F90F8BAB7E9D3CCBAE6CD84E488A98770A8C64943582C6D2BB529511945ABA146115273EB6BD718B62FEBFCD503FB56E8D4262E17DC5CE1A9B1D3E8FFA5CE0B825498BC6254DA9CC69DDF7AD9BA582AB8F812C4DE3228C88C5640BAEF5F62B7C039588D6CD7F694F039507AA3AAF4FB368A3712230FFC05B66A14C7003E2AD6A938D544B8B9908C4536F945AC4BDB1CA623F2826A25CA16B39730C9FE940A8642EB35088ED341BE768C10B152C8A65D32E4DBE68764E6B2ABDE6824088B6BE258D7E3AEA155CB919E1C500CDCEE435515CF09575F75551C16FBA0F3AEDE0AABA544E89A58E4C34E255EAAFD8F65340DAA55E3ED8AB903FE188416340ACE15D36F9CEDE379CC3586E6D320F72AA310A1B0A781D06B7418A50525105FA749306AC59A788D6866B7DDD0F4C059BA6CEE43FAD5AD2A362B9DE1C57324ADE8B5B46C6B1DDABD82F0670F7A4DA869F204EFB27EA7E049BC7D6CFD2071682C894161922A99108EB3BB8922113BA9923FC4A16D7 | ||
178 | 20031213132632 2 6 200 4095 5 CE96240B0B5684D9E281FDA07D5B6C316E14C7AE83913F86D13CAD2546F93B533D15629D4B3E2C76753C5ABCC29A8FB610CA1C3EB1014B0FD8209C330FFF6EB8A562474B7D387E3F8074FA29D0B58BAD5E6967A0AD667C41D41E1241669431F865C57E9EEB00E69BEB1D18C3B940810324B394FAB8F75B27A9B4E7972F07B4916A6A3D50F0445024697155382BF1AD14F90F8BAB7E9D3CCBAE6CD84E488A98770A8C64943582C6D2BB529511945ABA146115273EB6BD718B62FEBFCD503FB56E8D4262E17DC5CE1A9B1D3E8FFA5CE0B825498BC6254DA9CC69DDF7AD9BA582AB8F812C4DE3228C88C5640BAEF5F62B7C039588D6CD7F694F039507AA3AAF4FB368A3712230FFC05B66A14C7003E2AD6A938D544B8B9908C4536F945AC4BDB1CA623F2826A25CA16B39730C9FE940A8642EB35088ED341BE768C10B152C8A65D32E4DBE68764E6B2ABDE6824088B6BE258D7E3AEA155CB919E1C500CDCEE435515CF09575F75551C16FBA0F3AEDE0AABA544E89A58E4C34E255EAAFD8F65340DAA55E3ED8AB903FE188416340ACE15D36F9CEDE379CC3586E6D320F72AA310A1B0A781D06B7418A50525105FA749306AC59A788D6866B7DDD0F4C059BA6CEE43FAD5AD2A362B9DE1C57324ADE8B5B46C6B1DDABD82F0670F7A4DA869F204EFB27EA7E049BC7D6CFD2071682C894161922A99108EB3BB8922113BA9923FEEDC36F | ||
179 | 20031213132752 2 6 200 4095 5 CE96240B0B5684D9E281FDA07D5B6C316E14C7AE83913F86D13CAD2546F93B533D15629D4B3E2C76753C5ABCC29A8FB610CA1C3EB1014B0FD8209C330FFF6EB8A562474B7D387E3F8074FA29D0B58BAD5E6967A0AD667C41D41E1241669431F865C57E9EEB00E69BEB1D18C3B940810324B394FAB8F75B27A9B4E7972F07B4916A6A3D50F0445024697155382BF1AD14F90F8BAB7E9D3CCBAE6CD84E488A98770A8C64943582C6D2BB529511945ABA146115273EB6BD718B62FEBFCD503FB56E8D4262E17DC5CE1A9B1D3E8FFA5CE0B825498BC6254DA9CC69DDF7AD9BA582AB8F812C4DE3228C88C5640BAEF5F62B7C039588D6CD7F694F039507AA3AAF4FB368A3712230FFC05B66A14C7003E2AD6A938D544B8B9908C4536F945AC4BDB1CA623F2826A25CA16B39730C9FE940A8642EB35088ED341BE768C10B152C8A65D32E4DBE68764E6B2ABDE6824088B6BE258D7E3AEA155CB919E1C500CDCEE435515CF09575F75551C16FBA0F3AEDE0AABA544E89A58E4C34E255EAAFD8F65340DAA55E3ED8AB903FE188416340ACE15D36F9CEDE379CC3586E6D320F72AA310A1B0A781D06B7418A50525105FA749306AC59A788D6866B7DDD0F4C059BA6CEE43FAD5AD2A362B9DE1C57324ADE8B5B46C6B1DDABD82F0670F7A4DA869F204EFB27EA7E049BC7D6CFD2071682C894161922A99108EB3BB8922113BA9923FFA077EF | ||
180 | 20031213132913 2 6 200 4095 2 CE96240B0B5684D9E281FDA07D5B6C316E14C7AE83913F86D13CAD2546F93B533D15629D4B3E2C76753C5ABCC29A8FB610CA1C3EB1014B0FD8209C330FFF6EB8A562474B7D387E3F8074FA29D0B58BAD5E6967A0AD667C41D41E1241669431F865C57E9EEB00E69BEB1D18C3B940810324B394FAB8F75B27A9B4E7972F07B4916A6A3D50F0445024697155382BF1AD14F90F8BAB7E9D3CCBAE6CD84E488A98770A8C64943582C6D2BB529511945ABA146115273EB6BD718B62FEBFCD503FB56E8D4262E17DC5CE1A9B1D3E8FFA5CE0B825498BC6254DA9CC69DDF7AD9BA582AB8F812C4DE3228C88C5640BAEF5F62B7C039588D6CD7F694F039507AA3AAF4FB368A3712230FFC05B66A14C7003E2AD6A938D544B8B9908C4536F945AC4BDB1CA623F2826A25CA16B39730C9FE940A8642EB35088ED341BE768C10B152C8A65D32E4DBE68764E6B2ABDE6824088B6BE258D7E3AEA155CB919E1C500CDCEE435515CF09575F75551C16FBA0F3AEDE0AABA544E89A58E4C34E255EAAFD8F65340DAA55E3ED8AB903FE188416340ACE15D36F9CEDE379CC3586E6D320F72AA310A1B0A781D06B7418A50525105FA749306AC59A788D6866B7DDD0F4C059BA6CEE43FAD5AD2A362B9DE1C57324ADE8B5B46C6B1DDABD82F0670F7A4DA869F204EFB27EA7E049BC7D6CFD2071682C894161922A99108EB3BB8922113BA992400725B7B | ||
181 | 20031213133034 2 6 200 4095 2 CE96240B0B5684D9E281FDA07D5B6C316E14C7AE83913F86D13CAD2546F93B533D15629D4B3E2C76753C5ABCC29A8FB610CA1C3EB1014B0FD8209C330FFF6EB8A562474B7D387E3F8074FA29D0B58BAD5E6967A0AD667C41D41E1241669431F865C57E9EEB00E69BEB1D18C3B940810324B394FAB8F75B27A9B4E7972F07B4916A6A3D50F0445024697155382BF1AD14F90F8BAB7E9D3CCBAE6CD84E488A98770A8C64943582C6D2BB529511945ABA146115273EB6BD718B62FEBFCD503FB56E8D4262E17DC5CE1A9B1D3E8FFA5CE0B825498BC6254DA9CC69DDF7AD9BA582AB8F812C4DE3228C88C5640BAEF5F62B7C039588D6CD7F694F039507AA3AAF4FB368A3712230FFC05B66A14C7003E2AD6A938D544B8B9908C4536F945AC4BDB1CA623F2826A25CA16B39730C9FE940A8642EB35088ED341BE768C10B152C8A65D32E4DBE68764E6B2ABDE6824088B6BE258D7E3AEA155CB919E1C500CDCEE435515CF09575F75551C16FBA0F3AEDE0AABA544E89A58E4C34E255EAAFD8F65340DAA55E3ED8AB903FE188416340ACE15D36F9CEDE379CC3586E6D320F72AA310A1B0A781D06B7418A50525105FA749306AC59A788D6866B7DDD0F4C059BA6CEE43FAD5AD2A362B9DE1C57324ADE8B5B46C6B1DDABD82F0670F7A4DA869F204EFB27EA7E049BC7D6CFD2071682C894161922A99108EB3BB8922113BA992400728FFB | ||
182 | 20031213133155 2 6 200 4095 2 CE96240B0B5684D9E281FDA07D5B6C316E14C7AE83913F86D13CAD2546F93B533D15629D4B3E2C76753C5ABCC29A8FB610CA1C3EB1014B0FD8209C330FFF6EB8A562474B7D387E3F8074FA29D0B58BAD5E6967A0AD667C41D41E1241669431F865C57E9EEB00E69BEB1D18C3B940810324B394FAB8F75B27A9B4E7972F07B4916A6A3D50F0445024697155382BF1AD14F90F8BAB7E9D3CCBAE6CD84E488A98770A8C64943582C6D2BB529511945ABA146115273EB6BD718B62FEBFCD503FB56E8D4262E17DC5CE1A9B1D3E8FFA5CE0B825498BC6254DA9CC69DDF7AD9BA582AB8F812C4DE3228C88C5640BAEF5F62B7C039588D6CD7F694F039507AA3AAF4FB368A3712230FFC05B66A14C7003E2AD6A938D544B8B9908C4536F945AC4BDB1CA623F2826A25CA16B39730C9FE940A8642EB35088ED341BE768C10B152C8A65D32E4DBE68764E6B2ABDE6824088B6BE258D7E3AEA155CB919E1C500CDCEE435515CF09575F75551C16FBA0F3AEDE0AABA544E89A58E4C34E255EAAFD8F65340DAA55E3ED8AB903FE188416340ACE15D36F9CEDE379CC3586E6D320F72AA310A1B0A781D06B7418A50525105FA749306AC59A788D6866B7DDD0F4C059BA6CEE43FAD5AD2A362B9DE1C57324ADE8B5B46C6B1DDABD82F0670F7A4DA869F204EFB27EA7E049BC7D6CFD2071682C894161922A99108EB3BB8922113BA9924011CFA13 | ||
183 | 20031213133316 2 6 200 4095 5 CE96240B0B5684D9E281FDA07D5B6C316E14C7AE83913F86D13CAD2546F93B533D15629D4B3E2C76753C5ABCC29A8FB610CA1C3EB1014B0FD8209C330FFF6EB8A562474B7D387E3F8074FA29D0B58BAD5E6967A0AD667C41D41E1241669431F865C57E9EEB00E69BEB1D18C3B940810324B394FAB8F75B27A9B4E7972F07B4916A6A3D50F0445024697155382BF1AD14F90F8BAB7E9D3CCBAE6CD84E488A98770A8C64943582C6D2BB529511945ABA146115273EB6BD718B62FEBFCD503FB56E8D4262E17DC5CE1A9B1D3E8FFA5CE0B825498BC6254DA9CC69DDF7AD9BA582AB8F812C4DE3228C88C5640BAEF5F62B7C039588D6CD7F694F039507AA3AAF4FB368A3712230FFC05B66A14C7003E2AD6A938D544B8B9908C4536F945AC4BDB1CA623F2826A25CA16B39730C9FE940A8642EB35088ED341BE768C10B152C8A65D32E4DBE68764E6B2ABDE6824088B6BE258D7E3AEA155CB919E1C500CDCEE435515CF09575F75551C16FBA0F3AEDE0AABA544E89A58E4C34E255EAAFD8F65340DAA55E3ED8AB903FE188416340ACE15D36F9CEDE379CC3586E6D320F72AA310A1B0A781D06B7418A50525105FA749306AC59A788D6866B7DDD0F4C059BA6CEE43FAD5AD2A362B9DE1C57324ADE8B5B46C6B1DDABD82F0670F7A4DA869F204EFB27EA7E049BC7D6CFD2071682C894161922A99108EB3BB8922113BA99240165703F | ||
184 | 20031213133436 2 6 200 4095 2 CE96240B0B5684D9E281FDA07D5B6C316E14C7AE83913F86D13CAD2546F93B533D15629D4B3E2C76753C5ABCC29A8FB610CA1C3EB1014B0FD8209C330FFF6EB8A562474B7D387E3F8074FA29D0B58BAD5E6967A0AD667C41D41E1241669431F865C57E9EEB00E69BEB1D18C3B940810324B394FAB8F75B27A9B4E7972F07B4916A6A3D50F0445024697155382BF1AD14F90F8BAB7E9D3CCBAE6CD84E488A98770A8C64943582C6D2BB529511945ABA146115273EB6BD718B62FEBFCD503FB56E8D4262E17DC5CE1A9B1D3E8FFA5CE0B825498BC6254DA9CC69DDF7AD9BA582AB8F812C4DE3228C88C5640BAEF5F62B7C039588D6CD7F694F039507AA3AAF4FB368A3712230FFC05B66A14C7003E2AD6A938D544B8B9908C4536F945AC4BDB1CA623F2826A25CA16B39730C9FE940A8642EB35088ED341BE768C10B152C8A65D32E4DBE68764E6B2ABDE6824088B6BE258D7E3AEA155CB919E1C500CDCEE435515CF09575F75551C16FBA0F3AEDE0AABA544E89A58E4C34E255EAAFD8F65340DAA55E3ED8AB903FE188416340ACE15D36F9CEDE379CC3586E6D320F72AA310A1B0A781D06B7418A50525105FA749306AC59A788D6866B7DDD0F4C059BA6CEE43FAD5AD2A362B9DE1C57324ADE8B5B46C6B1DDABD82F0670F7A4DA869F204EFB27EA7E049BC7D6CFD2071682C894161922A99108EB3BB8922113BA99240166BA7B | ||
185 | 20031213133557 2 6 200 4095 5 CE96240B0B5684D9E281FDA07D5B6C316E14C7AE83913F86D13CAD2546F93B533D15629D4B3E2C76753C5ABCC29A8FB610CA1C3EB1014B0FD8209C330FFF6EB8A562474B7D387E3F8074FA29D0B58BAD5E6967A0AD667C41D41E1241669431F865C57E9EEB00E69BEB1D18C3B940810324B394FAB8F75B27A9B4E7972F07B4916A6A3D50F0445024697155382BF1AD14F90F8BAB7E9D3CCBAE6CD84E488A98770A8C64943582C6D2BB529511945ABA146115273EB6BD718B62FEBFCD503FB56E8D4262E17DC5CE1A9B1D3E8FFA5CE0B825498BC6254DA9CC69DDF7AD9BA582AB8F812C4DE3228C88C5640BAEF5F62B7C039588D6CD7F694F039507AA3AAF4FB368A3712230FFC05B66A14C7003E2AD6A938D544B8B9908C4536F945AC4BDB1CA623F2826A25CA16B39730C9FE940A8642EB35088ED341BE768C10B152C8A65D32E4DBE68764E6B2ABDE6824088B6BE258D7E3AEA155CB919E1C500CDCEE435515CF09575F75551C16FBA0F3AEDE0AABA544E89A58E4C34E255EAAFD8F65340DAA55E3ED8AB903FE188416340ACE15D36F9CEDE379CC3586E6D320F72AA310A1B0A781D06B7418A50525105FA749306AC59A788D6866B7DDD0F4C059BA6CEE43FAD5AD2A362B9DE1C57324ADE8B5B46C6B1DDABD82F0670F7A4DA869F204EFB27EA7E049BC7D6CFD2071682C894161922A99108EB3BB8922113BA9924018E41B7 | ||
186 | 20031213133718 2 6 200 4095 2 CE96240B0B5684D9E281FDA07D5B6C316E14C7AE83913F86D13CAD2546F93B533D15629D4B3E2C76753C5ABCC29A8FB610CA1C3EB1014B0FD8209C330FFF6EB8A562474B7D387E3F8074FA29D0B58BAD5E6967A0AD667C41D41E1241669431F865C57E9EEB00E69BEB1D18C3B940810324B394FAB8F75B27A9B4E7972F07B4916A6A3D50F0445024697155382BF1AD14F90F8BAB7E9D3CCBAE6CD84E488A98770A8C64943582C6D2BB529511945ABA146115273EB6BD718B62FEBFCD503FB56E8D4262E17DC5CE1A9B1D3E8FFA5CE0B825498BC6254DA9CC69DDF7AD9BA582AB8F812C4DE3228C88C5640BAEF5F62B7C039588D6CD7F694F039507AA3AAF4FB368A3712230FFC05B66A14C7003E2AD6A938D544B8B9908C4536F945AC4BDB1CA623F2826A25CA16B39730C9FE940A8642EB35088ED341BE768C10B152C8A65D32E4DBE68764E6B2ABDE6824088B6BE258D7E3AEA155CB919E1C500CDCEE435515CF09575F75551C16FBA0F3AEDE0AABA544E89A58E4C34E255EAAFD8F65340DAA55E3ED8AB903FE188416340ACE15D36F9CEDE379CC3586E6D320F72AA310A1B0A781D06B7418A50525105FA749306AC59A788D6866B7DDD0F4C059BA6CEE43FAD5AD2A362B9DE1C57324ADE8B5B46C6B1DDABD82F0670F7A4DA869F204EFB27EA7E049BC7D6CFD2071682C894161922A99108EB3BB8922113BA992402C07A93 | ||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: moduli.c,v 1.1 2003/07/28 09:49:56 djm Exp $ */ | 1 | /* $OpenBSD: moduli.c,v 1.5 2003/12/22 09:16:57 djm Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright 1994 Phil Karn <karn@qualcomm.com> | 3 | * Copyright 1994 Phil Karn <karn@qualcomm.com> |
4 | * Copyright 1996-1998, 2003 William Allen Simpson <wsimpson@greendragon.com> | 4 | * Copyright 1996-1998, 2003 William Allen Simpson <wsimpson@greendragon.com> |
@@ -44,15 +44,6 @@ | |||
44 | 44 | ||
45 | #include <openssl/bn.h> | 45 | #include <openssl/bn.h> |
46 | 46 | ||
47 | |||
48 | /* | ||
49 | * Debugging defines | ||
50 | */ | ||
51 | |||
52 | /* define DEBUG_LARGE 1 */ | ||
53 | /* define DEBUG_SMALL 1 */ | ||
54 | /* define DEBUG_TEST 1 */ | ||
55 | |||
56 | /* | 47 | /* |
57 | * File output defines | 48 | * File output defines |
58 | */ | 49 | */ |
@@ -81,9 +72,10 @@ | |||
81 | #define QTEST_JACOBI (0x08) | 72 | #define QTEST_JACOBI (0x08) |
82 | #define QTEST_ELLIPTIC (0x10) | 73 | #define QTEST_ELLIPTIC (0x10) |
83 | 74 | ||
84 | /* Size: decimal. | 75 | /* |
76 | * Size: decimal. | ||
85 | * Specifies the number of the most significant bit (0 to M). | 77 | * Specifies the number of the most significant bit (0 to M). |
86 | ** WARNING: internally, usually 1 to N. | 78 | * WARNING: internally, usually 1 to N. |
87 | */ | 79 | */ |
88 | #define QSIZE_MINIMUM (511) | 80 | #define QSIZE_MINIMUM (511) |
89 | 81 | ||
@@ -151,7 +143,7 @@ qfileout(FILE * ofile, u_int32_t otype, u_int32_t otests, u_int32_t otries, | |||
151 | 143 | ||
152 | time(&time_now); | 144 | time(&time_now); |
153 | gtm = gmtime(&time_now); | 145 | gtm = gmtime(&time_now); |
154 | 146 | ||
155 | res = fprintf(ofile, "%04d%02d%02d%02d%02d%02d %u %u %u %u %x ", | 147 | res = fprintf(ofile, "%04d%02d%02d%02d%02d%02d %u %u %u %u %x ", |
156 | gtm->tm_year + 1900, gtm->tm_mon + 1, gtm->tm_mday, | 148 | gtm->tm_year + 1900, gtm->tm_mon + 1, gtm->tm_mday, |
157 | gtm->tm_hour, gtm->tm_min, gtm->tm_sec, | 149 | gtm->tm_hour, gtm->tm_min, gtm->tm_sec, |
@@ -178,7 +170,7 @@ sieve_large(u_int32_t s) | |||
178 | { | 170 | { |
179 | u_int32_t r, u; | 171 | u_int32_t r, u; |
180 | 172 | ||
181 | debug2("sieve_large %u", s); | 173 | debug3("sieve_large %u", s); |
182 | largetries++; | 174 | largetries++; |
183 | /* r = largebase mod s */ | 175 | /* r = largebase mod s */ |
184 | r = BN_mod_word(largebase, s); | 176 | r = BN_mod_word(largebase, s); |
@@ -244,9 +236,9 @@ gen_candidates(FILE *out, int memory, int power, BIGNUM *start) | |||
244 | largememory = memory; | 236 | largememory = memory; |
245 | 237 | ||
246 | /* | 238 | /* |
247 | * Set power to the length in bits of the prime to be generated. | 239 | * Set power to the length in bits of the prime to be generated. |
248 | * This is changed to 1 less than the desired safe prime moduli p. | 240 | * This is changed to 1 less than the desired safe prime moduli p. |
249 | */ | 241 | */ |
250 | if (power > TEST_MAXIMUM) { | 242 | if (power > TEST_MAXIMUM) { |
251 | error("Too many bits: %u > %lu", power, TEST_MAXIMUM); | 243 | error("Too many bits: %u > %lu", power, TEST_MAXIMUM); |
252 | return (-1); | 244 | return (-1); |
@@ -257,16 +249,16 @@ gen_candidates(FILE *out, int memory, int power, BIGNUM *start) | |||
257 | power--; /* decrement before squaring */ | 249 | power--; /* decrement before squaring */ |
258 | 250 | ||
259 | /* | 251 | /* |
260 | * The density of ordinary primes is on the order of 1/bits, so the | 252 | * The density of ordinary primes is on the order of 1/bits, so the |
261 | * density of safe primes should be about (1/bits)**2. Set test range | 253 | * density of safe primes should be about (1/bits)**2. Set test range |
262 | * to something well above bits**2 to be reasonably sure (but not | 254 | * to something well above bits**2 to be reasonably sure (but not |
263 | * guaranteed) of catching at least one safe prime. | 255 | * guaranteed) of catching at least one safe prime. |
264 | */ | 256 | */ |
265 | largewords = ((power * power) >> (SHIFT_WORD - TEST_POWER)); | 257 | largewords = ((power * power) >> (SHIFT_WORD - TEST_POWER)); |
266 | 258 | ||
267 | /* | 259 | /* |
268 | * Need idea of how much memory is available. We don't have to use all | 260 | * Need idea of how much memory is available. We don't have to use all |
269 | * of it. | 261 | * of it. |
270 | */ | 262 | */ |
271 | if (largememory > LARGE_MAXIMUM) { | 263 | if (largememory > LARGE_MAXIMUM) { |
272 | logit("Limited memory: %u MB; limit %lu MB", | 264 | logit("Limited memory: %u MB; limit %lu MB", |
@@ -315,8 +307,8 @@ gen_candidates(FILE *out, int memory, int power, BIGNUM *start) | |||
315 | q = BN_new(); | 307 | q = BN_new(); |
316 | 308 | ||
317 | /* | 309 | /* |
318 | * Generate random starting point for subprime search, or use | 310 | * Generate random starting point for subprime search, or use |
319 | * specified parameter. | 311 | * specified parameter. |
320 | */ | 312 | */ |
321 | largebase = BN_new(); | 313 | largebase = BN_new(); |
322 | if (start == NULL) | 314 | if (start == NULL) |
@@ -329,13 +321,13 @@ gen_candidates(FILE *out, int memory, int power, BIGNUM *start) | |||
329 | 321 | ||
330 | time(&time_start); | 322 | time(&time_start); |
331 | 323 | ||
332 | logit("%.24s Sieve next %u plus %u-bit", ctime(&time_start), | 324 | logit("%.24s Sieve next %u plus %u-bit", ctime(&time_start), |
333 | largenumbers, power); | 325 | largenumbers, power); |
334 | debug2("start point: 0x%s", BN_bn2hex(largebase)); | 326 | debug2("start point: 0x%s", BN_bn2hex(largebase)); |
335 | 327 | ||
336 | /* | 328 | /* |
337 | * TinySieve | 329 | * TinySieve |
338 | */ | 330 | */ |
339 | for (i = 0; i < tinybits; i++) { | 331 | for (i = 0; i < tinybits; i++) { |
340 | if (BIT_TEST(TinySieve, i)) | 332 | if (BIT_TEST(TinySieve, i)) |
341 | continue; /* 2*i+3 is composite */ | 333 | continue; /* 2*i+3 is composite */ |
@@ -351,9 +343,9 @@ gen_candidates(FILE *out, int memory, int power, BIGNUM *start) | |||
351 | } | 343 | } |
352 | 344 | ||
353 | /* | 345 | /* |
354 | * Start the small block search at the next possible prime. To avoid | 346 | * Start the small block search at the next possible prime. To avoid |
355 | * fencepost errors, the last pass is skipped. | 347 | * fencepost errors, the last pass is skipped. |
356 | */ | 348 | */ |
357 | for (smallbase = TINY_NUMBER + 3; | 349 | for (smallbase = TINY_NUMBER + 3; |
358 | smallbase < (SMALL_MAXIMUM - TINY_NUMBER); | 350 | smallbase < (SMALL_MAXIMUM - TINY_NUMBER); |
359 | smallbase += TINY_NUMBER) { | 351 | smallbase += TINY_NUMBER) { |
@@ -386,8 +378,8 @@ gen_candidates(FILE *out, int memory, int power, BIGNUM *start) | |||
386 | } | 378 | } |
387 | 379 | ||
388 | /* | 380 | /* |
389 | * SmallSieve | 381 | * SmallSieve |
390 | */ | 382 | */ |
391 | for (i = 0; i < smallbits; i++) { | 383 | for (i = 0; i < smallbits; i++) { |
392 | if (BIT_TEST(SmallSieve, i)) | 384 | if (BIT_TEST(SmallSieve, i)) |
393 | continue; /* 2*i+smallbase is composite */ | 385 | continue; /* 2*i+smallbase is composite */ |
@@ -438,7 +430,7 @@ gen_candidates(FILE *out, int memory, int power, BIGNUM *start) | |||
438 | * The result is a list of so-call "safe" primes | 430 | * The result is a list of so-call "safe" primes |
439 | */ | 431 | */ |
440 | int | 432 | int |
441 | prime_test(FILE *in, FILE *out, u_int32_t trials, | 433 | prime_test(FILE *in, FILE *out, u_int32_t trials, |
442 | u_int32_t generator_wanted) | 434 | u_int32_t generator_wanted) |
443 | { | 435 | { |
444 | BIGNUM *q, *p, *a; | 436 | BIGNUM *q, *p, *a; |
@@ -483,6 +475,7 @@ prime_test(FILE *in, FILE *out, u_int32_t trials, | |||
483 | debug2("%10u: known composite", count_in); | 475 | debug2("%10u: known composite", count_in); |
484 | continue; | 476 | continue; |
485 | } | 477 | } |
478 | |||
486 | /* tries */ | 479 | /* tries */ |
487 | in_tries = strtoul(cp, &cp, 10); | 480 | in_tries = strtoul(cp, &cp, 10); |
488 | 481 | ||
@@ -507,13 +500,20 @@ prime_test(FILE *in, FILE *out, u_int32_t trials, | |||
507 | in_size += 1; | 500 | in_size += 1; |
508 | generator_known = 0; | 501 | generator_known = 0; |
509 | break; | 502 | break; |
510 | default: | 503 | case QTYPE_UNSTRUCTURED: |
504 | case QTYPE_SAFE: | ||
505 | case QTYPE_SCHNOOR: | ||
506 | case QTYPE_STRONG: | ||
507 | case QTYPE_UNKNOWN: | ||
511 | debug2("%10u: (%u)", count_in, in_type); | 508 | debug2("%10u: (%u)", count_in, in_type); |
512 | a = p; | 509 | a = p; |
513 | BN_hex2bn(&a, cp); | 510 | BN_hex2bn(&a, cp); |
514 | /* q = (p-1) / 2 */ | 511 | /* q = (p-1) / 2 */ |
515 | BN_rshift(q, p, 1); | 512 | BN_rshift(q, p, 1); |
516 | break; | 513 | break; |
514 | default: | ||
515 | debug2("Unknown prime type"); | ||
516 | break; | ||
517 | } | 517 | } |
518 | 518 | ||
519 | /* | 519 | /* |
@@ -533,6 +533,7 @@ prime_test(FILE *in, FILE *out, u_int32_t trials, | |||
533 | in_tries += trials; | 533 | in_tries += trials; |
534 | else | 534 | else |
535 | in_tries = trials; | 535 | in_tries = trials; |
536 | |||
536 | /* | 537 | /* |
537 | * guess unknown generator | 538 | * guess unknown generator |
538 | */ | 539 | */ |
@@ -544,9 +545,8 @@ prime_test(FILE *in, FILE *out, u_int32_t trials, | |||
544 | else { | 545 | else { |
545 | u_int32_t r = BN_mod_word(p, 10); | 546 | u_int32_t r = BN_mod_word(p, 10); |
546 | 547 | ||
547 | if (r == 3 || r == 7) { | 548 | if (r == 3 || r == 7) |
548 | generator_known = 5; | 549 | generator_known = 5; |
549 | } | ||
550 | } | 550 | } |
551 | } | 551 | } |
552 | /* | 552 | /* |
@@ -559,30 +559,39 @@ prime_test(FILE *in, FILE *out, u_int32_t trials, | |||
559 | continue; | 559 | continue; |
560 | } | 560 | } |
561 | 561 | ||
562 | /* | ||
563 | * Primes with no known generator are useless for DH, so | ||
564 | * skip those. | ||
565 | */ | ||
566 | if (generator_known == 0) { | ||
567 | debug2("%10u: no known generator", count_in); | ||
568 | continue; | ||
569 | } | ||
570 | |||
562 | count_possible++; | 571 | count_possible++; |
563 | 572 | ||
564 | /* | 573 | /* |
565 | * The (1/4)^N performance bound on Miller-Rabin is | 574 | * The (1/4)^N performance bound on Miller-Rabin is |
566 | * extremely pessimistic, so don't spend a lot of time | 575 | * extremely pessimistic, so don't spend a lot of time |
567 | * really verifying that q is prime until after we know | 576 | * really verifying that q is prime until after we know |
568 | * that p is also prime. A single pass will weed out the | 577 | * that p is also prime. A single pass will weed out the |
569 | * vast majority of composite q's. | 578 | * vast majority of composite q's. |
570 | */ | 579 | */ |
571 | if (BN_is_prime(q, 1, NULL, ctx, NULL) <= 0) { | 580 | if (BN_is_prime(q, 1, NULL, ctx, NULL) <= 0) { |
572 | debug2("%10u: q failed first possible prime test", | 581 | debug("%10u: q failed first possible prime test", |
573 | count_in); | 582 | count_in); |
574 | continue; | 583 | continue; |
575 | } | 584 | } |
576 | 585 | ||
577 | /* | 586 | /* |
578 | * q is possibly prime, so go ahead and really make sure | 587 | * q is possibly prime, so go ahead and really make sure |
579 | * that p is prime. If it is, then we can go back and do | 588 | * that p is prime. If it is, then we can go back and do |
580 | * the same for q. If p is composite, chances are that | 589 | * the same for q. If p is composite, chances are that |
581 | * will show up on the first Rabin-Miller iteration so it | 590 | * will show up on the first Rabin-Miller iteration so it |
582 | * doesn't hurt to specify a high iteration count. | 591 | * doesn't hurt to specify a high iteration count. |
583 | */ | 592 | */ |
584 | if (!BN_is_prime(p, trials, NULL, ctx, NULL)) { | 593 | if (!BN_is_prime(p, trials, NULL, ctx, NULL)) { |
585 | debug2("%10u: p is not prime", count_in); | 594 | debug("%10u: p is not prime", count_in); |
586 | continue; | 595 | continue; |
587 | } | 596 | } |
588 | debug("%10u: p is almost certainly prime", count_in); | 597 | debug("%10u: p is almost certainly prime", count_in); |
@@ -594,7 +603,7 @@ prime_test(FILE *in, FILE *out, u_int32_t trials, | |||
594 | } | 603 | } |
595 | debug("%10u: q is almost certainly prime", count_in); | 604 | debug("%10u: q is almost certainly prime", count_in); |
596 | 605 | ||
597 | if (qfileout(out, QTYPE_SAFE, (in_tests | QTEST_MILLER_RABIN), | 606 | if (qfileout(out, QTYPE_SAFE, (in_tests | QTEST_MILLER_RABIN), |
598 | in_tries, in_size, generator_known, p)) { | 607 | in_tries, in_size, generator_known, p)) { |
599 | res = -1; | 608 | res = -1; |
600 | break; | 609 | break; |
@@ -610,7 +619,7 @@ prime_test(FILE *in, FILE *out, u_int32_t trials, | |||
610 | BN_CTX_free(ctx); | 619 | BN_CTX_free(ctx); |
611 | 620 | ||
612 | logit("%.24s Found %u safe primes of %u candidates in %ld seconds", | 621 | logit("%.24s Found %u safe primes of %u candidates in %ld seconds", |
613 | ctime(&time_stop), count_out, count_possible, | 622 | ctime(&time_stop), count_out, count_possible, |
614 | (long) (time_stop - time_start)); | 623 | (long) (time_stop - time_start)); |
615 | 624 | ||
616 | return (res); | 625 | return (res); |
@@ -25,7 +25,7 @@ | |||
25 | */ | 25 | */ |
26 | 26 | ||
27 | #include "includes.h" | 27 | #include "includes.h" |
28 | RCSID("$OpenBSD: monitor.c,v 1.49 2003/08/28 12:54:34 markus Exp $"); | 28 | RCSID("$OpenBSD: monitor.c,v 1.55 2004/02/05 05:37:17 dtucker Exp $"); |
29 | 29 | ||
30 | #include <openssl/dh.h> | 30 | #include <openssl/dh.h> |
31 | 31 | ||
@@ -134,6 +134,7 @@ int mm_answer_pam_free_ctx(int, Buffer *); | |||
134 | int mm_answer_gss_setup_ctx(int, Buffer *); | 134 | int mm_answer_gss_setup_ctx(int, Buffer *); |
135 | int mm_answer_gss_accept_ctx(int, Buffer *); | 135 | int mm_answer_gss_accept_ctx(int, Buffer *); |
136 | int mm_answer_gss_userok(int, Buffer *); | 136 | int mm_answer_gss_userok(int, Buffer *); |
137 | int mm_answer_gss_checkmic(int, Buffer *); | ||
137 | #endif | 138 | #endif |
138 | 139 | ||
139 | static Authctxt *authctxt; | 140 | static Authctxt *authctxt; |
@@ -193,6 +194,7 @@ struct mon_table mon_dispatch_proto20[] = { | |||
193 | {MONITOR_REQ_GSSSETUP, MON_ISAUTH, mm_answer_gss_setup_ctx}, | 194 | {MONITOR_REQ_GSSSETUP, MON_ISAUTH, mm_answer_gss_setup_ctx}, |
194 | {MONITOR_REQ_GSSSTEP, MON_ISAUTH, mm_answer_gss_accept_ctx}, | 195 | {MONITOR_REQ_GSSSTEP, MON_ISAUTH, mm_answer_gss_accept_ctx}, |
195 | {MONITOR_REQ_GSSUSEROK, MON_AUTH, mm_answer_gss_userok}, | 196 | {MONITOR_REQ_GSSUSEROK, MON_AUTH, mm_answer_gss_userok}, |
197 | {MONITOR_REQ_GSSCHECKMIC, MON_ISAUTH, mm_answer_gss_checkmic}, | ||
196 | #endif | 198 | #endif |
197 | {0, 0, NULL} | 199 | {0, 0, NULL} |
198 | }; | 200 | }; |
@@ -272,14 +274,17 @@ monitor_permit_authentications(int permit) | |||
272 | } | 274 | } |
273 | } | 275 | } |
274 | 276 | ||
275 | Authctxt * | 277 | void |
276 | monitor_child_preauth(struct monitor *pmonitor) | 278 | monitor_child_preauth(Authctxt *_authctxt, struct monitor *pmonitor) |
277 | { | 279 | { |
278 | struct mon_table *ent; | 280 | struct mon_table *ent; |
279 | int authenticated = 0; | 281 | int authenticated = 0; |
280 | 282 | ||
281 | debug3("preauth child monitor started"); | 283 | debug3("preauth child monitor started"); |
282 | 284 | ||
285 | authctxt = _authctxt; | ||
286 | memset(authctxt, 0, sizeof(*authctxt)); | ||
287 | |||
283 | if (compat20) { | 288 | if (compat20) { |
284 | mon_dispatch = mon_dispatch_proto20; | 289 | mon_dispatch = mon_dispatch_proto20; |
285 | 290 | ||
@@ -292,8 +297,6 @@ monitor_child_preauth(struct monitor *pmonitor) | |||
292 | monitor_permit(mon_dispatch, MONITOR_REQ_SESSKEY, 1); | 297 | monitor_permit(mon_dispatch, MONITOR_REQ_SESSKEY, 1); |
293 | } | 298 | } |
294 | 299 | ||
295 | authctxt = authctxt_new(); | ||
296 | |||
297 | /* The first few requests do not require asynchronous access */ | 300 | /* The first few requests do not require asynchronous access */ |
298 | while (!authenticated) { | 301 | while (!authenticated) { |
299 | authenticated = monitor_read(pmonitor, mon_dispatch, &ent); | 302 | authenticated = monitor_read(pmonitor, mon_dispatch, &ent); |
@@ -306,11 +309,11 @@ monitor_child_preauth(struct monitor *pmonitor) | |||
306 | authenticated = 0; | 309 | authenticated = 0; |
307 | #ifdef USE_PAM | 310 | #ifdef USE_PAM |
308 | /* PAM needs to perform account checks after auth */ | 311 | /* PAM needs to perform account checks after auth */ |
309 | if (options.use_pam) { | 312 | if (options.use_pam && authenticated) { |
310 | Buffer m; | 313 | Buffer m; |
311 | 314 | ||
312 | buffer_init(&m); | 315 | buffer_init(&m); |
313 | mm_request_receive_expect(pmonitor->m_sendfd, | 316 | mm_request_receive_expect(pmonitor->m_sendfd, |
314 | MONITOR_REQ_PAM_ACCOUNT, &m); | 317 | MONITOR_REQ_PAM_ACCOUNT, &m); |
315 | authenticated = mm_answer_pam_account(pmonitor->m_sendfd, &m); | 318 | authenticated = mm_answer_pam_account(pmonitor->m_sendfd, &m); |
316 | buffer_free(&m); | 319 | buffer_free(&m); |
@@ -333,8 +336,6 @@ monitor_child_preauth(struct monitor *pmonitor) | |||
333 | __func__, authctxt->user); | 336 | __func__, authctxt->user); |
334 | 337 | ||
335 | mm_get_keystate(pmonitor); | 338 | mm_get_keystate(pmonitor); |
336 | |||
337 | return (authctxt); | ||
338 | } | 339 | } |
339 | 340 | ||
340 | static void | 341 | static void |
@@ -566,6 +567,7 @@ mm_answer_pwnamallow(int socket, Buffer *m) | |||
566 | 567 | ||
567 | if (pwent == NULL) { | 568 | if (pwent == NULL) { |
568 | buffer_put_char(m, 0); | 569 | buffer_put_char(m, 0); |
570 | authctxt->pw = fakepw(); | ||
569 | goto out; | 571 | goto out; |
570 | } | 572 | } |
571 | 573 | ||
@@ -781,7 +783,7 @@ int | |||
781 | mm_answer_pam_start(int socket, Buffer *m) | 783 | mm_answer_pam_start(int socket, Buffer *m) |
782 | { | 784 | { |
783 | char *user; | 785 | char *user; |
784 | 786 | ||
785 | if (!options.use_pam) | 787 | if (!options.use_pam) |
786 | fatal("UsePAM not set, but ended up in %s anyway", __func__); | 788 | fatal("UsePAM not set, but ended up in %s anyway", __func__); |
787 | 789 | ||
@@ -800,7 +802,7 @@ int | |||
800 | mm_answer_pam_account(int socket, Buffer *m) | 802 | mm_answer_pam_account(int socket, Buffer *m) |
801 | { | 803 | { |
802 | u_int ret; | 804 | u_int ret; |
803 | 805 | ||
804 | if (!options.use_pam) | 806 | if (!options.use_pam) |
805 | fatal("UsePAM not set, but ended up in %s anyway", __func__); | 807 | fatal("UsePAM not set, but ended up in %s anyway", __func__); |
806 | 808 | ||
@@ -947,7 +949,7 @@ mm_answer_keyallowed(int socket, Buffer *m) | |||
947 | 949 | ||
948 | debug3("%s: key_from_blob: %p", __func__, key); | 950 | debug3("%s: key_from_blob: %p", __func__, key); |
949 | 951 | ||
950 | if (key != NULL && authctxt->pw != NULL) { | 952 | if (key != NULL && authctxt->valid) { |
951 | switch(type) { | 953 | switch(type) { |
952 | case MM_USERKEY: | 954 | case MM_USERKEY: |
953 | allowed = options.pubkey_authentication && | 955 | allowed = options.pubkey_authentication && |
@@ -1185,7 +1187,7 @@ mm_record_login(Session *s, struct passwd *pw) | |||
1185 | if (getpeername(packet_get_connection_in(), | 1187 | if (getpeername(packet_get_connection_in(), |
1186 | (struct sockaddr *) & from, &fromlen) < 0) { | 1188 | (struct sockaddr *) & from, &fromlen) < 0) { |
1187 | debug("getpeername: %.100s", strerror(errno)); | 1189 | debug("getpeername: %.100s", strerror(errno)); |
1188 | fatal_cleanup(); | 1190 | cleanup_exit(255); |
1189 | } | 1191 | } |
1190 | } | 1192 | } |
1191 | /* Record that there was a login on that tty from the remote host. */ | 1193 | /* Record that there was a login on that tty from the remote host. */ |
@@ -1200,7 +1202,6 @@ mm_session_close(Session *s) | |||
1200 | debug3("%s: session %d pid %ld", __func__, s->self, (long)s->pid); | 1202 | debug3("%s: session %d pid %ld", __func__, s->self, (long)s->pid); |
1201 | if (s->ttyfd != -1) { | 1203 | if (s->ttyfd != -1) { |
1202 | debug3("%s: tty %s ptyfd %d", __func__, s->tty, s->ptyfd); | 1204 | debug3("%s: tty %s ptyfd %d", __func__, s->tty, s->ptyfd); |
1203 | fatal_remove_cleanup(session_pty_cleanup2, (void *)s); | ||
1204 | session_pty_cleanup2(s); | 1205 | session_pty_cleanup2(s); |
1205 | } | 1206 | } |
1206 | s->used = 0; | 1207 | s->used = 0; |
@@ -1225,7 +1226,6 @@ mm_answer_pty(int socket, Buffer *m) | |||
1225 | res = pty_allocate(&s->ptyfd, &s->ttyfd, s->tty, sizeof(s->tty)); | 1226 | res = pty_allocate(&s->ptyfd, &s->ttyfd, s->tty, sizeof(s->tty)); |
1226 | if (res == 0) | 1227 | if (res == 0) |
1227 | goto error; | 1228 | goto error; |
1228 | fatal_add_cleanup(session_pty_cleanup2, (void *)s); | ||
1229 | pty_setowner(authctxt->pw, s->tty); | 1229 | pty_setowner(authctxt->pw, s->tty); |
1230 | 1230 | ||
1231 | buffer_put_int(m, 1); | 1231 | buffer_put_int(m, 1); |
@@ -1708,6 +1708,7 @@ monitor_init(void) | |||
1708 | 1708 | ||
1709 | mon = xmalloc(sizeof(*mon)); | 1709 | mon = xmalloc(sizeof(*mon)); |
1710 | 1710 | ||
1711 | mon->m_pid = 0; | ||
1711 | monitor_socketpair(pair); | 1712 | monitor_socketpair(pair); |
1712 | 1713 | ||
1713 | mon->m_recvfd = pair[0]; | 1714 | mon->m_recvfd = pair[0]; |
@@ -1784,15 +1785,43 @@ mm_answer_gss_accept_ctx(int socket, Buffer *m) | |||
1784 | 1785 | ||
1785 | gss_release_buffer(&minor, &out); | 1786 | gss_release_buffer(&minor, &out); |
1786 | 1787 | ||
1787 | /* Complete - now we can do signing */ | ||
1788 | if (major==GSS_S_COMPLETE) { | 1788 | if (major==GSS_S_COMPLETE) { |
1789 | monitor_permit(mon_dispatch, MONITOR_REQ_GSSSTEP, 0); | 1789 | monitor_permit(mon_dispatch, MONITOR_REQ_GSSSTEP, 0); |
1790 | monitor_permit(mon_dispatch, MONITOR_REQ_GSSUSEROK, 1); | 1790 | monitor_permit(mon_dispatch, MONITOR_REQ_GSSUSEROK, 1); |
1791 | monitor_permit(mon_dispatch, MONITOR_REQ_GSSCHECKMIC, 1); | ||
1791 | } | 1792 | } |
1792 | return (0); | 1793 | return (0); |
1793 | } | 1794 | } |
1794 | 1795 | ||
1795 | int | 1796 | int |
1797 | mm_answer_gss_checkmic(int socket, Buffer *m) | ||
1798 | { | ||
1799 | gss_buffer_desc gssbuf, mic; | ||
1800 | OM_uint32 ret; | ||
1801 | u_int len; | ||
1802 | |||
1803 | gssbuf.value = buffer_get_string(m, &len); | ||
1804 | gssbuf.length = len; | ||
1805 | mic.value = buffer_get_string(m, &len); | ||
1806 | mic.length = len; | ||
1807 | |||
1808 | ret = ssh_gssapi_checkmic(gsscontext, &gssbuf, &mic); | ||
1809 | |||
1810 | xfree(gssbuf.value); | ||
1811 | xfree(mic.value); | ||
1812 | |||
1813 | buffer_clear(m); | ||
1814 | buffer_put_int(m, ret); | ||
1815 | |||
1816 | mm_request_send(socket, MONITOR_ANS_GSSCHECKMIC, m); | ||
1817 | |||
1818 | if (!GSS_ERROR(ret)) | ||
1819 | monitor_permit(mon_dispatch, MONITOR_REQ_GSSUSEROK, 1); | ||
1820 | |||
1821 | return (0); | ||
1822 | } | ||
1823 | |||
1824 | int | ||
1796 | mm_answer_gss_userok(int socket, Buffer *m) | 1825 | mm_answer_gss_userok(int socket, Buffer *m) |
1797 | { | 1826 | { |
1798 | int authenticated; | 1827 | int authenticated; |
@@ -1805,7 +1834,7 @@ mm_answer_gss_userok(int socket, Buffer *m) | |||
1805 | debug3("%s: sending result %d", __func__, authenticated); | 1834 | debug3("%s: sending result %d", __func__, authenticated); |
1806 | mm_request_send(socket, MONITOR_ANS_GSSUSEROK, m); | 1835 | mm_request_send(socket, MONITOR_ANS_GSSUSEROK, m); |
1807 | 1836 | ||
1808 | auth_method="gssapi"; | 1837 | auth_method="gssapi-with-mic"; |
1809 | 1838 | ||
1810 | /* Monitor loop will terminate if authenticated */ | 1839 | /* Monitor loop will terminate if authenticated */ |
1811 | return (authenticated); | 1840 | return (authenticated); |
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: monitor.h,v 1.11 2003/08/28 12:54:34 markus Exp $ */ | 1 | /* $OpenBSD: monitor.h,v 1.13 2003/11/17 11:06:07 markus Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright 2002 Niels Provos <provos@citi.umich.edu> | 4 | * Copyright 2002 Niels Provos <provos@citi.umich.edu> |
@@ -52,6 +52,7 @@ enum monitor_reqtype { | |||
52 | MONITOR_REQ_GSSSETUP, MONITOR_ANS_GSSSETUP, | 52 | MONITOR_REQ_GSSSETUP, MONITOR_ANS_GSSSETUP, |
53 | MONITOR_REQ_GSSSTEP, MONITOR_ANS_GSSSTEP, | 53 | MONITOR_REQ_GSSSTEP, MONITOR_ANS_GSSSTEP, |
54 | MONITOR_REQ_GSSUSEROK, MONITOR_ANS_GSSUSEROK, | 54 | MONITOR_REQ_GSSUSEROK, MONITOR_ANS_GSSUSEROK, |
55 | MONITOR_REQ_GSSCHECKMIC, MONITOR_ANS_GSSCHECKMIC, | ||
55 | MONITOR_REQ_PAM_START, | 56 | MONITOR_REQ_PAM_START, |
56 | MONITOR_REQ_PAM_ACCOUNT, MONITOR_ANS_PAM_ACCOUNT, | 57 | MONITOR_REQ_PAM_ACCOUNT, MONITOR_ANS_PAM_ACCOUNT, |
57 | MONITOR_REQ_PAM_INIT_CTX, MONITOR_ANS_PAM_INIT_CTX, | 58 | MONITOR_REQ_PAM_INIT_CTX, MONITOR_ANS_PAM_INIT_CTX, |
@@ -76,7 +77,7 @@ void monitor_reinit(struct monitor *); | |||
76 | void monitor_sync(struct monitor *); | 77 | void monitor_sync(struct monitor *); |
77 | 78 | ||
78 | struct Authctxt; | 79 | struct Authctxt; |
79 | struct Authctxt *monitor_child_preauth(struct monitor *); | 80 | void monitor_child_preauth(struct Authctxt *, struct monitor *); |
80 | void monitor_child_postauth(struct monitor *); | 81 | void monitor_child_postauth(struct monitor *); |
81 | 82 | ||
82 | struct mon_table; | 83 | struct mon_table; |
diff --git a/monitor_wrap.c b/monitor_wrap.c index 4034d569c..e7c15cecd 100644 --- a/monitor_wrap.c +++ b/monitor_wrap.c | |||
@@ -25,7 +25,7 @@ | |||
25 | */ | 25 | */ |
26 | 26 | ||
27 | #include "includes.h" | 27 | #include "includes.h" |
28 | RCSID("$OpenBSD: monitor_wrap.c,v 1.31 2003/08/28 12:54:34 markus Exp $"); | 28 | RCSID("$OpenBSD: monitor_wrap.c,v 1.35 2003/11/17 11:06:07 markus Exp $"); |
29 | 29 | ||
30 | #include <openssl/bn.h> | 30 | #include <openssl/bn.h> |
31 | #include <openssl/dh.h> | 31 | #include <openssl/dh.h> |
@@ -66,6 +66,16 @@ extern struct monitor *pmonitor; | |||
66 | extern Buffer input, output; | 66 | extern Buffer input, output; |
67 | extern ServerOptions options; | 67 | extern ServerOptions options; |
68 | 68 | ||
69 | int | ||
70 | mm_is_monitor(void) | ||
71 | { | ||
72 | /* | ||
73 | * m_pid is only set in the privileged part, and | ||
74 | * points to the unprivileged child. | ||
75 | */ | ||
76 | return (pmonitor && pmonitor->m_pid > 0); | ||
77 | } | ||
78 | |||
69 | void | 79 | void |
70 | mm_request_send(int socket, enum monitor_reqtype type, Buffer *m) | 80 | mm_request_send(int socket, enum monitor_reqtype type, Buffer *m) |
71 | { | 81 | { |
@@ -94,7 +104,7 @@ mm_request_receive(int socket, Buffer *m) | |||
94 | res = atomicio(read, socket, buf, sizeof(buf)); | 104 | res = atomicio(read, socket, buf, sizeof(buf)); |
95 | if (res != sizeof(buf)) { | 105 | if (res != sizeof(buf)) { |
96 | if (res == 0) | 106 | if (res == 0) |
97 | fatal_cleanup(); | 107 | cleanup_exit(255); |
98 | fatal("%s: read: %ld", __func__, (long)res); | 108 | fatal("%s: read: %ld", __func__, (long)res); |
99 | } | 109 | } |
100 | msg_len = GET_32BIT(buf); | 110 | msg_len = GET_32BIT(buf); |
@@ -214,7 +224,8 @@ mm_getpwnamallow(const char *login) | |||
214 | return (pw); | 224 | return (pw); |
215 | } | 225 | } |
216 | 226 | ||
217 | char *mm_auth2_read_banner(void) | 227 | char * |
228 | mm_auth2_read_banner(void) | ||
218 | { | 229 | { |
219 | Buffer m; | 230 | Buffer m; |
220 | char *banner; | 231 | char *banner; |
@@ -225,10 +236,16 @@ char *mm_auth2_read_banner(void) | |||
225 | mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUTH2_READ_BANNER, &m); | 236 | mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUTH2_READ_BANNER, &m); |
226 | buffer_clear(&m); | 237 | buffer_clear(&m); |
227 | 238 | ||
228 | mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_AUTH2_READ_BANNER, &m); | 239 | mm_request_receive_expect(pmonitor->m_recvfd, |
240 | MONITOR_ANS_AUTH2_READ_BANNER, &m); | ||
229 | banner = buffer_get_string(&m, NULL); | 241 | banner = buffer_get_string(&m, NULL); |
230 | buffer_free(&m); | 242 | buffer_free(&m); |
231 | 243 | ||
244 | /* treat empty banner as missing banner */ | ||
245 | if (strlen(banner) == 0) { | ||
246 | xfree(banner); | ||
247 | banner = NULL; | ||
248 | } | ||
232 | return (banner); | 249 | return (banner); |
233 | } | 250 | } |
234 | 251 | ||
@@ -648,9 +665,8 @@ mm_pty_allocate(int *ptyfd, int *ttyfd, char *namebuf, int namebuflen) | |||
648 | } | 665 | } |
649 | 666 | ||
650 | void | 667 | void |
651 | mm_session_pty_cleanup2(void *session) | 668 | mm_session_pty_cleanup2(Session *s) |
652 | { | 669 | { |
653 | Session *s = session; | ||
654 | Buffer m; | 670 | Buffer m; |
655 | 671 | ||
656 | if (s->ttyfd == -1) | 672 | if (s->ttyfd == -1) |
@@ -699,12 +715,12 @@ mm_do_pam_account(void) | |||
699 | buffer_init(&m); | 715 | buffer_init(&m); |
700 | mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PAM_ACCOUNT, &m); | 716 | mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PAM_ACCOUNT, &m); |
701 | 717 | ||
702 | mm_request_receive_expect(pmonitor->m_recvfd, | 718 | mm_request_receive_expect(pmonitor->m_recvfd, |
703 | MONITOR_ANS_PAM_ACCOUNT, &m); | 719 | MONITOR_ANS_PAM_ACCOUNT, &m); |
704 | ret = buffer_get_int(&m); | 720 | ret = buffer_get_int(&m); |
705 | 721 | ||
706 | buffer_free(&m); | 722 | buffer_free(&m); |
707 | 723 | ||
708 | debug3("%s returning %d", __func__, ret); | 724 | debug3("%s returning %d", __func__, ret); |
709 | 725 | ||
710 | return (ret); | 726 | return (ret); |
@@ -1118,6 +1134,25 @@ mm_ssh_gssapi_accept_ctx(Gssctxt *ctx, gss_buffer_desc *in, | |||
1118 | return (major); | 1134 | return (major); |
1119 | } | 1135 | } |
1120 | 1136 | ||
1137 | OM_uint32 | ||
1138 | mm_ssh_gssapi_checkmic(Gssctxt *ctx, gss_buffer_t gssbuf, gss_buffer_t gssmic) | ||
1139 | { | ||
1140 | Buffer m; | ||
1141 | OM_uint32 major; | ||
1142 | |||
1143 | buffer_init(&m); | ||
1144 | buffer_put_string(&m, gssbuf->value, gssbuf->length); | ||
1145 | buffer_put_string(&m, gssmic->value, gssmic->length); | ||
1146 | |||
1147 | mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_GSSCHECKMIC, &m); | ||
1148 | mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_GSSCHECKMIC, | ||
1149 | &m); | ||
1150 | |||
1151 | major = buffer_get_int(&m); | ||
1152 | buffer_free(&m); | ||
1153 | return(major); | ||
1154 | } | ||
1155 | |||
1121 | int | 1156 | int |
1122 | mm_ssh_gssapi_userok(char *user) | 1157 | mm_ssh_gssapi_userok(char *user) |
1123 | { | 1158 | { |
diff --git a/monitor_wrap.h b/monitor_wrap.h index 5e0334588..55be10b19 100644 --- a/monitor_wrap.h +++ b/monitor_wrap.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: monitor_wrap.h,v 1.11 2003/08/28 12:54:34 markus Exp $ */ | 1 | /* $OpenBSD: monitor_wrap.h,v 1.13 2003/11/17 11:06:07 markus Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright 2002 Niels Provos <provos@citi.umich.edu> | 4 | * Copyright 2002 Niels Provos <provos@citi.umich.edu> |
@@ -40,6 +40,7 @@ struct mm_master; | |||
40 | struct passwd; | 40 | struct passwd; |
41 | struct Authctxt; | 41 | struct Authctxt; |
42 | 42 | ||
43 | int mm_is_monitor(void); | ||
43 | DH *mm_choose_dh(int, int, int); | 44 | DH *mm_choose_dh(int, int, int); |
44 | int mm_key_sign(Key *, u_char **, u_int *, u_char *, u_int); | 45 | int mm_key_sign(Key *, u_char **, u_int *, u_char *, u_int); |
45 | void mm_inform_authserv(char *, char *); | 46 | void mm_inform_authserv(char *, char *); |
@@ -61,6 +62,7 @@ OM_uint32 mm_ssh_gssapi_server_ctx(Gssctxt **ctxt, gss_OID oid); | |||
61 | OM_uint32 mm_ssh_gssapi_accept_ctx(Gssctxt *ctxt, | 62 | OM_uint32 mm_ssh_gssapi_accept_ctx(Gssctxt *ctxt, |
62 | gss_buffer_desc *recv, gss_buffer_desc *send, OM_uint32 *flags); | 63 | gss_buffer_desc *recv, gss_buffer_desc *send, OM_uint32 *flags); |
63 | int mm_ssh_gssapi_userok(char *user); | 64 | int mm_ssh_gssapi_userok(char *user); |
65 | OM_uint32 mm_ssh_gssapi_checkmic(Gssctxt *, gss_buffer_t, gss_buffer_t); | ||
64 | #endif | 66 | #endif |
65 | 67 | ||
66 | #ifdef USE_PAM | 68 | #ifdef USE_PAM |
@@ -72,9 +74,10 @@ int mm_sshpam_respond(void *, u_int, char **); | |||
72 | void mm_sshpam_free_ctx(void *); | 74 | void mm_sshpam_free_ctx(void *); |
73 | #endif | 75 | #endif |
74 | 76 | ||
77 | struct Session; | ||
75 | void mm_terminate(void); | 78 | void mm_terminate(void); |
76 | int mm_pty_allocate(int *, int *, char *, int); | 79 | int mm_pty_allocate(int *, int *, char *, int); |
77 | void mm_session_pty_cleanup2(void *); | 80 | void mm_session_pty_cleanup2(struct Session *); |
78 | 81 | ||
79 | /* SSHv1 interfaces */ | 82 | /* SSHv1 interfaces */ |
80 | void mm_ssh1_session_id(u_char *); | 83 | void mm_ssh1_session_id(u_char *); |
@@ -22,7 +22,7 @@ | |||
22 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 22 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
23 | */ | 23 | */ |
24 | #include "includes.h" | 24 | #include "includes.h" |
25 | RCSID("$OpenBSD: msg.c,v 1.6 2003/06/28 16:23:06 deraadt Exp $"); | 25 | RCSID("$OpenBSD: msg.c,v 1.7 2003/11/17 09:45:39 djm Exp $"); |
26 | 26 | ||
27 | #include "buffer.h" | 27 | #include "buffer.h" |
28 | #include "getput.h" | 28 | #include "getput.h" |
@@ -30,7 +30,7 @@ RCSID("$OpenBSD: msg.c,v 1.6 2003/06/28 16:23:06 deraadt Exp $"); | |||
30 | #include "atomicio.h" | 30 | #include "atomicio.h" |
31 | #include "msg.h" | 31 | #include "msg.h" |
32 | 32 | ||
33 | void | 33 | int |
34 | ssh_msg_send(int fd, u_char type, Buffer *m) | 34 | ssh_msg_send(int fd, u_char type, Buffer *m) |
35 | { | 35 | { |
36 | u_char buf[5]; | 36 | u_char buf[5]; |
@@ -40,10 +40,15 @@ ssh_msg_send(int fd, u_char type, Buffer *m) | |||
40 | 40 | ||
41 | PUT_32BIT(buf, mlen + 1); | 41 | PUT_32BIT(buf, mlen + 1); |
42 | buf[4] = type; /* 1st byte of payload is mesg-type */ | 42 | buf[4] = type; /* 1st byte of payload is mesg-type */ |
43 | if (atomicio(vwrite, fd, buf, sizeof(buf)) != sizeof(buf)) | 43 | if (atomicio(vwrite, fd, buf, sizeof(buf)) != sizeof(buf)) { |
44 | fatal("ssh_msg_send: write"); | 44 | error("ssh_msg_send: write"); |
45 | if (atomicio(vwrite, fd, buffer_ptr(m), mlen) != mlen) | 45 | return (-1); |
46 | fatal("ssh_msg_send: write"); | 46 | } |
47 | if (atomicio(vwrite, fd, buffer_ptr(m), mlen) != mlen) { | ||
48 | error("ssh_msg_send: write"); | ||
49 | return (-1); | ||
50 | } | ||
51 | return (0); | ||
47 | } | 52 | } |
48 | 53 | ||
49 | int | 54 | int |
@@ -57,17 +62,21 @@ ssh_msg_recv(int fd, Buffer *m) | |||
57 | 62 | ||
58 | res = atomicio(read, fd, buf, sizeof(buf)); | 63 | res = atomicio(read, fd, buf, sizeof(buf)); |
59 | if (res != sizeof(buf)) { | 64 | if (res != sizeof(buf)) { |
60 | if (res == 0) | 65 | if (res != 0) |
61 | return -1; | 66 | error("ssh_msg_recv: read: header %ld", (long)res); |
62 | fatal("ssh_msg_recv: read: header %ld", (long)res); | 67 | return (-1); |
63 | } | 68 | } |
64 | msg_len = GET_32BIT(buf); | 69 | msg_len = GET_32BIT(buf); |
65 | if (msg_len > 256 * 1024) | 70 | if (msg_len > 256 * 1024) { |
66 | fatal("ssh_msg_recv: read: bad msg_len %u", msg_len); | 71 | error("ssh_msg_recv: read: bad msg_len %u", msg_len); |
72 | return (-1); | ||
73 | } | ||
67 | buffer_clear(m); | 74 | buffer_clear(m); |
68 | buffer_append_space(m, msg_len); | 75 | buffer_append_space(m, msg_len); |
69 | res = atomicio(read, fd, buffer_ptr(m), msg_len); | 76 | res = atomicio(read, fd, buffer_ptr(m), msg_len); |
70 | if (res != msg_len) | 77 | if (res != msg_len) { |
71 | fatal("ssh_msg_recv: read: %ld != msg_len", (long)res); | 78 | error("ssh_msg_recv: read: %ld != msg_len", (long)res); |
72 | return 0; | 79 | return (-1); |
80 | } | ||
81 | return (0); | ||
73 | } | 82 | } |
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: msg.h,v 1.2 2002/12/19 00:07:02 djm Exp $ */ | 1 | /* $OpenBSD: msg.h,v 1.3 2003/11/17 09:45:39 djm Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2002 Markus Friedl. All rights reserved. | 3 | * Copyright (c) 2002 Markus Friedl. All rights reserved. |
4 | * | 4 | * |
@@ -25,7 +25,7 @@ | |||
25 | #ifndef SSH_MSG_H | 25 | #ifndef SSH_MSG_H |
26 | #define SSH_MSG_H | 26 | #define SSH_MSG_H |
27 | 27 | ||
28 | void ssh_msg_send(int, u_char, Buffer *); | 28 | int ssh_msg_send(int, u_char, Buffer *); |
29 | int ssh_msg_recv(int, Buffer *); | 29 | int ssh_msg_recv(int, Buffer *); |
30 | 30 | ||
31 | #endif | 31 | #endif |
@@ -1,8 +1,8 @@ | |||
1 | .\" $OpenBSD: nchan.ms,v 1.7 2001/01/29 01:58:17 niklas Exp $ | 1 | .\" $OpenBSD: nchan.ms,v 1.8 2003/11/21 11:57:03 djm Exp $ |
2 | .\" | ||
2 | .\" | 3 | .\" |
3 | .\" | ||
4 | .\" Copyright (c) 1999 Markus Friedl. All rights reserved. | 4 | .\" Copyright (c) 1999 Markus Friedl. All rights reserved. |
5 | .\" | 5 | .\" |
6 | .\" Redistribution and use in source and binary forms, with or without | 6 | .\" Redistribution and use in source and binary forms, with or without |
7 | .\" modification, are permitted provided that the following conditions | 7 | .\" modification, are permitted provided that the following conditions |
8 | .\" are met: | 8 | .\" are met: |
@@ -11,7 +11,7 @@ | |||
11 | .\" 2. Redistributions in binary form must reproduce the above copyright | 11 | .\" 2. Redistributions in binary form must reproduce the above copyright |
12 | .\" notice, this list of conditions and the following disclaimer in the | 12 | .\" notice, this list of conditions and the following disclaimer in the |
13 | .\" documentation and/or other materials provided with the distribution. | 13 | .\" documentation and/or other materials provided with the distribution. |
14 | .\" | 14 | .\" |
15 | .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | 15 | .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
16 | .\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | 16 | .\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
17 | .\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | 17 | .\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
@@ -1,7 +1,7 @@ | |||
1 | .\" $OpenBSD: nchan2.ms,v 1.2 2001/10/03 10:05:57 markus Exp $ | 1 | .\" $OpenBSD: nchan2.ms,v 1.3 2003/11/21 11:57:03 djm Exp $ |
2 | .\" | 2 | .\" |
3 | .\" Copyright (c) 2000 Markus Friedl. All rights reserved. | 3 | .\" Copyright (c) 2000 Markus Friedl. All rights reserved. |
4 | .\" | 4 | .\" |
5 | .\" Redistribution and use in source and binary forms, with or without | 5 | .\" Redistribution and use in source and binary forms, with or without |
6 | .\" modification, are permitted provided that the following conditions | 6 | .\" modification, are permitted provided that the following conditions |
7 | .\" are met: | 7 | .\" are met: |
@@ -10,7 +10,7 @@ | |||
10 | .\" 2. Redistributions in binary form must reproduce the above copyright | 10 | .\" 2. Redistributions in binary form must reproduce the above copyright |
11 | .\" notice, this list of conditions and the following disclaimer in the | 11 | .\" notice, this list of conditions and the following disclaimer in the |
12 | .\" documentation and/or other materials provided with the distribution. | 12 | .\" documentation and/or other materials provided with the distribution. |
13 | .\" | 13 | .\" |
14 | .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | 14 | .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
15 | .\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | 15 | .\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
16 | .\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | 16 | .\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
diff --git a/openbsd-compat/Makefile.in b/openbsd-compat/Makefile.in index c48593f7b..5de20abbc 100644 --- a/openbsd-compat/Makefile.in +++ b/openbsd-compat/Makefile.in | |||
@@ -1,4 +1,4 @@ | |||
1 | # $Id: Makefile.in,v 1.28 2003/07/24 06:52:14 mouring Exp $ | 1 | # $Id: Makefile.in,v 1.30 2004/01/21 06:07:23 djm Exp $ |
2 | 2 | ||
3 | sysconfdir=@sysconfdir@ | 3 | sysconfdir=@sysconfdir@ |
4 | piddir=@piddir@ | 4 | piddir=@piddir@ |
@@ -16,9 +16,9 @@ RANLIB=@RANLIB@ | |||
16 | INSTALL=@INSTALL@ | 16 | INSTALL=@INSTALL@ |
17 | LDFLAGS=-L. @LDFLAGS@ | 17 | LDFLAGS=-L. @LDFLAGS@ |
18 | 18 | ||
19 | OPENBSD=base64.o basename.o bindresvport.o daemon.o dirname.o getcwd.o getgrouplist.o getopt.o getrrsetbyname.o glob.o inet_aton.o inet_ntoa.o inet_ntop.o mktemp.o readpassphrase.o realpath.o rresvport.o setenv.o setproctitle.o sigact.o strlcat.o strlcpy.o strmode.o strsep.o vis.o | 19 | OPENBSD=base64.o basename.o bindresvport.o daemon.o dirname.o getcwd.o getgrouplist.o getopt.o getrrsetbyname.o glob.o inet_aton.o inet_ntoa.o inet_ntop.o mktemp.o readpassphrase.o realpath.o rresvport.o setenv.o setproctitle.o sigact.o strlcat.o strlcpy.o strmode.o strsep.o strtoul.o vis.o |
20 | 20 | ||
21 | COMPAT=bsd-arc4random.o bsd-cray.o bsd-cygwin_util.o bsd-getpeereid.o bsd-misc.o bsd-nextstep.o bsd-snprintf.o bsd-waitpid.o fake-rfc2553.o xmmap.o xcrypt.o | 21 | COMPAT=bsd-arc4random.o bsd-cray.o bsd-cygwin_util.o bsd-getpeereid.o bsd-misc.o bsd-nextstep.o bsd-openpty.o bsd-snprintf.o bsd-waitpid.o fake-rfc2553.o xmmap.o xcrypt.o |
22 | 22 | ||
23 | PORTS=port-irix.o port-aix.o | 23 | PORTS=port-irix.o port-aix.o |
24 | 24 | ||
diff --git a/openbsd-compat/base64.c b/openbsd-compat/base64.c index 91a5ab0ed..dcaa03e5d 100644 --- a/openbsd-compat/base64.c +++ b/openbsd-compat/base64.c | |||
@@ -1,3 +1,5 @@ | |||
1 | /* OPENBSD ORIGINAL: lib/libc/net/base64.c */ | ||
2 | |||
1 | /* $OpenBSD: base64.c,v 1.4 2002/01/02 23:00:10 deraadt Exp $ */ | 3 | /* $OpenBSD: base64.c,v 1.4 2002/01/02 23:00:10 deraadt Exp $ */ |
2 | 4 | ||
3 | /* | 5 | /* |
diff --git a/openbsd-compat/basename.c b/openbsd-compat/basename.c index 2054c8068..552dc1e1c 100644 --- a/openbsd-compat/basename.c +++ b/openbsd-compat/basename.c | |||
@@ -1,3 +1,5 @@ | |||
1 | /* OPENBSD ORIGINAL: lib/libc/gen/basename.c */ | ||
2 | |||
1 | /* $OpenBSD: basename.c,v 1.11 2003/06/17 21:56:23 millert Exp $ */ | 3 | /* $OpenBSD: basename.c,v 1.11 2003/06/17 21:56:23 millert Exp $ */ |
2 | 4 | ||
3 | /* | 5 | /* |
diff --git a/openbsd-compat/bsd-arc4random.c b/openbsd-compat/bsd-arc4random.c index 5f890968e..22003ff0a 100644 --- a/openbsd-compat/bsd-arc4random.c +++ b/openbsd-compat/bsd-arc4random.c | |||
@@ -1,31 +1,23 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 1999-2000 Damien Miller. All rights reserved. | 2 | * Copyright (c) 1999,2000,2004 Damien Miller <djm@mindrot.org> |
3 | * | 3 | * |
4 | * Redistribution and use in source and binary forms, with or without | 4 | * Permission to use, copy, modify, and distribute this software for any |
5 | * modification, are permitted provided that the following conditions | 5 | * purpose with or without fee is hereby granted, provided that the above |
6 | * are met: | 6 | * copyright notice and this permission notice appear in all copies. |
7 | * 1. Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * 2. Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * | 7 | * |
13 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | 8 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
14 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | 9 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
15 | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | 10 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
16 | * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | 11 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
17 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | 12 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
18 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 13 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
19 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 14 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
20 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
21 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
22 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
23 | */ | 15 | */ |
24 | 16 | ||
25 | #include "includes.h" | 17 | #include "includes.h" |
26 | #include "log.h" | 18 | #include "log.h" |
27 | 19 | ||
28 | RCSID("$Id: bsd-arc4random.c,v 1.7 2003/05/18 14:13:38 djm Exp $"); | 20 | RCSID("$Id: bsd-arc4random.c,v 1.8 2004/02/17 05:49:55 djm Exp $"); |
29 | 21 | ||
30 | #ifndef HAVE_ARC4RANDOM | 22 | #ifndef HAVE_ARC4RANDOM |
31 | 23 | ||
diff --git a/openbsd-compat/bsd-cray.c b/openbsd-compat/bsd-cray.c index f2ac428cc..f630366be 100644 --- a/openbsd-compat/bsd-cray.c +++ b/openbsd-compat/bsd-cray.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * $Id: bsd-cray.c,v 1.12 2003/06/03 02:45:27 dtucker Exp $ | 2 | * $Id: bsd-cray.c,v 1.13 2004/01/30 03:34:22 dtucker Exp $ |
3 | * | 3 | * |
4 | * bsd-cray.c | 4 | * bsd-cray.c |
5 | * | 5 | * |
@@ -59,6 +59,28 @@ | |||
59 | #include <ia.h> | 59 | #include <ia.h> |
60 | #include <urm.h> | 60 | #include <urm.h> |
61 | #include "ssh.h" | 61 | #include "ssh.h" |
62 | |||
63 | #include "includes.h" | ||
64 | #include "sys/types.h" | ||
65 | |||
66 | #ifndef HAVE_STRUCT_SOCKADDR_STORAGE | ||
67 | # define _SS_MAXSIZE 128 /* Implementation specific max size */ | ||
68 | # define _SS_PADSIZE (_SS_MAXSIZE - sizeof (struct sockaddr)) | ||
69 | |||
70 | # define ss_family ss_sa.sa_family | ||
71 | #endif /* !HAVE_STRUCT_SOCKADDR_STORAGE */ | ||
72 | |||
73 | #ifndef IN6_IS_ADDR_LOOPBACK | ||
74 | # define IN6_IS_ADDR_LOOPBACK(a) \ | ||
75 | (((u_int32_t *) (a))[0] == 0 && ((u_int32_t *) (a))[1] == 0 && \ | ||
76 | ((u_int32_t *) (a))[2] == 0 && ((u_int32_t *) (a))[3] == htonl (1)) | ||
77 | #endif /* !IN6_IS_ADDR_LOOPBACK */ | ||
78 | |||
79 | #ifndef AF_INET6 | ||
80 | /* Define it to something that should never appear */ | ||
81 | #define AF_INET6 AF_MAX | ||
82 | #endif | ||
83 | |||
62 | #include "log.h" | 84 | #include "log.h" |
63 | #include "servconf.h" | 85 | #include "servconf.h" |
64 | #include "bsd-cray.h" | 86 | #include "bsd-cray.h" |
@@ -182,7 +204,7 @@ cray_setup (uid_t uid, char *username, const char *command) | |||
182 | /* passwd stuff for ia_user */ | 204 | /* passwd stuff for ia_user */ |
183 | passwd_t pwdacm, pwddialup, pwdudb, pwdwal, pwddce; | 205 | passwd_t pwdacm, pwddialup, pwdudb, pwdwal, pwddce; |
184 | ia_user_ret_t uret; /* stuff returned from ia_user */ | 206 | ia_user_ret_t uret; /* stuff returned from ia_user */ |
185 | ia_user_t usent /* ia_user main structure */ | 207 | ia_user_t usent; /* ia_user main structure */ |
186 | int ia_rcode; /* ia_user return code */ | 208 | int ia_rcode; /* ia_user return code */ |
187 | ia_failure_t fsent; /* ia_failure structure */ | 209 | ia_failure_t fsent; /* ia_failure structure */ |
188 | ia_failure_ret_t fret; /* ia_failure return stuff */ | 210 | ia_failure_ret_t fret; /* ia_failure return stuff */ |
@@ -501,54 +523,54 @@ cray_setup (uid_t uid, char *username, const char *command) | |||
501 | break; | 523 | break; |
502 | default: | 524 | default: |
503 | valid_acct = nam2acid(acct_name); | 525 | valid_acct = nam2acid(acct_name); |
504 | if (valid_acct == -1) { | 526 | if (valid_acct == -1) |
505 | printf( | 527 | printf( |
506 | "Account id not found for" | 528 | "Account id not found for" |
507 | " account name \"%s\"\n\n", | 529 | " account name \"%s\"\n\n", |
508 | acct_name); | 530 | acct_name); |
509 | break; | 531 | break; |
510 | } | ||
511 | /* | ||
512 | * If an account was given, search the user's | ||
513 | * acids array to verify they can use this account. | ||
514 | */ | ||
515 | if ((valid_acct != -1) && | ||
516 | !(ue.ue_permbits & PERMBITS_ACCTID)) { | ||
517 | for (i = 0; i < MAXVIDS; i++) { | ||
518 | if (ue.ue_acids[i] == -1) | ||
519 | break; | ||
520 | if (valid_acct == ue.ue_acids[i]) | ||
521 | break; | ||
522 | } | ||
523 | if (i == MAXVIDS || | ||
524 | ue.ue_acids[i] == -1) { | ||
525 | fprintf(stderr, "Cannot set" | ||
526 | " account name to " | ||
527 | "\"%s\", permission " | ||
528 | "denied\n\n", acct_name); | ||
529 | valid_acct = -1; | ||
530 | } | ||
531 | } | ||
532 | } | 532 | } |
533 | } else { | ||
534 | /* | 533 | /* |
535 | * The client isn't connected to a terminal and can't | 534 | * If an account was given, search the user's |
536 | * respond to an acid prompt. Use default acid. | 535 | * acids array to verify they can use this account. |
537 | */ | 536 | */ |
538 | debug("cray_setup: ttyname false case, %.100s", | 537 | if ((valid_acct != -1) && |
539 | ttyname); | 538 | !(ue.ue_permbits & PERMBITS_ACCTID)) { |
540 | valid_acct = ue.ue_acids[0]; | 539 | for (i = 0; i < MAXVIDS; i++) { |
540 | if (ue.ue_acids[i] == -1) | ||
541 | break; | ||
542 | if (valid_acct == ue.ue_acids[i]) | ||
543 | break; | ||
544 | } | ||
545 | if (i == MAXVIDS || | ||
546 | ue.ue_acids[i] == -1) { | ||
547 | fprintf(stderr, "Cannot set" | ||
548 | " account name to " | ||
549 | "\"%s\", permission " | ||
550 | "denied\n\n", acct_name); | ||
551 | valid_acct = -1; | ||
552 | } | ||
553 | } | ||
541 | } | 554 | } |
542 | } else { | 555 | } else { |
543 | /* | 556 | /* |
544 | * The user doesn't have the askacid permbit set or | 557 | * The client isn't connected to a terminal and can't |
545 | * only has one valid account to use. | 558 | * respond to an acid prompt. Use default acid. |
546 | */ | 559 | */ |
560 | debug("cray_setup: ttyname false case, %.100s", | ||
561 | ttyname); | ||
547 | valid_acct = ue.ue_acids[0]; | 562 | valid_acct = ue.ue_acids[0]; |
548 | } | 563 | } |
549 | if (acctid(0, valid_acct) < 0) { | 564 | } else { |
550 | printf ("Bad account id: %d\n", valid_acct); | 565 | /* |
551 | exit(1); | 566 | * The user doesn't have the askacid permbit set or |
567 | * only has one valid account to use. | ||
568 | */ | ||
569 | valid_acct = ue.ue_acids[0]; | ||
570 | } | ||
571 | if (acctid(0, valid_acct) < 0) { | ||
572 | printf ("Bad account id: %d\n", valid_acct); | ||
573 | exit(1); | ||
552 | } | 574 | } |
553 | 575 | ||
554 | /* | 576 | /* |
@@ -778,4 +800,17 @@ cray_set_tmpdir(struct utmp *ut) | |||
778 | ut->ut_jid = jid; | 800 | ut->ut_jid = jid; |
779 | strncpy(ut->ut_tpath, cray_tmpdir, TPATHSIZ); | 801 | strncpy(ut->ut_tpath, cray_tmpdir, TPATHSIZ); |
780 | } | 802 | } |
781 | #endif | 803 | #endif /* UNICOS */ |
804 | |||
805 | #ifdef _UNICOSMP | ||
806 | #include <pwd.h> | ||
807 | /* | ||
808 | * Set job id and create tmpdir directory. | ||
809 | */ | ||
810 | void | ||
811 | cray_init_job(struct passwd *pw) | ||
812 | { | ||
813 | initrm_silent(pw->pw_uid); | ||
814 | return; | ||
815 | } | ||
816 | #endif /* _UNICOSMP */ | ||
diff --git a/openbsd-compat/bsd-cray.h b/openbsd-compat/bsd-cray.h index a121ea152..de6ba1a8d 100644 --- a/openbsd-compat/bsd-cray.h +++ b/openbsd-compat/bsd-cray.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: bsd-cray.h,v 1.10 2003/08/29 16:59:52 mouring Exp $ */ | 1 | /* $Id: bsd-cray.h,v 1.11 2004/01/30 03:34:22 dtucker Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 2002, Cray Inc. (Wendy Palm <wendyp@cray.com>) | 4 | * Copyright (c) 2002, Cray Inc. (Wendy Palm <wendyp@cray.com>) |
@@ -53,7 +53,6 @@ extern char cray_tmpdir[]; | |||
53 | # define MAXHOSTNAMELEN 64 | 53 | # define MAXHOSTNAMELEN 64 |
54 | #endif | 54 | #endif |
55 | #ifndef _CRAYT3E | 55 | #ifndef _CRAYT3E |
56 | # include <sys/ttold.h> | ||
57 | # define TIOCGPGRP (tIOC|20) | 56 | # define TIOCGPGRP (tIOC|20) |
58 | #endif | 57 | #endif |
59 | 58 | ||
diff --git a/openbsd-compat/bsd-getpeereid.c b/openbsd-compat/bsd-getpeereid.c index bcda2c155..fe2edad71 100644 --- a/openbsd-compat/bsd-getpeereid.c +++ b/openbsd-compat/bsd-getpeereid.c | |||
@@ -1,30 +1,22 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2002 Damien Miller. All rights reserved. | 2 | * Copyright (c) 2002,2004 Damien Miller <djm@mindrot.org> |
3 | * | 3 | * |
4 | * Redistribution and use in source and binary forms, with or without | 4 | * Permission to use, copy, modify, and distribute this software for any |
5 | * modification, are permitted provided that the following conditions | 5 | * purpose with or without fee is hereby granted, provided that the above |
6 | * are met: | 6 | * copyright notice and this permission notice appear in all copies. |
7 | * 1. Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * 2. Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * | 7 | * |
13 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | 8 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
14 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | 9 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
15 | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | 10 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
16 | * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | 11 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
17 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | 12 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
18 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 13 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
19 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 14 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
20 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
21 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
22 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
23 | */ | 15 | */ |
24 | 16 | ||
25 | #include "includes.h" | 17 | #include "includes.h" |
26 | 18 | ||
27 | RCSID("$Id: bsd-getpeereid.c,v 1.2 2003/03/24 22:07:52 djm Exp $"); | 19 | RCSID("$Id: bsd-getpeereid.c,v 1.3 2004/02/17 05:49:55 djm Exp $"); |
28 | 20 | ||
29 | #if !defined(HAVE_GETPEEREID) | 21 | #if !defined(HAVE_GETPEEREID) |
30 | 22 | ||
diff --git a/openbsd-compat/bsd-misc.c b/openbsd-compat/bsd-misc.c index 08b089bdc..7b06786f5 100644 --- a/openbsd-compat/bsd-misc.c +++ b/openbsd-compat/bsd-misc.c | |||
@@ -1,31 +1,23 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 1999-2003 Damien Miller. All rights reserved. | 2 | * Copyright (c) 1999-2004 Damien Miller <djm@mindrot.org> |
3 | * | 3 | * |
4 | * Redistribution and use in source and binary forms, with or without | 4 | * Permission to use, copy, modify, and distribute this software for any |
5 | * modification, are permitted provided that the following conditions | 5 | * purpose with or without fee is hereby granted, provided that the above |
6 | * are met: | 6 | * copyright notice and this permission notice appear in all copies. |
7 | * 1. Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * 2. Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * | 7 | * |
13 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | 8 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
14 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | 9 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
15 | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | 10 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
16 | * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | 11 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
17 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | 12 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
18 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 13 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
19 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 14 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
20 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
21 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
22 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
23 | */ | 15 | */ |
24 | 16 | ||
25 | #include "includes.h" | 17 | #include "includes.h" |
26 | #include "xmalloc.h" | 18 | #include "xmalloc.h" |
27 | 19 | ||
28 | RCSID("$Id: bsd-misc.c,v 1.19 2003/08/25 01:16:21 mouring Exp $"); | 20 | RCSID("$Id: bsd-misc.c,v 1.21 2004/02/17 05:49:55 djm Exp $"); |
29 | 21 | ||
30 | /* | 22 | /* |
31 | * NB. duplicate __progname in case it is an alias for argv[0] | 23 | * NB. duplicate __progname in case it is an alias for argv[0] |
@@ -164,7 +156,6 @@ int nanosleep(const struct timespec *req, struct timespec *rem) | |||
164 | 156 | ||
165 | return(rc); | 157 | return(rc); |
166 | } | 158 | } |
167 | |||
168 | #endif | 159 | #endif |
169 | 160 | ||
170 | #ifndef HAVE_TCGETPGRP | 161 | #ifndef HAVE_TCGETPGRP |
@@ -223,6 +214,7 @@ mysignal(int sig, mysig_t act) | |||
223 | } | 214 | } |
224 | return (osa.sa_handler); | 215 | return (osa.sa_handler); |
225 | #else | 216 | #else |
217 | #undef signal | ||
226 | return (signal(sig, act)); | 218 | return (signal(sig, act)); |
227 | #endif | 219 | #endif |
228 | } | 220 | } |
diff --git a/openbsd-compat/bsd-misc.h b/openbsd-compat/bsd-misc.h index 6b70473f3..c8073942c 100644 --- a/openbsd-compat/bsd-misc.h +++ b/openbsd-compat/bsd-misc.h | |||
@@ -1,27 +1,19 @@ | |||
1 | /* $Id: bsd-misc.h,v 1.13 2003/08/29 16:59:52 mouring Exp $ */ | 1 | /* $Id: bsd-misc.h,v 1.14 2004/02/17 05:49:55 djm Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 1999-2003 Damien Miller. All rights reserved. | 4 | * Copyright (c) 1999-2004 Damien Miller <djm@mindrot.org> |
5 | * | 5 | * |
6 | * Redistribution and use in source and binary forms, with or without | 6 | * Permission to use, copy, modify, and distribute this software for any |
7 | * modification, are permitted provided that the following conditions | 7 | * purpose with or without fee is hereby granted, provided that the above |
8 | * are met: | 8 | * copyright notice and this permission notice appear in all copies. |
9 | * 1. Redistributions of source code must retain the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer. | ||
11 | * 2. Redistributions in binary form must reproduce the above copyright | ||
12 | * notice, this list of conditions and the following disclaimer in the | ||
13 | * documentation and/or other materials provided with the distribution. | ||
14 | * | 9 | * |
15 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | 10 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
16 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | 11 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
17 | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | 12 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
18 | * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | 13 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
19 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | 14 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
20 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 15 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
21 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 16 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
22 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
23 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
24 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
25 | */ | 17 | */ |
26 | 18 | ||
27 | #ifndef _BSD_MISC_H | 19 | #ifndef _BSD_MISC_H |
diff --git a/openbsd-compat/bsd-openpty.c b/openbsd-compat/bsd-openpty.c new file mode 100644 index 000000000..daf5f8b81 --- /dev/null +++ b/openbsd-compat/bsd-openpty.c | |||
@@ -0,0 +1,203 @@ | |||
1 | /* | ||
2 | * Please note: this implementation of openpty() is far from complete. | ||
3 | * it is just enough for portable OpenSSH's needs. | ||
4 | */ | ||
5 | |||
6 | /* | ||
7 | * Copyright (c) 2004 Damien Miller <djm@mindrot.org> | ||
8 | * | ||
9 | * Permission to use, copy, modify, and distribute this software for any | ||
10 | * purpose with or without fee is hereby granted, provided that the above | ||
11 | * copyright notice and this permission notice appear in all copies. | ||
12 | * | ||
13 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||
14 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||
15 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||
16 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
17 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
18 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
19 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
20 | */ | ||
21 | |||
22 | /* | ||
23 | * Author: Tatu Ylonen <ylo@cs.hut.fi> | ||
24 | * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland | ||
25 | * All rights reserved | ||
26 | * Allocating a pseudo-terminal, and making it the controlling tty. | ||
27 | * | ||
28 | * As far as I am concerned, the code I have written for this software | ||
29 | * can be used freely for any purpose. Any derived versions of this | ||
30 | * software must be clearly marked as such, and if the derived work is | ||
31 | * incompatible with the protocol description in the RFC file, it must be | ||
32 | * called by a name other than "ssh" or "Secure Shell". | ||
33 | */ | ||
34 | |||
35 | #include "includes.h" | ||
36 | #if !defined(HAVE_OPENPTY) | ||
37 | |||
38 | #ifdef HAVE_UTIL_H | ||
39 | # include <util.h> | ||
40 | #endif /* HAVE_UTIL_H */ | ||
41 | |||
42 | #ifdef HAVE_PTY_H | ||
43 | # include <pty.h> | ||
44 | #endif | ||
45 | #if defined(HAVE_DEV_PTMX) && defined(HAVE_SYS_STROPTS_H) | ||
46 | # include <sys/stropts.h> | ||
47 | #endif | ||
48 | |||
49 | #ifndef O_NOCTTY | ||
50 | #define O_NOCTTY 0 | ||
51 | #endif | ||
52 | |||
53 | int | ||
54 | openpty(int *amaster, int *aslave, char *name, struct termios *termp, | ||
55 | struct winsize *winp) | ||
56 | { | ||
57 | #if defined(HAVE__GETPTY) | ||
58 | /* | ||
59 | * _getpty(3) exists in SGI Irix 4.x, 5.x & 6.x -- it generates more | ||
60 | * pty's automagically when needed | ||
61 | */ | ||
62 | char *slave; | ||
63 | |||
64 | if ((slave = _getpty(amaster, O_RDWR, 0622, 0)) == NULL) | ||
65 | return (-1); | ||
66 | |||
67 | /* Open the slave side. */ | ||
68 | if ((*aslave = open(slave, O_RDWR | O_NOCTTY)) == -1) { | ||
69 | close(*amaster); | ||
70 | return (-1); | ||
71 | } | ||
72 | return (0); | ||
73 | |||
74 | #elif defined(HAVE_DEV_PTMX) | ||
75 | /* | ||
76 | * This code is used e.g. on Solaris 2.x. (Note that Solaris 2.3 | ||
77 | * also has bsd-style ptys, but they simply do not work.) | ||
78 | */ | ||
79 | int ptm; | ||
80 | char *pts; | ||
81 | mysig_t old_signal; | ||
82 | |||
83 | if ((ptm = open("/dev/ptmx", O_RDWR | O_NOCTTY)) == -1) | ||
84 | return (-1); | ||
85 | |||
86 | /* XXX: need to close ptm on error? */ | ||
87 | old_signal = signal(SIGCHLD, SIG_DFL); | ||
88 | if (grantpt(ptm) < 0) | ||
89 | return (-1); | ||
90 | signal(SIGCHLD, old_signal); | ||
91 | |||
92 | if (unlockpt(ptm) < 0) | ||
93 | return (-1); | ||
94 | |||
95 | if ((pts = ptsname(ptm)) == NULL) | ||
96 | return (-1); | ||
97 | *amaster = ptm; | ||
98 | |||
99 | /* Open the slave side. */ | ||
100 | if ((*aslave = open(pts, O_RDWR | O_NOCTTY)) == -1) { | ||
101 | close(*amaster); | ||
102 | return (-1); | ||
103 | } | ||
104 | |||
105 | #ifndef HAVE_CYGWIN | ||
106 | /* | ||
107 | * Try to push the appropriate streams modules, as described | ||
108 | * in Solaris pts(7). | ||
109 | */ | ||
110 | ioctl(*aslave, I_PUSH, "ptem"); | ||
111 | ioctl(*aslave, I_PUSH, "ldterm"); | ||
112 | # ifndef __hpux | ||
113 | ioctl(*aslave, I_PUSH, "ttcompat"); | ||
114 | # endif /* __hpux */ | ||
115 | #endif /* HAVE_CYGWIN */ | ||
116 | |||
117 | return (0); | ||
118 | |||
119 | #elif defined(HAVE_DEV_PTS_AND_PTC) | ||
120 | /* AIX-style pty code. */ | ||
121 | const char *ttname; | ||
122 | |||
123 | if ((*amaster = open("/dev/ptc", O_RDWR | O_NOCTTY)) == -1) | ||
124 | return (-1); | ||
125 | if ((ttname = ttyname(*amaster)) == NULL) | ||
126 | return (-1); | ||
127 | if ((*aslave = open(ttname, O_RDWR | O_NOCTTY)) == -1) { | ||
128 | close(*amaster); | ||
129 | return (-1); | ||
130 | } | ||
131 | return (0); | ||
132 | |||
133 | #elif defined(_UNICOS) | ||
134 | char ptbuf[64], ttbuf[64]; | ||
135 | int i; | ||
136 | int highpty; | ||
137 | |||
138 | highpty = 128; | ||
139 | #ifdef _SC_CRAY_NPTY | ||
140 | if ((highpty = sysconf(_SC_CRAY_NPTY)) == -1) | ||
141 | highpty = 128; | ||
142 | #endif /* _SC_CRAY_NPTY */ | ||
143 | |||
144 | for (i = 0; i < highpty; i++) { | ||
145 | snprintf(ptbuf, sizeof(ptbuf), "/dev/pty/%03d", i); | ||
146 | snprintf(ttbuf, sizeof(ttbuf), "/dev/ttyp%03d", i); | ||
147 | if ((*amaster = open(ptbuf, O_RDWR|O_NOCTTY)) == -1) | ||
148 | continue; | ||
149 | /* Open the slave side. */ | ||
150 | if ((*aslave = open(ttbuf, O_RDWR|O_NOCTTY)) == -1) { | ||
151 | close(*amaster); | ||
152 | return (-1); | ||
153 | } | ||
154 | return (0); | ||
155 | } | ||
156 | return (-1); | ||
157 | |||
158 | #else | ||
159 | /* BSD-style pty code. */ | ||
160 | char ptbuf[64], ttbuf[64]; | ||
161 | int i; | ||
162 | const char *ptymajors = "pqrstuvwxyzabcdefghijklmno" | ||
163 | "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; | ||
164 | const char *ptyminors = "0123456789abcdef"; | ||
165 | int num_minors = strlen(ptyminors); | ||
166 | int num_ptys = strlen(ptymajors) * num_minors; | ||
167 | struct termios tio; | ||
168 | |||
169 | for (i = 0; i < num_ptys; i++) { | ||
170 | snprintf(ptbuf, sizeof(ptbuf), "/dev/pty%c%c", | ||
171 | ptymajors[i / num_minors], ptyminors[i % num_minors]); | ||
172 | snprintf(ttbuf, sizeof(ttbuf), "/dev/tty%c%c", | ||
173 | ptymajors[i / num_minors], ptyminors[i % num_minors]); | ||
174 | |||
175 | if ((*amaster = open(ptbuf, O_RDWR | O_NOCTTY)) == -1) { | ||
176 | /* Try SCO style naming */ | ||
177 | snprintf(ptbuf, sizeof(ptbuf), "/dev/ptyp%d", i); | ||
178 | snprintf(ttbuf, sizeof(ttbuf), "/dev/ttyp%d", i); | ||
179 | if ((*amaster = open(ptbuf, O_RDWR | O_NOCTTY)) == -1) | ||
180 | continue; | ||
181 | } | ||
182 | |||
183 | /* Open the slave side. */ | ||
184 | if ((*aslave = open(ttbuf, O_RDWR | O_NOCTTY)) == -1) { | ||
185 | close(*amaster); | ||
186 | return (-1); | ||
187 | } | ||
188 | /* set tty modes to a sane state for broken clients */ | ||
189 | if (tcgetattr(*amaster, &tio) != -1) { | ||
190 | tio.c_lflag |= (ECHO | ISIG | ICANON); | ||
191 | tio.c_oflag |= (OPOST | ONLCR); | ||
192 | tio.c_iflag |= ICRNL; | ||
193 | tcsetattr(*amaster, TCSANOW, &tio); | ||
194 | } | ||
195 | |||
196 | return (0); | ||
197 | } | ||
198 | return (-1); | ||
199 | #endif | ||
200 | } | ||
201 | |||
202 | #endif /* !defined(HAVE_OPENPTY) */ | ||
203 | |||
diff --git a/openbsd-compat/daemon.c b/openbsd-compat/daemon.c index 6dd45f6a7..c0be5fff9 100644 --- a/openbsd-compat/daemon.c +++ b/openbsd-compat/daemon.c | |||
@@ -1,3 +1,5 @@ | |||
1 | /* OPENBSD ORIGINAL: lib/libc/gen/daemon.c */ | ||
2 | |||
1 | /*- | 3 | /*- |
2 | * Copyright (c) 1990, 1993 | 4 | * Copyright (c) 1990, 1993 |
3 | * The Regents of the University of California. All rights reserved. | 5 | * The Regents of the University of California. All rights reserved. |
diff --git a/openbsd-compat/dirname.c b/openbsd-compat/dirname.c index 1ab7516d8..25ab34dd6 100644 --- a/openbsd-compat/dirname.c +++ b/openbsd-compat/dirname.c | |||
@@ -1,3 +1,5 @@ | |||
1 | /* OPENBSD ORIGINAL: lib/libc/gen/dirname.c */ | ||
2 | |||
1 | /* $OpenBSD: dirname.c,v 1.10 2003/06/17 21:56:23 millert Exp $ */ | 3 | /* $OpenBSD: dirname.c,v 1.10 2003/06/17 21:56:23 millert Exp $ */ |
2 | 4 | ||
3 | /* | 5 | /* |
diff --git a/openbsd-compat/fake-rfc2553.c b/openbsd-compat/fake-rfc2553.c index b0cc69bd7..0186b5300 100644 --- a/openbsd-compat/fake-rfc2553.c +++ b/openbsd-compat/fake-rfc2553.c | |||
@@ -37,7 +37,7 @@ | |||
37 | 37 | ||
38 | #include "includes.h" | 38 | #include "includes.h" |
39 | 39 | ||
40 | RCSID("$Id: fake-rfc2553.c,v 1.4.2.1 2003/09/22 02:09:18 dtucker Exp $"); | 40 | RCSID("$Id: fake-rfc2553.c,v 1.5 2003/09/22 02:08:23 dtucker Exp $"); |
41 | 41 | ||
42 | #ifndef HAVE_GETNAMEINFO | 42 | #ifndef HAVE_GETNAMEINFO |
43 | int getnameinfo(const struct sockaddr *sa, size_t salen, char *host, | 43 | int getnameinfo(const struct sockaddr *sa, size_t salen, char *host, |
diff --git a/openbsd-compat/fake-rfc2553.h b/openbsd-compat/fake-rfc2553.h index 2d5439296..eb88605fa 100644 --- a/openbsd-compat/fake-rfc2553.h +++ b/openbsd-compat/fake-rfc2553.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: fake-rfc2553.h,v 1.6.2.1 2003/09/22 02:09:18 dtucker Exp $ */ | 1 | /* $Id: fake-rfc2553.h,v 1.8 2004/02/10 02:05:41 dtucker Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (C) 2000-2003 Damien Miller. All rights reserved. | 4 | * Copyright (C) 2000-2003 Damien Miller. All rights reserved. |
@@ -133,19 +133,23 @@ struct addrinfo { | |||
133 | #endif /* !HAVE_STRUCT_ADDRINFO */ | 133 | #endif /* !HAVE_STRUCT_ADDRINFO */ |
134 | 134 | ||
135 | #ifndef HAVE_GETADDRINFO | 135 | #ifndef HAVE_GETADDRINFO |
136 | #define getaddrinfo(a,b,c,d) (ssh_getaddrinfo(a,b,c,d)) | ||
136 | int getaddrinfo(const char *, const char *, | 137 | int getaddrinfo(const char *, const char *, |
137 | const struct addrinfo *, struct addrinfo **); | 138 | const struct addrinfo *, struct addrinfo **); |
138 | #endif /* !HAVE_GETADDRINFO */ | 139 | #endif /* !HAVE_GETADDRINFO */ |
139 | 140 | ||
140 | #if !defined(HAVE_GAI_STRERROR) && !defined(HAVE_CONST_GAI_STRERROR_PROTO) | 141 | #if !defined(HAVE_GAI_STRERROR) && !defined(HAVE_CONST_GAI_STRERROR_PROTO) |
142 | #define gai_strerror(a) (ssh_gai_strerror(a)) | ||
141 | char *gai_strerror(int); | 143 | char *gai_strerror(int); |
142 | #endif /* !HAVE_GAI_STRERROR */ | 144 | #endif /* !HAVE_GAI_STRERROR */ |
143 | 145 | ||
144 | #ifndef HAVE_FREEADDRINFO | 146 | #ifndef HAVE_FREEADDRINFO |
147 | #define freeaddrinfo(a) (ssh_freeaddrinfo(a)) | ||
145 | void freeaddrinfo(struct addrinfo *); | 148 | void freeaddrinfo(struct addrinfo *); |
146 | #endif /* !HAVE_FREEADDRINFO */ | 149 | #endif /* !HAVE_FREEADDRINFO */ |
147 | 150 | ||
148 | #ifndef HAVE_GETNAMEINFO | 151 | #ifndef HAVE_GETNAMEINFO |
152 | #define getnameinfo(a,b,c,d,e,f,g) (ssh_getnameinfo(a,b,c,d,e,f,g)) | ||
149 | int getnameinfo(const struct sockaddr *, size_t, char *, size_t, | 153 | int getnameinfo(const struct sockaddr *, size_t, char *, size_t, |
150 | char *, size_t, int); | 154 | char *, size_t, int); |
151 | #endif /* !HAVE_GETNAMEINFO */ | 155 | #endif /* !HAVE_GETNAMEINFO */ |
diff --git a/openbsd-compat/getcwd.c b/openbsd-compat/getcwd.c index 31d1cfe93..19be59172 100644 --- a/openbsd-compat/getcwd.c +++ b/openbsd-compat/getcwd.c | |||
@@ -1,3 +1,5 @@ | |||
1 | /* OPENBSD ORIGINAL: lib/libc/gen/getcwd.c */ | ||
2 | |||
1 | /* | 3 | /* |
2 | * Copyright (c) 1989, 1991, 1993 | 4 | * Copyright (c) 1989, 1991, 1993 |
3 | * The Regents of the University of California. All rights reserved. | 5 | * The Regents of the University of California. All rights reserved. |
diff --git a/openbsd-compat/getgrouplist.c b/openbsd-compat/getgrouplist.c index 085cda8c3..59c164f44 100644 --- a/openbsd-compat/getgrouplist.c +++ b/openbsd-compat/getgrouplist.c | |||
@@ -1,3 +1,5 @@ | |||
1 | /* OPENBSD ORIGINAL: lib/libc/gen/getgrouplist.c */ | ||
2 | |||
1 | /* | 3 | /* |
2 | * Copyright (c) 1991, 1993 | 4 | * Copyright (c) 1991, 1993 |
3 | * The Regents of the University of California. All rights reserved. | 5 | * The Regents of the University of California. All rights reserved. |
diff --git a/openbsd-compat/getopt.c b/openbsd-compat/getopt.c index 2136fbfcc..f5ee6778d 100644 --- a/openbsd-compat/getopt.c +++ b/openbsd-compat/getopt.c | |||
@@ -1,3 +1,5 @@ | |||
1 | /* OPENBSD ORIGINAL: lib/libc/stdlib/getopt.c */ | ||
2 | |||
1 | /* | 3 | /* |
2 | * Copyright (c) 1987, 1993, 1994 | 4 | * Copyright (c) 1987, 1993, 1994 |
3 | * The Regents of the University of California. All rights reserved. | 5 | * The Regents of the University of California. All rights reserved. |
diff --git a/openbsd-compat/getrrsetbyname.c b/openbsd-compat/getrrsetbyname.c index 44fa2755b..66d18142e 100644 --- a/openbsd-compat/getrrsetbyname.c +++ b/openbsd-compat/getrrsetbyname.c | |||
@@ -1,3 +1,5 @@ | |||
1 | /* OPENBSD ORIGINAL: lib/libc/net/getrrsetbyname.c */ | ||
2 | |||
1 | /* $OpenBSD: getrrsetbyname.c,v 1.7 2003/03/07 07:34:14 itojun Exp $ */ | 3 | /* $OpenBSD: getrrsetbyname.c,v 1.7 2003/03/07 07:34:14 itojun Exp $ */ |
2 | 4 | ||
3 | /* | 5 | /* |
@@ -45,12 +47,10 @@ | |||
45 | 47 | ||
46 | #include "includes.h" | 48 | #include "includes.h" |
47 | 49 | ||
48 | #if defined(DNS) && !defined(HAVE_GETRRSETBYNAME) | 50 | #ifndef HAVE_GETRRSETBYNAME |
49 | 51 | ||
50 | #include "getrrsetbyname.h" | 52 | #include "getrrsetbyname.h" |
51 | 53 | ||
52 | /* #include "thread_private.h" */ | ||
53 | |||
54 | #define ANSWER_BUFFER_SIZE 1024*64 | 54 | #define ANSWER_BUFFER_SIZE 1024*64 |
55 | 55 | ||
56 | struct dns_query { | 56 | struct dns_query { |
@@ -159,7 +159,6 @@ getrrsetbyname(const char *hostname, unsigned int rdclass, | |||
159 | unsigned int rdtype, unsigned int flags, | 159 | unsigned int rdtype, unsigned int flags, |
160 | struct rrsetinfo **res) | 160 | struct rrsetinfo **res) |
161 | { | 161 | { |
162 | struct __res_state *_resp = &_res; | ||
163 | int result; | 162 | int result; |
164 | struct rrsetinfo *rrset = NULL; | 163 | struct rrsetinfo *rrset = NULL; |
165 | struct dns_response *response; | 164 | struct dns_response *response; |
@@ -188,19 +187,19 @@ getrrsetbyname(const char *hostname, unsigned int rdclass, | |||
188 | } | 187 | } |
189 | 188 | ||
190 | /* initialize resolver */ | 189 | /* initialize resolver */ |
191 | if ((_resp->options & RES_INIT) == 0 && res_init() == -1) { | 190 | if ((_res.options & RES_INIT) == 0 && res_init() == -1) { |
192 | result = ERRSET_FAIL; | 191 | result = ERRSET_FAIL; |
193 | goto fail; | 192 | goto fail; |
194 | } | 193 | } |
195 | 194 | ||
196 | #ifdef DEBUG | 195 | #ifdef DEBUG |
197 | _resp->options |= RES_DEBUG; | 196 | _res.options |= RES_DEBUG; |
198 | #endif /* DEBUG */ | 197 | #endif /* DEBUG */ |
199 | 198 | ||
200 | #ifdef RES_USE_DNSSEC | 199 | #ifdef RES_USE_DNSSEC |
201 | /* turn on DNSSEC if EDNS0 is configured */ | 200 | /* turn on DNSSEC if EDNS0 is configured */ |
202 | if (_resp->options & RES_USE_EDNS0) | 201 | if (_res.options & RES_USE_EDNS0) |
203 | _resp->options |= RES_USE_DNSSEC; | 202 | _res.options |= RES_USE_DNSSEC; |
204 | #endif /* RES_USE_DNSEC */ | 203 | #endif /* RES_USE_DNSEC */ |
205 | 204 | ||
206 | /* make query */ | 205 | /* make query */ |
@@ -575,4 +574,4 @@ count_dns_rr(struct dns_rr *p, u_int16_t class, u_int16_t type) | |||
575 | return (n); | 574 | return (n); |
576 | } | 575 | } |
577 | 576 | ||
578 | #endif /* defined(DNS) && !defined(HAVE_GETRRSETBYNAME) */ | 577 | #endif /* !defined(HAVE_GETRRSETBYNAME) */ |
diff --git a/openbsd-compat/getrrsetbyname.h b/openbsd-compat/getrrsetbyname.h index 6466a54d6..39995b63f 100644 --- a/openbsd-compat/getrrsetbyname.h +++ b/openbsd-compat/getrrsetbyname.h | |||
@@ -1,3 +1,5 @@ | |||
1 | /* OPENBSD BASED ON : include/netdb.h */ | ||
2 | |||
1 | /* $OpenBSD: getrrsetbyname.c,v 1.4 2001/08/16 18:16:43 ho Exp $ */ | 3 | /* $OpenBSD: getrrsetbyname.c,v 1.4 2001/08/16 18:16:43 ho Exp $ */ |
2 | 4 | ||
3 | /* | 5 | /* |
@@ -48,7 +50,7 @@ | |||
48 | 50 | ||
49 | #include "includes.h" | 51 | #include "includes.h" |
50 | 52 | ||
51 | #if defined(DNS) && !defined(HAVE_GETRRSETBYNAME) | 53 | #ifndef HAVE_GETRRSETBYNAME |
52 | 54 | ||
53 | #include <sys/types.h> | 55 | #include <sys/types.h> |
54 | #include <netinet/in.h> | 56 | #include <netinet/in.h> |
@@ -56,6 +58,14 @@ | |||
56 | #include <netdb.h> | 58 | #include <netdb.h> |
57 | #include <resolv.h> | 59 | #include <resolv.h> |
58 | 60 | ||
61 | #ifndef HFIXEDSZ | ||
62 | #define HFIXEDSZ 12 | ||
63 | #endif | ||
64 | |||
65 | #ifndef T_SIG | ||
66 | #define T_SIG 24 | ||
67 | #endif | ||
68 | |||
59 | /* | 69 | /* |
60 | * Flags for getrrsetbyname() | 70 | * Flags for getrrsetbyname() |
61 | */ | 71 | */ |
@@ -95,6 +105,6 @@ struct rrsetinfo { | |||
95 | int getrrsetbyname(const char *, unsigned int, unsigned int, unsigned int, struct rrsetinfo **); | 105 | int getrrsetbyname(const char *, unsigned int, unsigned int, unsigned int, struct rrsetinfo **); |
96 | void freerrset(struct rrsetinfo *); | 106 | void freerrset(struct rrsetinfo *); |
97 | 107 | ||
98 | #endif /* defined(DNS) && !defined(HAVE_GETRRSETBYNAME) */ | 108 | #endif /* !defined(HAVE_GETRRSETBYNAME) */ |
99 | 109 | ||
100 | #endif /* _GETRRSETBYNAME_H */ | 110 | #endif /* _GETRRSETBYNAME_H */ |
diff --git a/openbsd-compat/glob.c b/openbsd-compat/glob.c index 50f35c304..7fafc8c40 100644 --- a/openbsd-compat/glob.c +++ b/openbsd-compat/glob.c | |||
@@ -1,3 +1,5 @@ | |||
1 | /* OPENBSD ORIGINAL: lib/libc/gen/glob.c */ | ||
2 | |||
1 | /* | 3 | /* |
2 | * Copyright (c) 1989, 1993 | 4 | * Copyright (c) 1989, 1993 |
3 | * The Regents of the University of California. All rights reserved. | 5 | * The Regents of the University of California. All rights reserved. |
diff --git a/openbsd-compat/glob.h b/openbsd-compat/glob.h index aceddbc48..3428b2013 100644 --- a/openbsd-compat/glob.h +++ b/openbsd-compat/glob.h | |||
@@ -1,3 +1,5 @@ | |||
1 | /* OPENBSD ORIGINAL: include/glob.h */ | ||
2 | |||
1 | /* $OpenBSD: glob.h,v 1.8 2003/06/02 19:34:12 millert Exp $ */ | 3 | /* $OpenBSD: glob.h,v 1.8 2003/06/02 19:34:12 millert Exp $ */ |
2 | /* $NetBSD: glob.h,v 1.5 1994/10/26 00:55:56 cgd Exp $ */ | 4 | /* $NetBSD: glob.h,v 1.5 1994/10/26 00:55:56 cgd Exp $ */ |
3 | 5 | ||
diff --git a/openbsd-compat/inet_aton.c b/openbsd-compat/inet_aton.c index 5de49868d..c141bcc68 100644 --- a/openbsd-compat/inet_aton.c +++ b/openbsd-compat/inet_aton.c | |||
@@ -1,3 +1,5 @@ | |||
1 | /* OPENBSD ORIGINAL: lib/libc/net/inet_addr.c */ | ||
2 | |||
1 | /* $OpenBSD: inet_addr.c,v 1.7 2003/06/02 20:18:35 millert Exp $ */ | 3 | /* $OpenBSD: inet_addr.c,v 1.7 2003/06/02 20:18:35 millert Exp $ */ |
2 | 4 | ||
3 | /* | 5 | /* |
diff --git a/openbsd-compat/inet_ntoa.c b/openbsd-compat/inet_ntoa.c index f9fdc9ee5..dc010dc53 100644 --- a/openbsd-compat/inet_ntoa.c +++ b/openbsd-compat/inet_ntoa.c | |||
@@ -1,3 +1,5 @@ | |||
1 | /* OPENBSD ORIGINAL: lib/libc/net/inet_ntoa.c */ | ||
2 | |||
1 | /* | 3 | /* |
2 | * Copyright (c) 1983, 1993 | 4 | * Copyright (c) 1983, 1993 |
3 | * The Regents of the University of California. All rights reserved. | 5 | * The Regents of the University of California. All rights reserved. |
diff --git a/openbsd-compat/inet_ntop.c b/openbsd-compat/inet_ntop.c index 075eac44f..7031625b4 100644 --- a/openbsd-compat/inet_ntop.c +++ b/openbsd-compat/inet_ntop.c | |||
@@ -1,3 +1,5 @@ | |||
1 | /* OPENBSD ORIGINAL: lib/libc/net/inet_ntop.c */ | ||
2 | |||
1 | /* $OpenBSD: inet_ntop.c,v 1.5 2002/08/23 16:27:31 itojun Exp $ */ | 3 | /* $OpenBSD: inet_ntop.c,v 1.5 2002/08/23 16:27:31 itojun Exp $ */ |
2 | 4 | ||
3 | /* Copyright (c) 1996 by Internet Software Consortium. | 5 | /* Copyright (c) 1996 by Internet Software Consortium. |
diff --git a/openbsd-compat/mktemp.c b/openbsd-compat/mktemp.c index 2cd747835..aff8d2005 100644 --- a/openbsd-compat/mktemp.c +++ b/openbsd-compat/mktemp.c | |||
@@ -1,3 +1,5 @@ | |||
1 | /* OPENBSD ORIGINAL: lib/libc/stdio/mktemp.c */ | ||
2 | |||
1 | /* THIS FILE HAS BEEN MODIFIED FROM THE ORIGINAL OPENBSD SOURCE */ | 3 | /* THIS FILE HAS BEEN MODIFIED FROM THE ORIGINAL OPENBSD SOURCE */ |
2 | /* Changes: Removed mktemp */ | 4 | /* Changes: Removed mktemp */ |
3 | 5 | ||
diff --git a/openbsd-compat/openbsd-compat.h b/openbsd-compat/openbsd-compat.h index 852948c54..6be1bcda4 100644 --- a/openbsd-compat/openbsd-compat.h +++ b/openbsd-compat/openbsd-compat.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: openbsd-compat.h,v 1.24 2003/08/29 16:59:52 mouring Exp $ */ | 1 | /* $Id: openbsd-compat.h,v 1.25 2004/01/21 06:07:23 djm Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 1999-2003 Damien Miller. All rights reserved. | 4 | * Copyright (c) 1999-2003 Damien Miller. All rights reserved. |
@@ -138,8 +138,9 @@ unsigned int arc4random(void); | |||
138 | void arc4random_stir(void); | 138 | void arc4random_stir(void); |
139 | #endif /* !HAVE_ARC4RANDOM */ | 139 | #endif /* !HAVE_ARC4RANDOM */ |
140 | 140 | ||
141 | 141 | #ifndef HAVE_OPENPTY | |
142 | 142 | int openpty(int *, int *, char *, struct termios *, struct winsize *); | |
143 | #endif /* HAVE_OPENPTY */ | ||
143 | 144 | ||
144 | /* #include <sys/types.h> XXX needed? For size_t */ | 145 | /* #include <sys/types.h> XXX needed? For size_t */ |
145 | 146 | ||
diff --git a/openbsd-compat/port-aix.c b/openbsd-compat/port-aix.c index 9fbcce936..2895f0d44 100644 --- a/openbsd-compat/port-aix.c +++ b/openbsd-compat/port-aix.c | |||
@@ -24,11 +24,13 @@ | |||
24 | * | 24 | * |
25 | */ | 25 | */ |
26 | #include "includes.h" | 26 | #include "includes.h" |
27 | #include "auth.h" | ||
27 | #include "ssh.h" | 28 | #include "ssh.h" |
28 | #include "log.h" | 29 | #include "log.h" |
29 | #include "servconf.h" | 30 | #include "servconf.h" |
30 | #include "canohost.h" | 31 | #include "canohost.h" |
31 | #include "xmalloc.h" | 32 | #include "xmalloc.h" |
33 | #include "buffer.h" | ||
32 | 34 | ||
33 | #ifdef _AIX | 35 | #ifdef _AIX |
34 | 36 | ||
@@ -36,6 +38,11 @@ | |||
36 | #include "port-aix.h" | 38 | #include "port-aix.h" |
37 | 39 | ||
38 | extern ServerOptions options; | 40 | extern ServerOptions options; |
41 | extern Buffer loginmsg; | ||
42 | |||
43 | # ifdef HAVE_SETAUTHDB | ||
44 | static char old_registry[REGISTRY_SIZE] = ""; | ||
45 | # endif | ||
39 | 46 | ||
40 | /* | 47 | /* |
41 | * AIX has a "usrinfo" area where logname and other stuff is stored - | 48 | * AIX has a "usrinfo" area where logname and other stuff is stored - |
@@ -63,7 +70,7 @@ aix_usrinfo(struct passwd *pw) | |||
63 | xfree(cp); | 70 | xfree(cp); |
64 | } | 71 | } |
65 | 72 | ||
66 | #ifdef WITH_AIXAUTHENTICATE | 73 | # ifdef WITH_AIXAUTHENTICATE |
67 | /* | 74 | /* |
68 | * Remove embedded newlines in string (if any). | 75 | * Remove embedded newlines in string (if any). |
69 | * Used before logging messages returned by AIX authentication functions | 76 | * Used before logging messages returned by AIX authentication functions |
@@ -83,41 +90,113 @@ aix_remove_embedded_newlines(char *p) | |||
83 | if (*--p == ' ') | 90 | if (*--p == ' ') |
84 | *p = '\0'; | 91 | *p = '\0'; |
85 | } | 92 | } |
86 | #endif /* WITH_AIXAUTHENTICATE */ | 93 | |
94 | /* | ||
95 | * Do authentication via AIX's authenticate routine. We loop until the | ||
96 | * reenter parameter is 0, but normally authenticate is called only once. | ||
97 | * | ||
98 | * Note: this function returns 1 on success, whereas AIX's authenticate() | ||
99 | * returns 0. | ||
100 | */ | ||
101 | int | ||
102 | sys_auth_passwd(Authctxt *ctxt, const char *password) | ||
103 | { | ||
104 | char *authmsg = NULL, *host, *msg, *name = ctxt->pw->pw_name; | ||
105 | int authsuccess = 0, expired, reenter, result; | ||
106 | |||
107 | do { | ||
108 | result = authenticate((char *)name, (char *)password, &reenter, | ||
109 | &authmsg); | ||
110 | aix_remove_embedded_newlines(authmsg); | ||
111 | debug3("AIX/authenticate result %d, msg %.100s", result, | ||
112 | authmsg); | ||
113 | } while (reenter); | ||
114 | |||
115 | if (result == 0) { | ||
116 | authsuccess = 1; | ||
117 | |||
118 | host = (char *)get_canonical_hostname(options.use_dns); | ||
119 | |||
120 | /* | ||
121 | * Record successful login. We don't have a pty yet, so just | ||
122 | * label the line as "ssh" | ||
123 | */ | ||
124 | aix_setauthdb(name); | ||
125 | if (loginsuccess((char *)name, (char *)host, "ssh", &msg) == 0) { | ||
126 | if (msg != NULL) { | ||
127 | debug("%s: msg %s", __func__, msg); | ||
128 | buffer_append(&loginmsg, msg, strlen(msg)); | ||
129 | xfree(msg); | ||
130 | } | ||
131 | } | ||
132 | |||
133 | /* | ||
134 | * Check if the user's password is expired. | ||
135 | */ | ||
136 | expired = passwdexpired(name, &msg); | ||
137 | if (msg && *msg) { | ||
138 | buffer_append(&loginmsg, msg, strlen(msg)); | ||
139 | aix_remove_embedded_newlines(msg); | ||
140 | } | ||
141 | debug3("AIX/passwdexpired returned %d msg %.100s", expired, msg); | ||
142 | |||
143 | switch (expired) { | ||
144 | case 0: /* password not expired */ | ||
145 | break; | ||
146 | case 1: /* expired, password change required */ | ||
147 | ctxt->force_pwchange = 1; | ||
148 | disable_forwarding(); | ||
149 | break; | ||
150 | default: /* user can't change(2) or other error (-1) */ | ||
151 | logit("Password can't be changed for user %s: %.100s", | ||
152 | name, msg); | ||
153 | if (msg) | ||
154 | xfree(msg); | ||
155 | authsuccess = 0; | ||
156 | } | ||
157 | |||
158 | aix_restoreauthdb(); | ||
159 | } | ||
160 | |||
161 | if (authmsg != NULL) | ||
162 | xfree(authmsg); | ||
163 | |||
164 | return authsuccess; | ||
165 | } | ||
87 | 166 | ||
88 | # ifdef CUSTOM_FAILED_LOGIN | 167 | # ifdef CUSTOM_FAILED_LOGIN |
89 | /* | 168 | /* |
90 | * record_failed_login: generic "login failed" interface function | 169 | * record_failed_login: generic "login failed" interface function |
91 | */ | 170 | */ |
92 | void | 171 | void |
93 | record_failed_login(const char *user, const char *ttyname) | 172 | record_failed_login(const char *user, const char *ttyname) |
94 | { | 173 | { |
95 | char *hostname = get_canonical_hostname(options.use_dns); | 174 | char *hostname = (char *)get_canonical_hostname(options.use_dns); |
96 | 175 | ||
97 | if (geteuid() != 0) | 176 | if (geteuid() != 0) |
98 | return; | 177 | return; |
99 | 178 | ||
100 | aix_setauthdb(user); | 179 | aix_setauthdb(user); |
101 | # ifdef AIX_LOGINFAILED_4ARG | 180 | # ifdef AIX_LOGINFAILED_4ARG |
102 | loginfailed((char *)user, hostname, (char *)ttyname, AUDIT_FAIL_AUTH); | 181 | loginfailed((char *)user, hostname, (char *)ttyname, AUDIT_FAIL_AUTH); |
103 | # else | 182 | # else |
104 | loginfailed((char *)user, hostname, (char *)ttyname); | 183 | loginfailed((char *)user, hostname, (char *)ttyname); |
105 | # endif | 184 | # endif |
185 | aix_restoreauthdb(); | ||
106 | } | 186 | } |
187 | # endif /* CUSTOM_FAILED_LOGIN */ | ||
107 | 188 | ||
108 | /* | 189 | /* |
109 | * If we have setauthdb, retrieve the password registry for the user's | 190 | * If we have setauthdb, retrieve the password registry for the user's |
110 | * account then feed it to setauthdb. This may load registry-specific method | 191 | * account then feed it to setauthdb. This will mean that subsequent AIX auth |
111 | * code. If we don't have setauthdb or have already called it this is a no-op. | 192 | * functions will only use the specified loadable module. If we don't have |
193 | * setauthdb this is a no-op. | ||
112 | */ | 194 | */ |
113 | void | 195 | void |
114 | aix_setauthdb(const char *user) | 196 | aix_setauthdb(const char *user) |
115 | { | 197 | { |
116 | # ifdef HAVE_SETAUTHDB | 198 | # ifdef HAVE_SETAUTHDB |
117 | static char *registry = NULL; | 199 | char *registry; |
118 | |||
119 | if (registry != NULL) /* have already done setauthdb */ | ||
120 | return; | ||
121 | 200 | ||
122 | if (setuserdb(S_READ) == -1) { | 201 | if (setuserdb(S_READ) == -1) { |
123 | debug3("%s: Could not open userdb to read", __func__); | 202 | debug3("%s: Could not open userdb to read", __func__); |
@@ -125,18 +204,37 @@ aix_setauthdb(const char *user) | |||
125 | } | 204 | } |
126 | 205 | ||
127 | if (getuserattr((char *)user, S_REGISTRY, ®istry, SEC_CHAR) == 0) { | 206 | if (getuserattr((char *)user, S_REGISTRY, ®istry, SEC_CHAR) == 0) { |
128 | if (setauthdb(registry, NULL) == 0) | 207 | if (setauthdb(registry, old_registry) == 0) |
129 | debug3("%s: AIX/setauthdb set registry %s", __func__, | 208 | debug3("AIX/setauthdb set registry '%s'", registry); |
130 | registry); | ||
131 | else | 209 | else |
132 | debug3("%s: AIX/setauthdb set registry %s failed: %s", | 210 | debug3("AIX/setauthdb set registry '%s' failed: %s", |
133 | __func__, registry, strerror(errno)); | 211 | registry, strerror(errno)); |
134 | } else | 212 | } else |
135 | debug3("%s: Could not read S_REGISTRY for user: %s", __func__, | 213 | debug3("%s: Could not read S_REGISTRY for user: %s", __func__, |
136 | strerror(errno)); | 214 | strerror(errno)); |
137 | enduserdb(); | 215 | enduserdb(); |
138 | # endif | 216 | # endif /* HAVE_SETAUTHDB */ |
139 | } | 217 | } |
140 | # endif /* CUSTOM_FAILED_LOGIN */ | ||
141 | #endif /* _AIX */ | ||
142 | 218 | ||
219 | /* | ||
220 | * Restore the user's registry settings from old_registry. | ||
221 | * Note that if the first aix_setauthdb fails, setauthdb("") is still safe | ||
222 | * (it restores the system default behaviour). If we don't have setauthdb, | ||
223 | * this is a no-op. | ||
224 | */ | ||
225 | void | ||
226 | aix_restoreauthdb(void) | ||
227 | { | ||
228 | # ifdef HAVE_SETAUTHDB | ||
229 | if (setauthdb(old_registry, NULL) == 0) | ||
230 | debug3("%s: restoring old registry '%s'", __func__, | ||
231 | old_registry); | ||
232 | else | ||
233 | debug3("%s: failed to restore old registry %s", __func__, | ||
234 | old_registry); | ||
235 | # endif /* HAVE_SETAUTHDB */ | ||
236 | } | ||
237 | |||
238 | # endif /* WITH_AIXAUTHENTICATE */ | ||
239 | |||
240 | #endif /* _AIX */ | ||
diff --git a/openbsd-compat/port-aix.h b/openbsd-compat/port-aix.h index 94c8c5119..3118af9a9 100644 --- a/openbsd-compat/port-aix.h +++ b/openbsd-compat/port-aix.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: port-aix.h,v 1.14.2.1 2003/09/19 10:46:22 dtucker Exp $ */ | 1 | /* $Id: port-aix.h,v 1.19 2004/02/10 04:27:35 dtucker Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * | 4 | * |
@@ -51,12 +51,23 @@ | |||
51 | # include <sys/timers.h> | 51 | # include <sys/timers.h> |
52 | #endif | 52 | #endif |
53 | 53 | ||
54 | /* | ||
55 | * According to the setauthdb man page, AIX password registries must be 15 | ||
56 | * chars or less plus terminating NUL. | ||
57 | */ | ||
58 | #ifdef HAVE_SETAUTHDB | ||
59 | # define REGISTRY_SIZE 16 | ||
60 | #endif | ||
61 | |||
62 | void aix_usrinfo(struct passwd *); | ||
63 | |||
54 | #ifdef WITH_AIXAUTHENTICATE | 64 | #ifdef WITH_AIXAUTHENTICATE |
65 | # define CUSTOM_SYS_AUTH_PASSWD 1 | ||
55 | # define CUSTOM_FAILED_LOGIN 1 | 66 | # define CUSTOM_FAILED_LOGIN 1 |
56 | void record_failed_login(const char *, const char *); | 67 | void record_failed_login(const char *, const char *); |
57 | void aix_setauthdb(const char *); | ||
58 | #endif | 68 | #endif |
59 | 69 | ||
60 | void aix_usrinfo(struct passwd *); | 70 | void aix_setauthdb(const char *); |
71 | void aix_restoreauthdb(void); | ||
61 | void aix_remove_embedded_newlines(char *); | 72 | void aix_remove_embedded_newlines(char *); |
62 | #endif /* _AIX */ | 73 | #endif /* _AIX */ |
diff --git a/openbsd-compat/readpassphrase.c b/openbsd-compat/readpassphrase.c index 0d0baf569..4ee1be5de 100644 --- a/openbsd-compat/readpassphrase.c +++ b/openbsd-compat/readpassphrase.c | |||
@@ -1,3 +1,5 @@ | |||
1 | /* OPENBSD ORIGINAL: lib/libc/gen/readpassphrase.c */ | ||
2 | |||
1 | /* $OpenBSD: readpassphrase.c,v 1.16 2003/06/17 21:56:23 millert Exp $ */ | 3 | /* $OpenBSD: readpassphrase.c,v 1.16 2003/06/17 21:56:23 millert Exp $ */ |
2 | 4 | ||
3 | /* | 5 | /* |
diff --git a/openbsd-compat/readpassphrase.h b/openbsd-compat/readpassphrase.h index 92908a489..178edf346 100644 --- a/openbsd-compat/readpassphrase.h +++ b/openbsd-compat/readpassphrase.h | |||
@@ -1,3 +1,5 @@ | |||
1 | /* OPENBSD ORIGINAL: include/readpassphrase.h */ | ||
2 | |||
1 | /* $OpenBSD: readpassphrase.h,v 1.3 2002/06/28 12:32:22 millert Exp $ */ | 3 | /* $OpenBSD: readpassphrase.h,v 1.3 2002/06/28 12:32:22 millert Exp $ */ |
2 | 4 | ||
3 | /* | 5 | /* |
diff --git a/openbsd-compat/realpath.c b/openbsd-compat/realpath.c index 77da14e7c..218fbecb2 100644 --- a/openbsd-compat/realpath.c +++ b/openbsd-compat/realpath.c | |||
@@ -1,3 +1,5 @@ | |||
1 | /* OPENBSD ORIGINAL: lib/libc/stdlib/realpath.c */ | ||
2 | |||
1 | /* | 3 | /* |
2 | * Copyright (c) 1994 | 4 | * Copyright (c) 1994 |
3 | * The Regents of the University of California. All rights reserved. | 5 | * The Regents of the University of California. All rights reserved. |
@@ -150,7 +152,7 @@ loop: | |||
150 | serrno = ENAMETOOLONG; | 152 | serrno = ENAMETOOLONG; |
151 | goto err1; | 153 | goto err1; |
152 | } | 154 | } |
153 | if (needslash == 0) | 155 | if (needslash) |
154 | strlcat(resolved, "/", MAXPATHLEN); | 156 | strlcat(resolved, "/", MAXPATHLEN); |
155 | strlcat(resolved, wbuf, MAXPATHLEN); | 157 | strlcat(resolved, wbuf, MAXPATHLEN); |
156 | } | 158 | } |
diff --git a/openbsd-compat/rresvport.c b/openbsd-compat/rresvport.c index 608a3b184..75167065c 100644 --- a/openbsd-compat/rresvport.c +++ b/openbsd-compat/rresvport.c | |||
@@ -1,3 +1,5 @@ | |||
1 | /* OPENBSD ORIGINAL: lib/libc/net/rresvport.c */ | ||
2 | |||
1 | /* | 3 | /* |
2 | * Copyright (c) 1995, 1996, 1998 Theo de Raadt. All rights reserved. | 4 | * Copyright (c) 1995, 1996, 1998 Theo de Raadt. All rights reserved. |
3 | * Copyright (c) 1983, 1993, 1994 | 5 | * Copyright (c) 1983, 1993, 1994 |
diff --git a/openbsd-compat/setenv.c b/openbsd-compat/setenv.c index c9941c195..b7ba0ce83 100644 --- a/openbsd-compat/setenv.c +++ b/openbsd-compat/setenv.c | |||
@@ -1,3 +1,5 @@ | |||
1 | /* OPENBSD ORIGINAL: lib/libc/stdlib/setenv.c */ | ||
2 | |||
1 | /* | 3 | /* |
2 | * Copyright (c) 1987 Regents of the University of California. | 4 | * Copyright (c) 1987 Regents of the University of California. |
3 | * All rights reserved. | 5 | * All rights reserved. |
diff --git a/openbsd-compat/setproctitle.c b/openbsd-compat/setproctitle.c index b41100fc6..6e2b19bb4 100644 --- a/openbsd-compat/setproctitle.c +++ b/openbsd-compat/setproctitle.c | |||
@@ -41,8 +41,8 @@ | |||
41 | #endif | 41 | #endif |
42 | 42 | ||
43 | #define SPT_NONE 0 /* don't use it at all */ | 43 | #define SPT_NONE 0 /* don't use it at all */ |
44 | #define SPT_PSTAT 1 /* cover argv with title information */ | 44 | #define SPT_PSTAT 1 /* use pstat(PSTAT_SETCMD, ...) */ |
45 | #define SPT_REUSEARGV 2 /* use pstat(PSTAT_SETCMD, ...) */ | 45 | #define SPT_REUSEARGV 2 /* cover argv with title information */ |
46 | 46 | ||
47 | #ifndef SPT_TYPE | 47 | #ifndef SPT_TYPE |
48 | # define SPT_TYPE SPT_NONE | 48 | # define SPT_TYPE SPT_NONE |
diff --git a/openbsd-compat/sigact.c b/openbsd-compat/sigact.c index 35fbab0eb..2772ac574 100644 --- a/openbsd-compat/sigact.c +++ b/openbsd-compat/sigact.c | |||
@@ -1,3 +1,5 @@ | |||
1 | /* OPENBSD ORIGINAL: lib/libcurses/base/sigaction.c */ | ||
2 | |||
1 | /* $OpenBSD: sigaction.c,v 1.3 1999/06/27 08:14:21 millert Exp $ */ | 3 | /* $OpenBSD: sigaction.c,v 1.3 1999/06/27 08:14:21 millert Exp $ */ |
2 | 4 | ||
3 | /**************************************************************************** | 5 | /**************************************************************************** |
diff --git a/openbsd-compat/strlcat.c b/openbsd-compat/strlcat.c index cae16657c..70f01cb2a 100644 --- a/openbsd-compat/strlcat.c +++ b/openbsd-compat/strlcat.c | |||
@@ -1,3 +1,5 @@ | |||
1 | /* OPENBSD ORIGINAL: lib/libc/string/strlcat.c */ | ||
2 | |||
1 | /* $OpenBSD: strlcat.c,v 1.11 2003/06/17 21:56:24 millert Exp $ */ | 3 | /* $OpenBSD: strlcat.c,v 1.11 2003/06/17 21:56:24 millert Exp $ */ |
2 | 4 | ||
3 | /* | 5 | /* |
diff --git a/openbsd-compat/strlcpy.c b/openbsd-compat/strlcpy.c index c8fe29987..ccfa12a0a 100644 --- a/openbsd-compat/strlcpy.c +++ b/openbsd-compat/strlcpy.c | |||
@@ -1,3 +1,5 @@ | |||
1 | /* OPENBSD ORIGINAL: lib/libc/string/strlcpy.c */ | ||
2 | |||
1 | /* $OpenBSD: strlcpy.c,v 1.8 2003/06/17 21:56:24 millert Exp $ */ | 3 | /* $OpenBSD: strlcpy.c,v 1.8 2003/06/17 21:56:24 millert Exp $ */ |
2 | 4 | ||
3 | /* | 5 | /* |
diff --git a/openbsd-compat/strmode.c b/openbsd-compat/strmode.c index adf5e273e..ea8d515e3 100644 --- a/openbsd-compat/strmode.c +++ b/openbsd-compat/strmode.c | |||
@@ -1,3 +1,5 @@ | |||
1 | /* OPENBSD ORIGINAL: lib/libc/string/strmode.c */ | ||
2 | |||
1 | /*- | 3 | /*- |
2 | * Copyright (c) 1990 The Regents of the University of California. | 4 | * Copyright (c) 1990 The Regents of the University of California. |
3 | * All rights reserved. | 5 | * All rights reserved. |
diff --git a/openbsd-compat/strsep.c b/openbsd-compat/strsep.c index b13671343..330d84ce1 100644 --- a/openbsd-compat/strsep.c +++ b/openbsd-compat/strsep.c | |||
@@ -1,3 +1,5 @@ | |||
1 | /* OPENBSD ORIGINAL: lib/libc/string/strsep.c */ | ||
2 | |||
1 | /* $OpenBSD: strsep.c,v 1.5 2003/06/11 21:08:16 deraadt Exp $ */ | 3 | /* $OpenBSD: strsep.c,v 1.5 2003/06/11 21:08:16 deraadt Exp $ */ |
2 | 4 | ||
3 | /*- | 5 | /*- |
diff --git a/openbsd-compat/strtoul.c b/openbsd-compat/strtoul.c new file mode 100644 index 000000000..24d0e253d --- /dev/null +++ b/openbsd-compat/strtoul.c | |||
@@ -0,0 +1,114 @@ | |||
1 | /* OPENBSD ORIGINAL: lib/libc/stdlib/strtoul.c */ | ||
2 | |||
3 | /* | ||
4 | * Copyright (c) 1990 Regents of the University of California. | ||
5 | * All rights reserved. | ||
6 | * | ||
7 | * Redistribution and use in source and binary forms, with or without | ||
8 | * modification, are permitted provided that the following conditions | ||
9 | * are met: | ||
10 | * 1. Redistributions of source code must retain the above copyright | ||
11 | * notice, this list of conditions and the following disclaimer. | ||
12 | * 2. Redistributions in binary form must reproduce the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer in the | ||
14 | * documentation and/or other materials provided with the distribution. | ||
15 | * 3. Neither the name of the University nor the names of its contributors | ||
16 | * may be used to endorse or promote products derived from this software | ||
17 | * without specific prior written permission. | ||
18 | * | ||
19 | * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND | ||
20 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
21 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
22 | * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE | ||
23 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
24 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
25 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
26 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
27 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
28 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
29 | * SUCH DAMAGE. | ||
30 | */ | ||
31 | |||
32 | #include "includes.h" | ||
33 | #ifndef HAVE_STRTOUL | ||
34 | |||
35 | #if defined(LIBC_SCCS) && !defined(lint) | ||
36 | static char *rcsid = "$OpenBSD: strtoul.c,v 1.5 2003/06/02 20:18:38 millert Exp $"; | ||
37 | #endif /* LIBC_SCCS and not lint */ | ||
38 | |||
39 | #include <ctype.h> | ||
40 | #include <errno.h> | ||
41 | #include <limits.h> | ||
42 | #include <stdlib.h> | ||
43 | |||
44 | /* | ||
45 | * Convert a string to an unsigned long integer. | ||
46 | * | ||
47 | * Ignores `locale' stuff. Assumes that the upper and lower case | ||
48 | * alphabets and digits are each contiguous. | ||
49 | */ | ||
50 | unsigned long | ||
51 | strtoul(nptr, endptr, base) | ||
52 | const char *nptr; | ||
53 | char **endptr; | ||
54 | register int base; | ||
55 | { | ||
56 | register const char *s; | ||
57 | register unsigned long acc, cutoff; | ||
58 | register int c; | ||
59 | register int neg, any, cutlim; | ||
60 | |||
61 | /* | ||
62 | * See strtol for comments as to the logic used. | ||
63 | */ | ||
64 | s = nptr; | ||
65 | do { | ||
66 | c = (unsigned char) *s++; | ||
67 | } while (isspace(c)); | ||
68 | if (c == '-') { | ||
69 | neg = 1; | ||
70 | c = *s++; | ||
71 | } else { | ||
72 | neg = 0; | ||
73 | if (c == '+') | ||
74 | c = *s++; | ||
75 | } | ||
76 | if ((base == 0 || base == 16) && | ||
77 | c == '0' && (*s == 'x' || *s == 'X')) { | ||
78 | c = s[1]; | ||
79 | s += 2; | ||
80 | base = 16; | ||
81 | } | ||
82 | if (base == 0) | ||
83 | base = c == '0' ? 8 : 10; | ||
84 | |||
85 | cutoff = ULONG_MAX / (unsigned long)base; | ||
86 | cutlim = ULONG_MAX % (unsigned long)base; | ||
87 | for (acc = 0, any = 0;; c = (unsigned char) *s++) { | ||
88 | if (isdigit(c)) | ||
89 | c -= '0'; | ||
90 | else if (isalpha(c)) | ||
91 | c -= isupper(c) ? 'A' - 10 : 'a' - 10; | ||
92 | else | ||
93 | break; | ||
94 | if (c >= base) | ||
95 | break; | ||
96 | if (any < 0) | ||
97 | continue; | ||
98 | if (acc > cutoff || acc == cutoff && c > cutlim) { | ||
99 | any = -1; | ||
100 | acc = ULONG_MAX; | ||
101 | errno = ERANGE; | ||
102 | } else { | ||
103 | any = 1; | ||
104 | acc *= (unsigned long)base; | ||
105 | acc += c; | ||
106 | } | ||
107 | } | ||
108 | if (neg && any > 0) | ||
109 | acc = -acc; | ||
110 | if (endptr != 0) | ||
111 | *endptr = (char *) (any ? s - 1 : nptr); | ||
112 | return (acc); | ||
113 | } | ||
114 | #endif /* !HAVE_STRTOUL */ | ||
diff --git a/openbsd-compat/sys-queue.h b/openbsd-compat/sys-queue.h index dd5c47525..8ff19e452 100644 --- a/openbsd-compat/sys-queue.h +++ b/openbsd-compat/sys-queue.h | |||
@@ -1,3 +1,5 @@ | |||
1 | /* OPENBSD ORIGINAL: sys/sys/queue.h */ | ||
2 | |||
1 | /* $OpenBSD: queue.h,v 1.23 2003/06/02 23:28:21 millert Exp $ */ | 3 | /* $OpenBSD: queue.h,v 1.23 2003/06/02 23:28:21 millert Exp $ */ |
2 | /* $NetBSD: queue.h,v 1.11 1996/05/16 05:17:14 mycroft Exp $ */ | 4 | /* $NetBSD: queue.h,v 1.11 1996/05/16 05:17:14 mycroft Exp $ */ |
3 | 5 | ||
diff --git a/openbsd-compat/sys-tree.h b/openbsd-compat/sys-tree.h index 927ca04cd..73cfbe72a 100644 --- a/openbsd-compat/sys-tree.h +++ b/openbsd-compat/sys-tree.h | |||
@@ -1,3 +1,5 @@ | |||
1 | /* OPENBSD ORIGINAL: sys/sys/tree.h */ | ||
2 | |||
1 | /* $OpenBSD: tree.h,v 1.7 2002/10/17 21:51:54 art Exp $ */ | 3 | /* $OpenBSD: tree.h,v 1.7 2002/10/17 21:51:54 art Exp $ */ |
2 | /* | 4 | /* |
3 | * Copyright 2002 Niels Provos <provos@citi.umich.edu> | 5 | * Copyright 2002 Niels Provos <provos@citi.umich.edu> |
diff --git a/openbsd-compat/vis.c b/openbsd-compat/vis.c index e6a2ce98d..1fb7a01e3 100644 --- a/openbsd-compat/vis.c +++ b/openbsd-compat/vis.c | |||
@@ -1,3 +1,5 @@ | |||
1 | /* OPENBSD ORIGINAL: lib/libc/gen/vis.c */ | ||
2 | |||
1 | /*- | 3 | /*- |
2 | * Copyright (c) 1989, 1993 | 4 | * Copyright (c) 1989, 1993 |
3 | * The Regents of the University of California. All rights reserved. | 5 | * The Regents of the University of California. All rights reserved. |
diff --git a/openbsd-compat/vis.h b/openbsd-compat/vis.h index 1c131cc85..663355a24 100644 --- a/openbsd-compat/vis.h +++ b/openbsd-compat/vis.h | |||
@@ -1,3 +1,5 @@ | |||
1 | /* OPENBSD ORIGINAL: include/vis.h */ | ||
2 | |||
1 | /* $OpenBSD: vis.h,v 1.6 2003/06/02 19:34:12 millert Exp $ */ | 3 | /* $OpenBSD: vis.h,v 1.6 2003/06/02 19:34:12 millert Exp $ */ |
2 | /* $NetBSD: vis.h,v 1.4 1994/10/26 00:56:41 cgd Exp $ */ | 4 | /* $NetBSD: vis.h,v 1.4 1994/10/26 00:56:41 cgd Exp $ */ |
3 | 5 | ||
diff --git a/openbsd-compat/xcrypt.c b/openbsd-compat/xcrypt.c index 5b5d69c72..a0fe6c620 100644 --- a/openbsd-compat/xcrypt.c +++ b/openbsd-compat/xcrypt.c | |||
@@ -104,10 +104,6 @@ shadow_pw(struct passwd *pw) | |||
104 | 104 | ||
105 | if (spw != NULL) | 105 | if (spw != NULL) |
106 | pw_password = spw->ufld.fd_encrypt; | 106 | pw_password = spw->ufld.fd_encrypt; |
107 | # elif defined(__hpux) && !defined(HAVE_SECUREWARE) | ||
108 | struct pr_passwd *spw; | ||
109 | if (iscomsec() && (spw = getprpwnam(pw->pw_name)) != NULL) | ||
110 | pw_password = spw->ufld.fd_encrypt; | ||
111 | # endif | 107 | # endif |
112 | 108 | ||
113 | return pw_password; | 109 | return pw_password; |
@@ -37,7 +37,7 @@ | |||
37 | */ | 37 | */ |
38 | 38 | ||
39 | #include "includes.h" | 39 | #include "includes.h" |
40 | RCSID("$OpenBSD: packet.c,v 1.110 2003/09/19 09:02:02 markus Exp $"); | 40 | RCSID("$OpenBSD: packet.c,v 1.112 2003/09/23 20:17:11 markus Exp $"); |
41 | 41 | ||
42 | #include "openbsd-compat/sys-queue.h" | 42 | #include "openbsd-compat/sys-queue.h" |
43 | 43 | ||
@@ -165,8 +165,6 @@ packet_set_connection(int fd_in, int fd_out) | |||
165 | buffer_init(&incoming_packet); | 165 | buffer_init(&incoming_packet); |
166 | TAILQ_INIT(&outgoing); | 166 | TAILQ_INIT(&outgoing); |
167 | } | 167 | } |
168 | /* Kludge: arrange the close function to be called from fatal(). */ | ||
169 | fatal_add_cleanup((void (*) (void *)) packet_close, NULL); | ||
170 | } | 168 | } |
171 | 169 | ||
172 | /* Returns 1 if remote host is connected via socket, 0 if not. */ | 170 | /* Returns 1 if remote host is connected via socket, 0 if not. */ |
@@ -306,7 +304,7 @@ packet_connection_is_ipv4(void) | |||
306 | if (to.ss_family == AF_INET) | 304 | if (to.ss_family == AF_INET) |
307 | return 1; | 305 | return 1; |
308 | #ifdef IPV4_IN_IPV6 | 306 | #ifdef IPV4_IN_IPV6 |
309 | if (to.ss_family == AF_INET6 && | 307 | if (to.ss_family == AF_INET6 && |
310 | IN6_IS_ADDR_V4MAPPED(&((struct sockaddr_in6 *)&to)->sin6_addr)) | 308 | IN6_IS_ADDR_V4MAPPED(&((struct sockaddr_in6 *)&to)->sin6_addr)) |
311 | return 1; | 309 | return 1; |
312 | #endif | 310 | #endif |
@@ -870,7 +868,7 @@ packet_read_seqnr(u_int32_t *seqnr_p) | |||
870 | len = read(connection_in, buf, sizeof(buf)); | 868 | len = read(connection_in, buf, sizeof(buf)); |
871 | if (len == 0) { | 869 | if (len == 0) { |
872 | logit("Connection closed by %.200s", get_remote_ipaddr()); | 870 | logit("Connection closed by %.200s", get_remote_ipaddr()); |
873 | fatal_cleanup(); | 871 | cleanup_exit(255); |
874 | } | 872 | } |
875 | if (len < 0) | 873 | if (len < 0) |
876 | fatal("Read from socket failed: %.100s", strerror(errno)); | 874 | fatal("Read from socket failed: %.100s", strerror(errno)); |
@@ -1136,7 +1134,7 @@ packet_read_poll_seqnr(u_int32_t *seqnr_p) | |||
1136 | logit("Received disconnect from %s: %u: %.400s", | 1134 | logit("Received disconnect from %s: %u: %.400s", |
1137 | get_remote_ipaddr(), reason, msg); | 1135 | get_remote_ipaddr(), reason, msg); |
1138 | xfree(msg); | 1136 | xfree(msg); |
1139 | fatal_cleanup(); | 1137 | cleanup_exit(255); |
1140 | break; | 1138 | break; |
1141 | case SSH2_MSG_UNIMPLEMENTED: | 1139 | case SSH2_MSG_UNIMPLEMENTED: |
1142 | seqnr = packet_get_int(); | 1140 | seqnr = packet_get_int(); |
@@ -1161,7 +1159,7 @@ packet_read_poll_seqnr(u_int32_t *seqnr_p) | |||
1161 | msg = packet_get_string(NULL); | 1159 | msg = packet_get_string(NULL); |
1162 | logit("Received disconnect from %s: %.400s", | 1160 | logit("Received disconnect from %s: %.400s", |
1163 | get_remote_ipaddr(), msg); | 1161 | get_remote_ipaddr(), msg); |
1164 | fatal_cleanup(); | 1162 | cleanup_exit(255); |
1165 | xfree(msg); | 1163 | xfree(msg); |
1166 | break; | 1164 | break; |
1167 | default: | 1165 | default: |
@@ -1338,8 +1336,7 @@ packet_disconnect(const char *fmt,...) | |||
1338 | 1336 | ||
1339 | /* Close the connection. */ | 1337 | /* Close the connection. */ |
1340 | packet_close(); | 1338 | packet_close(); |
1341 | 1339 | cleanup_exit(255); | |
1342 | fatal_cleanup(); | ||
1343 | } | 1340 | } |
1344 | 1341 | ||
1345 | /* Checks if there is any buffered output, and tries to write some of the output. */ | 1342 | /* Checks if there is any buffered output, and tries to write some of the output. */ |
@@ -1406,10 +1403,10 @@ packet_not_very_much_data_to_write(void) | |||
1406 | } | 1403 | } |
1407 | 1404 | ||
1408 | 1405 | ||
1409 | #if defined(IP_TOS) && !defined(IP_TOS_IS_BROKEN) | ||
1410 | static void | 1406 | static void |
1411 | packet_set_tos(int interactive) | 1407 | packet_set_tos(int interactive) |
1412 | { | 1408 | { |
1409 | #if defined(IP_TOS) && !defined(IP_TOS_IS_BROKEN) | ||
1413 | int tos = interactive ? IPTOS_LOWDELAY : IPTOS_THROUGHPUT; | 1410 | int tos = interactive ? IPTOS_LOWDELAY : IPTOS_THROUGHPUT; |
1414 | 1411 | ||
1415 | if (!packet_connection_is_on_socket() || | 1412 | if (!packet_connection_is_on_socket() || |
@@ -1419,8 +1416,8 @@ packet_set_tos(int interactive) | |||
1419 | sizeof(tos)) < 0) | 1416 | sizeof(tos)) < 0) |
1420 | error("setsockopt IP_TOS %d: %.100s:", | 1417 | error("setsockopt IP_TOS %d: %.100s:", |
1421 | tos, strerror(errno)); | 1418 | tos, strerror(errno)); |
1422 | } | ||
1423 | #endif | 1419 | #endif |
1420 | } | ||
1424 | 1421 | ||
1425 | /* Informs that the current session is interactive. Sets IP flags for that. */ | 1422 | /* Informs that the current session is interactive. Sets IP flags for that. */ |
1426 | 1423 | ||
@@ -1441,10 +1438,7 @@ packet_set_interactive(int interactive) | |||
1441 | return; | 1438 | return; |
1442 | if (interactive) | 1439 | if (interactive) |
1443 | set_nodelay(connection_in); | 1440 | set_nodelay(connection_in); |
1444 | #if defined(IP_TOS) && !defined(IP_TOS_IS_BROKEN) | ||
1445 | packet_set_tos(interactive); | 1441 | packet_set_tos(interactive); |
1446 | #endif | ||
1447 | |||
1448 | } | 1442 | } |
1449 | 1443 | ||
1450 | /* Returns true if the current connection is interactive. */ | 1444 | /* Returns true if the current connection is interactive. */ |
diff --git a/pathnames.h b/pathnames.h index 89e22c77a..53208cf58 100644 --- a/pathnames.h +++ b/pathnames.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: pathnames.h,v 1.13 2002/05/23 19:24:30 markus Exp $ */ | 1 | /* $OpenBSD: pathnames.h,v 1.14 2004/01/30 09:48:57 markus Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> | 4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> |
@@ -150,6 +150,11 @@ | |||
150 | #define _PATH_PRIVSEP_CHROOT_DIR "/var/empty" | 150 | #define _PATH_PRIVSEP_CHROOT_DIR "/var/empty" |
151 | #endif | 151 | #endif |
152 | 152 | ||
153 | /* for passwd change */ | ||
154 | #ifndef _PATH_PASSWD_PROG | ||
155 | #define _PATH_PASSWD_PROG "/usr/bin/passwd" | ||
156 | #endif | ||
157 | |||
153 | #ifndef _PATH_LS | 158 | #ifndef _PATH_LS |
154 | #define _PATH_LS "ls" | 159 | #define _PATH_LS "ls" |
155 | #endif | 160 | #endif |
diff --git a/progressmeter.c b/progressmeter.c index c315464ee..f42668526 100644 --- a/progressmeter.c +++ b/progressmeter.c | |||
@@ -23,7 +23,7 @@ | |||
23 | */ | 23 | */ |
24 | 24 | ||
25 | #include "includes.h" | 25 | #include "includes.h" |
26 | RCSID("$OpenBSD: progressmeter.c,v 1.15 2003/08/31 12:14:22 markus Exp $"); | 26 | RCSID("$OpenBSD: progressmeter.c,v 1.19 2004/02/05 15:33:33 markus Exp $"); |
27 | 27 | ||
28 | #include "progressmeter.h" | 28 | #include "progressmeter.h" |
29 | #include "atomicio.h" | 29 | #include "atomicio.h" |
@@ -80,7 +80,7 @@ format_rate(char *buf, int size, off_t bytes) | |||
80 | bytes = (bytes + 512) / 1024; | 80 | bytes = (bytes + 512) / 1024; |
81 | } | 81 | } |
82 | snprintf(buf, size, "%3lld.%1lld%c%s", | 82 | snprintf(buf, size, "%3lld.%1lld%c%s", |
83 | (int64_t) bytes / 100, | 83 | (int64_t) (bytes + 5) / 100, |
84 | (int64_t) (bytes + 5) / 10 % 10, | 84 | (int64_t) (bytes + 5) / 10 % 10, |
85 | unit[i], | 85 | unit[i], |
86 | i ? "B" : " "); | 86 | i ? "B" : " "); |
@@ -107,7 +107,7 @@ refresh_progress_meter(void) | |||
107 | off_t transferred; | 107 | off_t transferred; |
108 | double elapsed; | 108 | double elapsed; |
109 | int percent; | 109 | int percent; |
110 | int bytes_left; | 110 | off_t bytes_left; |
111 | int cur_speed; | 111 | int cur_speed; |
112 | int hours, minutes, seconds; | 112 | int hours, minutes, seconds; |
113 | int i, len; | 113 | int i, len; |
@@ -120,14 +120,18 @@ refresh_progress_meter(void) | |||
120 | 120 | ||
121 | if (bytes_left > 0) | 121 | if (bytes_left > 0) |
122 | elapsed = now - last_update; | 122 | elapsed = now - last_update; |
123 | else | 123 | else { |
124 | elapsed = now - start; | 124 | elapsed = now - start; |
125 | /* Calculate true total speed when done */ | ||
126 | transferred = end_pos; | ||
127 | bytes_per_second = 0; | ||
128 | } | ||
125 | 129 | ||
126 | /* calculate speed */ | 130 | /* calculate speed */ |
127 | if (elapsed != 0) | 131 | if (elapsed != 0) |
128 | cur_speed = (transferred / elapsed); | 132 | cur_speed = (transferred / elapsed); |
129 | else | 133 | else |
130 | cur_speed = 0; | 134 | cur_speed = transferred; |
131 | 135 | ||
132 | #define AGE_FACTOR 0.9 | 136 | #define AGE_FACTOR 0.9 |
133 | if (bytes_per_second != 0) { | 137 | if (bytes_per_second != 0) { |
@@ -200,7 +204,7 @@ refresh_progress_meter(void) | |||
200 | strlcat(buf, " ", win_size); | 204 | strlcat(buf, " ", win_size); |
201 | } | 205 | } |
202 | 206 | ||
203 | atomicio(vwrite, STDOUT_FILENO, buf, win_size); | 207 | atomicio(vwrite, STDOUT_FILENO, buf, win_size - 1); |
204 | last_update = now; | 208 | last_update = now; |
205 | } | 209 | } |
206 | 210 | ||
diff --git a/readconf.c b/readconf.c index 13987ffa7..2591e0dba 100644 --- a/readconf.c +++ b/readconf.c | |||
@@ -12,7 +12,7 @@ | |||
12 | */ | 12 | */ |
13 | 13 | ||
14 | #include "includes.h" | 14 | #include "includes.h" |
15 | RCSID("$OpenBSD: readconf.c,v 1.121 2003/09/01 18:15:50 markus Exp $"); | 15 | RCSID("$OpenBSD: readconf.c,v 1.127 2003/12/16 15:49:51 markus Exp $"); |
16 | 16 | ||
17 | #include "ssh.h" | 17 | #include "ssh.h" |
18 | #include "xmalloc.h" | 18 | #include "xmalloc.h" |
@@ -78,7 +78,7 @@ RCSID("$OpenBSD: readconf.c,v 1.121 2003/09/01 18:15:50 markus Exp $"); | |||
78 | RSAAuthentication yes | 78 | RSAAuthentication yes |
79 | RhostsRSAAuthentication yes | 79 | RhostsRSAAuthentication yes |
80 | StrictHostKeyChecking yes | 80 | StrictHostKeyChecking yes |
81 | KeepAlives no | 81 | TcpKeepAlive no |
82 | IdentityFile ~/.ssh/identity | 82 | IdentityFile ~/.ssh/identity |
83 | Port 22 | 83 | Port 22 |
84 | EscapeChar ~ | 84 | EscapeChar ~ |
@@ -89,14 +89,14 @@ RCSID("$OpenBSD: readconf.c,v 1.121 2003/09/01 18:15:50 markus Exp $"); | |||
89 | 89 | ||
90 | typedef enum { | 90 | typedef enum { |
91 | oBadOption, | 91 | oBadOption, |
92 | oForwardAgent, oForwardX11, oGatewayPorts, | 92 | oForwardAgent, oForwardX11, oForwardX11Trusted, oGatewayPorts, |
93 | oPasswordAuthentication, oRSAAuthentication, | 93 | oPasswordAuthentication, oRSAAuthentication, |
94 | oChallengeResponseAuthentication, oXAuthLocation, | 94 | oChallengeResponseAuthentication, oXAuthLocation, |
95 | oIdentityFile, oHostName, oPort, oCipher, oRemoteForward, oLocalForward, | 95 | oIdentityFile, oHostName, oPort, oCipher, oRemoteForward, oLocalForward, |
96 | oUser, oHost, oEscapeChar, oRhostsRSAAuthentication, oProxyCommand, | 96 | oUser, oHost, oEscapeChar, oRhostsRSAAuthentication, oProxyCommand, |
97 | oGlobalKnownHostsFile, oUserKnownHostsFile, oConnectionAttempts, | 97 | oGlobalKnownHostsFile, oUserKnownHostsFile, oConnectionAttempts, |
98 | oBatchMode, oCheckHostIP, oStrictHostKeyChecking, oCompression, | 98 | oBatchMode, oCheckHostIP, oStrictHostKeyChecking, oCompression, |
99 | oCompressionLevel, oKeepAlives, oNumberOfPasswordPrompts, | 99 | oCompressionLevel, oTCPKeepAlive, oNumberOfPasswordPrompts, |
100 | oUsePrivilegedPort, oLogLevel, oCiphers, oProtocol, oMacs, | 100 | oUsePrivilegedPort, oLogLevel, oCiphers, oProtocol, oMacs, |
101 | oGlobalKnownHostsFile2, oUserKnownHostsFile2, oPubkeyAuthentication, | 101 | oGlobalKnownHostsFile2, oUserKnownHostsFile2, oPubkeyAuthentication, |
102 | oKbdInteractiveAuthentication, oKbdInteractiveDevices, oHostKeyAlias, | 102 | oKbdInteractiveAuthentication, oKbdInteractiveDevices, oHostKeyAlias, |
@@ -105,6 +105,7 @@ typedef enum { | |||
105 | oClearAllForwardings, oNoHostAuthenticationForLocalhost, | 105 | oClearAllForwardings, oNoHostAuthenticationForLocalhost, |
106 | oEnableSSHKeysign, oRekeyLimit, oVerifyHostKeyDNS, oConnectTimeout, | 106 | oEnableSSHKeysign, oRekeyLimit, oVerifyHostKeyDNS, oConnectTimeout, |
107 | oAddressFamily, oGssAuthentication, oGssDelegateCreds, | 107 | oAddressFamily, oGssAuthentication, oGssDelegateCreds, |
108 | oServerAliveInterval, oServerAliveCountMax, | ||
108 | oDeprecated, oUnsupported | 109 | oDeprecated, oUnsupported |
109 | } OpCodes; | 110 | } OpCodes; |
110 | 111 | ||
@@ -116,6 +117,7 @@ static struct { | |||
116 | } keywords[] = { | 117 | } keywords[] = { |
117 | { "forwardagent", oForwardAgent }, | 118 | { "forwardagent", oForwardAgent }, |
118 | { "forwardx11", oForwardX11 }, | 119 | { "forwardx11", oForwardX11 }, |
120 | { "forwardx11trusted", oForwardX11Trusted }, | ||
119 | { "xauthlocation", oXAuthLocation }, | 121 | { "xauthlocation", oXAuthLocation }, |
120 | { "gatewayports", oGatewayPorts }, | 122 | { "gatewayports", oGatewayPorts }, |
121 | { "useprivilegedport", oUsePrivilegedPort }, | 123 | { "useprivilegedport", oUsePrivilegedPort }, |
@@ -168,7 +170,8 @@ static struct { | |||
168 | { "stricthostkeychecking", oStrictHostKeyChecking }, | 170 | { "stricthostkeychecking", oStrictHostKeyChecking }, |
169 | { "compression", oCompression }, | 171 | { "compression", oCompression }, |
170 | { "compressionlevel", oCompressionLevel }, | 172 | { "compressionlevel", oCompressionLevel }, |
171 | { "keepalive", oKeepAlives }, | 173 | { "tcpkeepalive", oTCPKeepAlive }, |
174 | { "keepalive", oTCPKeepAlive }, /* obsolete */ | ||
172 | { "numberofpasswordprompts", oNumberOfPasswordPrompts }, | 175 | { "numberofpasswordprompts", oNumberOfPasswordPrompts }, |
173 | { "loglevel", oLogLevel }, | 176 | { "loglevel", oLogLevel }, |
174 | { "dynamicforward", oDynamicForward }, | 177 | { "dynamicforward", oDynamicForward }, |
@@ -182,15 +185,13 @@ static struct { | |||
182 | #endif | 185 | #endif |
183 | { "clearallforwardings", oClearAllForwardings }, | 186 | { "clearallforwardings", oClearAllForwardings }, |
184 | { "enablesshkeysign", oEnableSSHKeysign }, | 187 | { "enablesshkeysign", oEnableSSHKeysign }, |
185 | #ifdef DNS | ||
186 | { "verifyhostkeydns", oVerifyHostKeyDNS }, | 188 | { "verifyhostkeydns", oVerifyHostKeyDNS }, |
187 | #else | ||
188 | { "verifyhostkeydns", oUnsupported }, | ||
189 | #endif | ||
190 | { "nohostauthenticationforlocalhost", oNoHostAuthenticationForLocalhost }, | 189 | { "nohostauthenticationforlocalhost", oNoHostAuthenticationForLocalhost }, |
191 | { "rekeylimit", oRekeyLimit }, | 190 | { "rekeylimit", oRekeyLimit }, |
192 | { "connecttimeout", oConnectTimeout }, | 191 | { "connecttimeout", oConnectTimeout }, |
193 | { "addressfamily", oAddressFamily }, | 192 | { "addressfamily", oAddressFamily }, |
193 | { "serveraliveinterval", oServerAliveInterval }, | ||
194 | { "serveralivecountmax", oServerAliveCountMax }, | ||
194 | { NULL, oBadOption } | 195 | { NULL, oBadOption } |
195 | }; | 196 | }; |
196 | 197 | ||
@@ -309,7 +310,7 @@ process_config_line(Options *options, const char *host, | |||
309 | /* NOTREACHED */ | 310 | /* NOTREACHED */ |
310 | case oConnectTimeout: | 311 | case oConnectTimeout: |
311 | intptr = &options->connection_timeout; | 312 | intptr = &options->connection_timeout; |
312 | /* parse_time: */ | 313 | parse_time: |
313 | arg = strdelim(&s); | 314 | arg = strdelim(&s); |
314 | if (!arg || *arg == '\0') | 315 | if (!arg || *arg == '\0') |
315 | fatal("%s line %d: missing time value.", | 316 | fatal("%s line %d: missing time value.", |
@@ -342,6 +343,10 @@ parse_flag: | |||
342 | intptr = &options->forward_x11; | 343 | intptr = &options->forward_x11; |
343 | goto parse_flag; | 344 | goto parse_flag; |
344 | 345 | ||
346 | case oForwardX11Trusted: | ||
347 | intptr = &options->forward_x11_trusted; | ||
348 | goto parse_flag; | ||
349 | |||
345 | case oGatewayPorts: | 350 | case oGatewayPorts: |
346 | intptr = &options->gateway_ports; | 351 | intptr = &options->gateway_ports; |
347 | goto parse_flag; | 352 | goto parse_flag; |
@@ -400,10 +405,11 @@ parse_flag: | |||
400 | 405 | ||
401 | case oVerifyHostKeyDNS: | 406 | case oVerifyHostKeyDNS: |
402 | intptr = &options->verify_host_key_dns; | 407 | intptr = &options->verify_host_key_dns; |
403 | goto parse_flag; | 408 | goto parse_yesnoask; |
404 | 409 | ||
405 | case oStrictHostKeyChecking: | 410 | case oStrictHostKeyChecking: |
406 | intptr = &options->strict_host_key_checking; | 411 | intptr = &options->strict_host_key_checking; |
412 | parse_yesnoask: | ||
407 | arg = strdelim(&s); | 413 | arg = strdelim(&s); |
408 | if (!arg || *arg == '\0') | 414 | if (!arg || *arg == '\0') |
409 | fatal("%.200s line %d: Missing yes/no/ask argument.", | 415 | fatal("%.200s line %d: Missing yes/no/ask argument.", |
@@ -425,8 +431,8 @@ parse_flag: | |||
425 | intptr = &options->compression; | 431 | intptr = &options->compression; |
426 | goto parse_flag; | 432 | goto parse_flag; |
427 | 433 | ||
428 | case oKeepAlives: | 434 | case oTCPKeepAlive: |
429 | intptr = &options->keepalives; | 435 | intptr = &options->tcp_keep_alive; |
430 | goto parse_flag; | 436 | goto parse_flag; |
431 | 437 | ||
432 | case oNoHostAuthenticationForLocalhost: | 438 | case oNoHostAuthenticationForLocalhost: |
@@ -730,6 +736,14 @@ parse_int: | |||
730 | intptr = &options->enable_ssh_keysign; | 736 | intptr = &options->enable_ssh_keysign; |
731 | goto parse_flag; | 737 | goto parse_flag; |
732 | 738 | ||
739 | case oServerAliveInterval: | ||
740 | intptr = &options->server_alive_interval; | ||
741 | goto parse_time; | ||
742 | |||
743 | case oServerAliveCountMax: | ||
744 | intptr = &options->server_alive_count_max; | ||
745 | goto parse_int; | ||
746 | |||
733 | case oDeprecated: | 747 | case oDeprecated: |
734 | debug("%s line %d: Deprecated option \"%s\"", | 748 | debug("%s line %d: Deprecated option \"%s\"", |
735 | filename, linenum, keyword); | 749 | filename, linenum, keyword); |
@@ -806,6 +820,7 @@ initialize_options(Options * options) | |||
806 | memset(options, 'X', sizeof(*options)); | 820 | memset(options, 'X', sizeof(*options)); |
807 | options->forward_agent = -1; | 821 | options->forward_agent = -1; |
808 | options->forward_x11 = -1; | 822 | options->forward_x11 = -1; |
823 | options->forward_x11_trusted = -1; | ||
809 | options->xauth_location = NULL; | 824 | options->xauth_location = NULL; |
810 | options->gateway_ports = -1; | 825 | options->gateway_ports = -1; |
811 | options->use_privileged_port = -1; | 826 | options->use_privileged_port = -1; |
@@ -823,7 +838,7 @@ initialize_options(Options * options) | |||
823 | options->check_host_ip = -1; | 838 | options->check_host_ip = -1; |
824 | options->strict_host_key_checking = -1; | 839 | options->strict_host_key_checking = -1; |
825 | options->compression = -1; | 840 | options->compression = -1; |
826 | options->keepalives = -1; | 841 | options->tcp_keep_alive = -1; |
827 | options->compression_level = -1; | 842 | options->compression_level = -1; |
828 | options->port = -1; | 843 | options->port = -1; |
829 | options->address_family = -1; | 844 | options->address_family = -1; |
@@ -856,6 +871,8 @@ initialize_options(Options * options) | |||
856 | options->no_host_authentication_for_localhost = - 1; | 871 | options->no_host_authentication_for_localhost = - 1; |
857 | options->rekey_limit = - 1; | 872 | options->rekey_limit = - 1; |
858 | options->verify_host_key_dns = -1; | 873 | options->verify_host_key_dns = -1; |
874 | options->server_alive_interval = -1; | ||
875 | options->server_alive_count_max = -1; | ||
859 | } | 876 | } |
860 | 877 | ||
861 | /* | 878 | /* |
@@ -872,6 +889,8 @@ fill_default_options(Options * options) | |||
872 | options->forward_agent = 0; | 889 | options->forward_agent = 0; |
873 | if (options->forward_x11 == -1) | 890 | if (options->forward_x11 == -1) |
874 | options->forward_x11 = 0; | 891 | options->forward_x11 = 0; |
892 | if (options->forward_x11_trusted == -1) | ||
893 | options->forward_x11_trusted = 0; | ||
875 | if (options->xauth_location == NULL) | 894 | if (options->xauth_location == NULL) |
876 | options->xauth_location = _PATH_XAUTH; | 895 | options->xauth_location = _PATH_XAUTH; |
877 | if (options->gateway_ports == -1) | 896 | if (options->gateway_ports == -1) |
@@ -885,7 +904,7 @@ fill_default_options(Options * options) | |||
885 | if (options->challenge_response_authentication == -1) | 904 | if (options->challenge_response_authentication == -1) |
886 | options->challenge_response_authentication = 1; | 905 | options->challenge_response_authentication = 1; |
887 | if (options->gss_authentication == -1) | 906 | if (options->gss_authentication == -1) |
888 | options->gss_authentication = 1; | 907 | options->gss_authentication = 0; |
889 | if (options->gss_deleg_creds == -1) | 908 | if (options->gss_deleg_creds == -1) |
890 | options->gss_deleg_creds = 0; | 909 | options->gss_deleg_creds = 0; |
891 | if (options->password_authentication == -1) | 910 | if (options->password_authentication == -1) |
@@ -904,8 +923,8 @@ fill_default_options(Options * options) | |||
904 | options->strict_host_key_checking = 2; /* 2 is default */ | 923 | options->strict_host_key_checking = 2; /* 2 is default */ |
905 | if (options->compression == -1) | 924 | if (options->compression == -1) |
906 | options->compression = 0; | 925 | options->compression = 0; |
907 | if (options->keepalives == -1) | 926 | if (options->tcp_keep_alive == -1) |
908 | options->keepalives = 1; | 927 | options->tcp_keep_alive = 1; |
909 | if (options->compression_level == -1) | 928 | if (options->compression_level == -1) |
910 | options->compression_level = 6; | 929 | options->compression_level = 6; |
911 | if (options->port == -1) | 930 | if (options->port == -1) |
@@ -968,6 +987,10 @@ fill_default_options(Options * options) | |||
968 | options->rekey_limit = 0; | 987 | options->rekey_limit = 0; |
969 | if (options->verify_host_key_dns == -1) | 988 | if (options->verify_host_key_dns == -1) |
970 | options->verify_host_key_dns = 0; | 989 | options->verify_host_key_dns = 0; |
990 | if (options->server_alive_interval == -1) | ||
991 | options->server_alive_interval = 0; | ||
992 | if (options->server_alive_count_max == -1) | ||
993 | options->server_alive_count_max = 3; | ||
971 | /* options->proxy_command should not be set by default */ | 994 | /* options->proxy_command should not be set by default */ |
972 | /* options->user will be set in the main program if appropriate */ | 995 | /* options->user will be set in the main program if appropriate */ |
973 | /* options->hostname will be set in the main program if appropriate */ | 996 | /* options->hostname will be set in the main program if appropriate */ |
diff --git a/readconf.h b/readconf.h index 60287f710..3f27af961 100644 --- a/readconf.h +++ b/readconf.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: readconf.h,v 1.55 2003/09/01 18:15:50 markus Exp $ */ | 1 | /* $OpenBSD: readconf.h,v 1.59 2003/12/16 15:49:51 markus Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> | 4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> |
@@ -30,6 +30,7 @@ typedef struct { | |||
30 | typedef struct { | 30 | typedef struct { |
31 | int forward_agent; /* Forward authentication agent. */ | 31 | int forward_agent; /* Forward authentication agent. */ |
32 | int forward_x11; /* Forward X11 display. */ | 32 | int forward_x11; /* Forward X11 display. */ |
33 | int forward_x11_trusted; /* Trust Forward X11 display. */ | ||
33 | char *xauth_location; /* Location for xauth program */ | 34 | char *xauth_location; /* Location for xauth program */ |
34 | int gateway_ports; /* Allow remote connects to forwarded ports. */ | 35 | int gateway_ports; /* Allow remote connects to forwarded ports. */ |
35 | int use_privileged_port; /* Don't use privileged port if false. */ | 36 | int use_privileged_port; /* Don't use privileged port if false. */ |
@@ -52,7 +53,7 @@ typedef struct { | |||
52 | int compression; /* Compress packets in both directions. */ | 53 | int compression; /* Compress packets in both directions. */ |
53 | int compression_level; /* Compression level 1 (fast) to 9 | 54 | int compression_level; /* Compression level 1 (fast) to 9 |
54 | * (best). */ | 55 | * (best). */ |
55 | int keepalives; /* Set SO_KEEPALIVE. */ | 56 | int tcp_keep_alive; /* Set SO_KEEPALIVE. */ |
56 | LogLevel log_level; /* Level for logging. */ | 57 | LogLevel log_level; /* Level for logging. */ |
57 | 58 | ||
58 | int port; /* Port to connect. */ | 59 | int port; /* Port to connect. */ |
@@ -60,7 +61,7 @@ typedef struct { | |||
60 | int connection_attempts; /* Max attempts (seconds) before | 61 | int connection_attempts; /* Max attempts (seconds) before |
61 | * giving up */ | 62 | * giving up */ |
62 | int connection_timeout; /* Max time (seconds) before | 63 | int connection_timeout; /* Max time (seconds) before |
63 | * aborting connection attempt */ | 64 | * aborting connection attempt */ |
64 | int number_of_password_prompts; /* Max number of password | 65 | int number_of_password_prompts; /* Max number of password |
65 | * prompts. */ | 66 | * prompts. */ |
66 | int cipher; /* Cipher to use. */ | 67 | int cipher; /* Cipher to use. */ |
@@ -99,6 +100,8 @@ typedef struct { | |||
99 | int enable_ssh_keysign; | 100 | int enable_ssh_keysign; |
100 | int rekey_limit; | 101 | int rekey_limit; |
101 | int no_host_authentication_for_localhost; | 102 | int no_host_authentication_for_localhost; |
103 | int server_alive_interval; | ||
104 | int server_alive_count_max; | ||
102 | } Options; | 105 | } Options; |
103 | 106 | ||
104 | 107 | ||
diff --git a/regress/Makefile b/regress/Makefile index 623be8d82..76e28d36d 100644 --- a/regress/Makefile +++ b/regress/Makefile | |||
@@ -1,4 +1,4 @@ | |||
1 | # $OpenBSD: Makefile,v 1.24 2003/07/03 08:24:13 markus Exp $ | 1 | # $OpenBSD: Makefile,v 1.26 2003/10/11 11:49:49 dtucker Exp $ |
2 | 2 | ||
3 | REGRESS_TARGETS= t1 t2 t3 t4 t5 t6 t7 t-exec | 3 | REGRESS_TARGETS= t1 t2 t3 t4 t5 t6 t7 t-exec |
4 | tests: $(REGRESS_TARGETS) | 4 | tests: $(REGRESS_TARGETS) |
@@ -14,6 +14,7 @@ LTESTS= connect \ | |||
14 | proto-mismatch \ | 14 | proto-mismatch \ |
15 | exit-status \ | 15 | exit-status \ |
16 | transfer \ | 16 | transfer \ |
17 | banner \ | ||
17 | rekey \ | 18 | rekey \ |
18 | stderr-data \ | 19 | stderr-data \ |
19 | stderr-after-eof \ | 20 | stderr-after-eof \ |
@@ -40,7 +41,7 @@ CLEANFILES= t2.out t6.out1 t6.out2 t7.out t7.out.pub copy.1 copy.2 \ | |||
40 | ssh_config ssh_proxy sshd_config sshd_proxy \ | 41 | ssh_config ssh_proxy sshd_config sshd_proxy \ |
41 | rsa.pub rsa rsa1.pub rsa1 host.rsa host.rsa1 \ | 42 | rsa.pub rsa rsa1.pub rsa1 host.rsa host.rsa1 \ |
42 | rsa-agent rsa-agent.pub rsa1-agent rsa1-agent.pub \ | 43 | rsa-agent rsa-agent.pub rsa1-agent rsa1-agent.pub \ |
43 | ls.copy remote_pid | 44 | ls.copy banner.in banner.out empty.in remote_pid |
44 | 45 | ||
45 | #LTESTS += ssh-com ssh-com-client ssh-com-keygen ssh-com-sftp | 46 | #LTESTS += ssh-com ssh-com-client ssh-com-keygen ssh-com-sftp |
46 | 47 | ||
diff --git a/regress/README.regress b/regress/README.regress index 916894a88..b479c6c07 100644 --- a/regress/README.regress +++ b/regress/README.regress | |||
@@ -22,7 +22,7 @@ Environment variables. | |||
22 | 22 | ||
23 | SUDO: path to sudo command, if desired. Note that some systems (notably | 23 | SUDO: path to sudo command, if desired. Note that some systems (notably |
24 | systems using PAM) require sudo to execute some tests. | 24 | systems using PAM) require sudo to execute some tests. |
25 | TEST_SSH_TRACE: set yo "yes" for verbose output from tests | 25 | TEST_SSH_TRACE: set to "yes" for verbose output from tests |
26 | TEST_SSH_QUIET: set to "yes" to suppress non-fatal output. | 26 | TEST_SSH_QUIET: set to "yes" to suppress non-fatal output. |
27 | TEST_SSH_x: path to "ssh" command under test, where x=SSH,SSHD,SSHAGENT,SSHADD | 27 | TEST_SSH_x: path to "ssh" command under test, where x=SSH,SSHD,SSHAGENT,SSHADD |
28 | SSHKEYGEN,SSHKEYSCAN,SFTP,SFTPSERVER | 28 | SSHKEYGEN,SSHKEYSCAN,SFTP,SFTPSERVER |
@@ -82,5 +82,13 @@ Failed tests can be difficult to diagnose. Suggestions: | |||
82 | 82 | ||
83 | Known Issues. | 83 | Known Issues. |
84 | 84 | ||
85 | - If you build with tcpwrappers and try to run the regression tests, | ||
86 | your hosts.allow must permit connections from localhost and from | ||
87 | "unknown". This is because some tests are performed via the loopback | ||
88 | interface, while others are done with "sshd -i" as a ProxyCommand. In | ||
89 | the latter case, when sshd calls getpeername() on the socket it will | ||
90 | fail (because it's not a tcp socket) and will be identified as | ||
91 | "unknown", which is then checked against tcpwrappers. | ||
85 | 92 | ||
86 | $Id: README.regress,v 1.1 2003/09/04 05:39:54 dtucker Exp $ | 93 | |
94 | $Id: README.regress,v 1.3 2004/01/28 01:26:14 dtucker Exp $ | ||
diff --git a/regress/agent-ptrace.sh b/regress/agent-ptrace.sh index cd9c0023d..bd79d7cb8 100644 --- a/regress/agent-ptrace.sh +++ b/regress/agent-ptrace.sh | |||
@@ -5,7 +5,7 @@ tid="disallow agent ptrace attach" | |||
5 | 5 | ||
6 | if have_prog uname ; then | 6 | if have_prog uname ; then |
7 | case `uname` in | 7 | case `uname` in |
8 | Linux|HP-UX|SunOS|NetBSD|AIX|CYGWIN*) | 8 | AIX|CYGWIN*) |
9 | echo "skipped (not supported on this platform)" | 9 | echo "skipped (not supported on this platform)" |
10 | exit 0 | 10 | exit 0 |
11 | ;; | 11 | ;; |
@@ -19,6 +19,15 @@ else | |||
19 | exit 0 | 19 | exit 0 |
20 | fi | 20 | fi |
21 | 21 | ||
22 | if test -z "$SUDO" ; then | ||
23 | echo "skipped (SUDO not set)" | ||
24 | exit 0 | ||
25 | else | ||
26 | $SUDO chown 0 ${SSHAGENT} | ||
27 | $SUDO chgrp 0 ${SSHAGENT} | ||
28 | $SUDO chmod 2755 ${SSHAGENT} | ||
29 | fi | ||
30 | |||
22 | trace "start agent" | 31 | trace "start agent" |
23 | eval `${SSHAGENT} -s` > /dev/null | 32 | eval `${SSHAGENT} -s` > /dev/null |
24 | r=$? | 33 | r=$? |
@@ -32,7 +41,7 @@ EOF | |||
32 | if [ $? -ne 0 ]; then | 41 | if [ $? -ne 0 ]; then |
33 | fail "gdb failed: exit code $?" | 42 | fail "gdb failed: exit code $?" |
34 | fi | 43 | fi |
35 | grep 'ptrace: Operation not permitted.' >/dev/null ${OBJ}/gdb.out | 44 | egrep 'ptrace: Operation not permitted.|procfs:.*Permission denied.|ttrace attach: Permission denied.' >/dev/null ${OBJ}/gdb.out |
36 | r=$? | 45 | r=$? |
37 | rm -f ${OBJ}/gdb.out | 46 | rm -f ${OBJ}/gdb.out |
38 | if [ $r -ne 0 ]; then | 47 | if [ $r -ne 0 ]; then |
diff --git a/regress/banner.sh b/regress/banner.sh new file mode 100644 index 000000000..0b9c95007 --- /dev/null +++ b/regress/banner.sh | |||
@@ -0,0 +1,44 @@ | |||
1 | # $OpenBSD: banner.sh,v 1.2 2003/10/11 11:49:49 dtucker Exp $ | ||
2 | # Placed in the Public Domain. | ||
3 | |||
4 | tid="banner" | ||
5 | echo "Banner $OBJ/banner.in" >> $OBJ/sshd_proxy | ||
6 | |||
7 | rm -f $OBJ/banner.out $OBJ/banner.in $OBJ/empty.in | ||
8 | touch $OBJ/empty.in | ||
9 | |||
10 | trace "test missing banner file" | ||
11 | verbose "test $tid: missing banner file" | ||
12 | ( ${SSH} -2 -F $OBJ/ssh_proxy otherhost true 2>$OBJ/banner.out && \ | ||
13 | cmp $OBJ/empty.in $OBJ/banner.out ) || \ | ||
14 | fail "missing banner file" | ||
15 | |||
16 | for s in 0 10 100 1000 10000 100000 ; do | ||
17 | if [ "$s" = "0" ]; then | ||
18 | # create empty banner | ||
19 | touch $OBJ/banner.in | ||
20 | elif [ "$s" = "10" ]; then | ||
21 | # create 10-byte banner file | ||
22 | echo "abcdefghi" >$OBJ/banner.in | ||
23 | else | ||
24 | # increase size 10x | ||
25 | cp $OBJ/banner.in $OBJ/banner.out | ||
26 | for i in 0 1 2 3 4 5 6 7 8 ; do | ||
27 | cat $OBJ/banner.out >> $OBJ/banner.in | ||
28 | done | ||
29 | fi | ||
30 | |||
31 | trace "test banner size $s" | ||
32 | verbose "test $tid: size $s" | ||
33 | ( ${SSH} -2 -F $OBJ/ssh_proxy otherhost true 2>$OBJ/banner.out && \ | ||
34 | cmp $OBJ/banner.in $OBJ/banner.out ) || \ | ||
35 | fail "banner size $s mismatch" | ||
36 | done | ||
37 | |||
38 | trace "test suppress banner (-q)" | ||
39 | verbose "test $tid: suppress banner (-q)" | ||
40 | ( ${SSH} -q -2 -F $OBJ/ssh_proxy otherhost true 2>$OBJ/banner.out && \ | ||
41 | cmp $OBJ/empty.in $OBJ/banner.out ) || \ | ||
42 | fail "suppress banner (-q)" | ||
43 | |||
44 | rm -f $OBJ/banner.out $OBJ/banner.in $OBJ/empty.in | ||
diff --git a/regress/sftp-badcmds.sh b/regress/sftp-badcmds.sh index a6a19409d..eac189aaf 100644 --- a/regress/sftp-badcmds.sh +++ b/regress/sftp-badcmds.sh | |||
@@ -4,7 +4,7 @@ | |||
4 | tid="sftp invalid commands" | 4 | tid="sftp invalid commands" |
5 | 5 | ||
6 | DATA=/bin/ls${EXEEXT} | 6 | DATA=/bin/ls${EXEEXT} |
7 | DATA2=/bin/cat${EXEEXT} | 7 | DATA2=/bin/sh${EXEEXT} |
8 | NONEXIST=/NONEXIST.$$ | 8 | NONEXIST=/NONEXIST.$$ |
9 | COPY=${OBJ}/copy | 9 | COPY=${OBJ}/copy |
10 | GLOBFILES=`(cd /bin;echo l*)` | 10 | GLOBFILES=`(cd /bin;echo l*)` |
diff --git a/regress/sftp-batch.sh b/regress/sftp-batch.sh index f648eae80..365c47cfc 100644 --- a/regress/sftp-batch.sh +++ b/regress/sftp-batch.sh | |||
@@ -1,11 +1,11 @@ | |||
1 | # $OpenBSD: sftp-batch.sh,v 1.2 2003/01/10 07:52:41 djm Exp $ | 1 | # $OpenBSD: sftp-batch.sh,v 1.3 2004/01/13 09:49:06 djm Exp $ |
2 | # Placed in the Public Domain. | 2 | # Placed in the Public Domain. |
3 | 3 | ||
4 | tid="sftp batchfile" | 4 | tid="sftp batchfile" |
5 | 5 | ||
6 | DATA=/bin/ls${EXEEXT} | 6 | DATA=/bin/ls${EXEEXT} |
7 | COPY=${OBJ}/copy | 7 | COPY=${OBJ}/copy |
8 | BATCH=${OBJ}/sftp-batch.tmp | 8 | BATCH=${OBJ}/sftp.bb |
9 | 9 | ||
10 | rm -rf ${COPY} ${COPY}.1 ${COPY}.2 ${COPY}.dd ${BATCH}.* | 10 | rm -rf ${COPY} ${COPY}.1 ${COPY}.2 ${COPY}.dd ${BATCH}.* |
11 | 11 | ||
diff --git a/regress/sftp-cmds.sh b/regress/sftp-cmds.sh index 1256aeb2d..3669b19ff 100644 --- a/regress/sftp-cmds.sh +++ b/regress/sftp-cmds.sh | |||
@@ -1,4 +1,4 @@ | |||
1 | # $OpenBSD: sftp-cmds.sh,v 1.5 2003/07/19 00:46:31 djm Exp $ | 1 | # $OpenBSD: sftp-cmds.sh,v 1.6 2003/10/07 07:04:52 djm Exp $ |
2 | # Placed in the Public Domain. | 2 | # Placed in the Public Domain. |
3 | 3 | ||
4 | # XXX - TODO: | 4 | # XXX - TODO: |
@@ -79,6 +79,20 @@ echo "get $DATA $COPY" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \ | |||
79 | || fail "get failed" | 79 | || fail "get failed" |
80 | cmp $DATA ${COPY} || fail "corrupted copy after get" | 80 | cmp $DATA ${COPY} || fail "corrupted copy after get" |
81 | 81 | ||
82 | rm -f ${COPY} | ||
83 | verbose "$tid: get quoted" | ||
84 | echo "get \"$DATA\" $COPY" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \ | ||
85 | || fail "get failed" | ||
86 | cmp $DATA ${COPY} || fail "corrupted copy after get" | ||
87 | |||
88 | rm -f ${QUOTECOPY} | ||
89 | cp $DATA ${QUOTECOPY} | ||
90 | verbose "$tid: get filename with quotes" | ||
91 | echo "get \"$QUOTECOPY_ARG\" ${COPY}" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \ | ||
92 | || fail "put failed" | ||
93 | cmp ${COPY} ${QUOTECOPY} || fail "corrupted copy after get with quotes" | ||
94 | rm -f ${QUOTECOPY} ${COPY} | ||
95 | |||
82 | rm -f ${COPY}.dd/* | 96 | rm -f ${COPY}.dd/* |
83 | verbose "$tid: get to directory" | 97 | verbose "$tid: get to directory" |
84 | echo "get $DATA ${COPY}.dd" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \ | 98 | echo "get $DATA ${COPY}.dd" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \ |
diff --git a/regress/ssh-com.sh b/regress/ssh-com.sh index 78ae6e9e1..c3715a242 100644 --- a/regress/ssh-com.sh +++ b/regress/ssh-com.sh | |||
@@ -1,4 +1,4 @@ | |||
1 | # $OpenBSD: ssh-com.sh,v 1.5 2003/05/14 22:08:27 markus Exp $ | 1 | # $OpenBSD: ssh-com.sh,v 1.6 2003/11/07 10:16:44 jmc Exp $ |
2 | # Placed in the Public Domain. | 2 | # Placed in the Public Domain. |
3 | 3 | ||
4 | tid="connect to ssh.com server" | 4 | tid="connect to ssh.com server" |
@@ -29,7 +29,7 @@ SRC=`dirname ${SCRIPT}` | |||
29 | # ssh.com | 29 | # ssh.com |
30 | cat << EOF > $OBJ/sshd2_config | 30 | cat << EOF > $OBJ/sshd2_config |
31 | #*: | 31 | #*: |
32 | # Port and ListenAdress are not used. | 32 | # Port and ListenAddress are not used. |
33 | QuietMode yes | 33 | QuietMode yes |
34 | Port 4343 | 34 | Port 4343 |
35 | ListenAddress 127.0.0.1 | 35 | ListenAddress 127.0.0.1 |
diff --git a/regress/test-exec.sh b/regress/test-exec.sh index cc7ea67fe..98851dc97 100644 --- a/regress/test-exec.sh +++ b/regress/test-exec.sh | |||
@@ -30,7 +30,7 @@ if [ ! -f $SCRIPT ]; then | |||
30 | echo "not a file: $SCRIPT" | 30 | echo "not a file: $SCRIPT" |
31 | exit 2 | 31 | exit 2 |
32 | fi | 32 | fi |
33 | if sh -n $SCRIPT; then | 33 | if $TEST_SHELL -n $SCRIPT; then |
34 | true | 34 | true |
35 | else | 35 | else |
36 | echo "syntax error in $SCRIPT" | 36 | echo "syntax error in $SCRIPT" |
@@ -185,7 +185,6 @@ Host * | |||
185 | ChallengeResponseAuthentication no | 185 | ChallengeResponseAuthentication no |
186 | HostbasedAuthentication no | 186 | HostbasedAuthentication no |
187 | PasswordAuthentication no | 187 | PasswordAuthentication no |
188 | RhostsAuthentication no | ||
189 | RhostsRSAAuthentication no | 188 | RhostsRSAAuthentication no |
190 | BatchMode yes | 189 | BatchMode yes |
191 | StrictHostKeyChecking yes | 190 | StrictHostKeyChecking yes |
diff --git a/rijndael.c b/rijndael.c index 6965ca3b0..1cd24de14 100644 --- a/rijndael.c +++ b/rijndael.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: rijndael.c,v 1.14 2002/07/10 17:53:54 deraadt Exp $ */ | 1 | /* $OpenBSD: rijndael.c,v 1.15 2003/11/21 11:57:03 djm Exp $ */ |
2 | 2 | ||
3 | /** | 3 | /** |
4 | * rijndael-alg-fst.c | 4 | * rijndael-alg-fst.c |
@@ -725,7 +725,7 @@ static const u32 rcon[] = { | |||
725 | * @return the number of rounds for the given cipher key size. | 725 | * @return the number of rounds for the given cipher key size. |
726 | */ | 726 | */ |
727 | static int rijndaelKeySetupEnc(u32 rk[/*4*(Nr + 1)*/], const u8 cipherKey[], int keyBits) { | 727 | static int rijndaelKeySetupEnc(u32 rk[/*4*(Nr + 1)*/], const u8 cipherKey[], int keyBits) { |
728 | int i = 0; | 728 | int i = 0; |
729 | u32 temp; | 729 | u32 temp; |
730 | 730 | ||
731 | rk[0] = GETU32(cipherKey ); | 731 | rk[0] = GETU32(cipherKey ); |
@@ -797,7 +797,7 @@ static int rijndaelKeySetupEnc(u32 rk[/*4*(Nr + 1)*/], const u8 cipherKey[], int | |||
797 | (Te4[(temp ) & 0xff] & 0x000000ff); | 797 | (Te4[(temp ) & 0xff] & 0x000000ff); |
798 | rk[13] = rk[ 5] ^ rk[12]; | 798 | rk[13] = rk[ 5] ^ rk[12]; |
799 | rk[14] = rk[ 6] ^ rk[13]; | 799 | rk[14] = rk[ 6] ^ rk[13]; |
800 | rk[15] = rk[ 7] ^ rk[14]; | 800 | rk[15] = rk[ 7] ^ rk[14]; |
801 | rk += 8; | 801 | rk += 8; |
802 | } | 802 | } |
803 | } | 803 | } |
@@ -871,50 +871,50 @@ static void rijndaelEncrypt(const u32 rk[/*4*(Nr + 1)*/], int Nr, const u8 pt[16 | |||
871 | s3 = GETU32(pt + 12) ^ rk[3]; | 871 | s3 = GETU32(pt + 12) ^ rk[3]; |
872 | #ifdef FULL_UNROLL | 872 | #ifdef FULL_UNROLL |
873 | /* round 1: */ | 873 | /* round 1: */ |
874 | t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[ 4]; | 874 | t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[ 4]; |
875 | t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[ 5]; | 875 | t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[ 5]; |
876 | t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[ 6]; | 876 | t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[ 6]; |
877 | t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[ 7]; | 877 | t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[ 7]; |
878 | /* round 2: */ | 878 | /* round 2: */ |
879 | s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[ 8]; | 879 | s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[ 8]; |
880 | s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[ 9]; | 880 | s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[ 9]; |
881 | s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[10]; | 881 | s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[10]; |
882 | s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[11]; | 882 | s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[11]; |
883 | /* round 3: */ | 883 | /* round 3: */ |
884 | t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[12]; | 884 | t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[12]; |
885 | t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[13]; | 885 | t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[13]; |
886 | t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[14]; | 886 | t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[14]; |
887 | t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[15]; | 887 | t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[15]; |
888 | /* round 4: */ | 888 | /* round 4: */ |
889 | s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[16]; | 889 | s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[16]; |
890 | s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[17]; | 890 | s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[17]; |
891 | s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[18]; | 891 | s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[18]; |
892 | s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[19]; | 892 | s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[19]; |
893 | /* round 5: */ | 893 | /* round 5: */ |
894 | t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[20]; | 894 | t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[20]; |
895 | t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[21]; | 895 | t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[21]; |
896 | t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[22]; | 896 | t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[22]; |
897 | t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[23]; | 897 | t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[23]; |
898 | /* round 6: */ | 898 | /* round 6: */ |
899 | s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[24]; | 899 | s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[24]; |
900 | s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[25]; | 900 | s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[25]; |
901 | s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[26]; | 901 | s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[26]; |
902 | s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[27]; | 902 | s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[27]; |
903 | /* round 7: */ | 903 | /* round 7: */ |
904 | t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[28]; | 904 | t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[28]; |
905 | t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[29]; | 905 | t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[29]; |
906 | t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[30]; | 906 | t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[30]; |
907 | t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[31]; | 907 | t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[31]; |
908 | /* round 8: */ | 908 | /* round 8: */ |
909 | s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[32]; | 909 | s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[32]; |
910 | s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[33]; | 910 | s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[33]; |
911 | s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[34]; | 911 | s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[34]; |
912 | s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[35]; | 912 | s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[35]; |
913 | /* round 9: */ | 913 | /* round 9: */ |
914 | t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[36]; | 914 | t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[36]; |
915 | t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[37]; | 915 | t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[37]; |
916 | t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[38]; | 916 | t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[38]; |
917 | t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[39]; | 917 | t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[39]; |
918 | if (Nr > 10) { | 918 | if (Nr > 10) { |
919 | /* round 10: */ | 919 | /* round 10: */ |
920 | s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[40]; | 920 | s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[40]; |
@@ -1187,33 +1187,33 @@ static void rijndaelDecrypt(const u32 rk[/*4*(Nr + 1)*/], int Nr, const u8 ct[16 | |||
1187 | * apply last round and | 1187 | * apply last round and |
1188 | * map cipher state to byte array block: | 1188 | * map cipher state to byte array block: |
1189 | */ | 1189 | */ |
1190 | s0 = | 1190 | s0 = |
1191 | (Td4[(t0 >> 24) ] & 0xff000000) ^ | 1191 | (Td4[(t0 >> 24) ] & 0xff000000) ^ |
1192 | (Td4[(t3 >> 16) & 0xff] & 0x00ff0000) ^ | 1192 | (Td4[(t3 >> 16) & 0xff] & 0x00ff0000) ^ |
1193 | (Td4[(t2 >> 8) & 0xff] & 0x0000ff00) ^ | 1193 | (Td4[(t2 >> 8) & 0xff] & 0x0000ff00) ^ |
1194 | (Td4[(t1 ) & 0xff] & 0x000000ff) ^ | 1194 | (Td4[(t1 ) & 0xff] & 0x000000ff) ^ |
1195 | rk[0]; | 1195 | rk[0]; |
1196 | PUTU32(pt , s0); | 1196 | PUTU32(pt , s0); |
1197 | s1 = | 1197 | s1 = |
1198 | (Td4[(t1 >> 24) ] & 0xff000000) ^ | 1198 | (Td4[(t1 >> 24) ] & 0xff000000) ^ |
1199 | (Td4[(t0 >> 16) & 0xff] & 0x00ff0000) ^ | 1199 | (Td4[(t0 >> 16) & 0xff] & 0x00ff0000) ^ |
1200 | (Td4[(t3 >> 8) & 0xff] & 0x0000ff00) ^ | 1200 | (Td4[(t3 >> 8) & 0xff] & 0x0000ff00) ^ |
1201 | (Td4[(t2 ) & 0xff] & 0x000000ff) ^ | 1201 | (Td4[(t2 ) & 0xff] & 0x000000ff) ^ |
1202 | rk[1]; | 1202 | rk[1]; |
1203 | PUTU32(pt + 4, s1); | 1203 | PUTU32(pt + 4, s1); |
1204 | s2 = | 1204 | s2 = |
1205 | (Td4[(t2 >> 24) ] & 0xff000000) ^ | 1205 | (Td4[(t2 >> 24) ] & 0xff000000) ^ |
1206 | (Td4[(t1 >> 16) & 0xff] & 0x00ff0000) ^ | 1206 | (Td4[(t1 >> 16) & 0xff] & 0x00ff0000) ^ |
1207 | (Td4[(t0 >> 8) & 0xff] & 0x0000ff00) ^ | 1207 | (Td4[(t0 >> 8) & 0xff] & 0x0000ff00) ^ |
1208 | (Td4[(t3 ) & 0xff] & 0x000000ff) ^ | 1208 | (Td4[(t3 ) & 0xff] & 0x000000ff) ^ |
1209 | rk[2]; | 1209 | rk[2]; |
1210 | PUTU32(pt + 8, s2); | 1210 | PUTU32(pt + 8, s2); |
1211 | s3 = | 1211 | s3 = |
1212 | (Td4[(t3 >> 24) ] & 0xff000000) ^ | 1212 | (Td4[(t3 >> 24) ] & 0xff000000) ^ |
1213 | (Td4[(t2 >> 16) & 0xff] & 0x00ff0000) ^ | 1213 | (Td4[(t2 >> 16) & 0xff] & 0x00ff0000) ^ |
1214 | (Td4[(t1 >> 8) & 0xff] & 0x0000ff00) ^ | 1214 | (Td4[(t1 >> 8) & 0xff] & 0x0000ff00) ^ |
1215 | (Td4[(t0 ) & 0xff] & 0x000000ff) ^ | 1215 | (Td4[(t0 ) & 0xff] & 0x000000ff) ^ |
1216 | rk[3]; | 1216 | rk[3]; |
1217 | PUTU32(pt + 12, s3); | 1217 | PUTU32(pt + 12, s3); |
1218 | } | 1218 | } |
1219 | 1219 | ||
diff --git a/scard-opensc.c b/scard-opensc.c index 2489fec45..a9b7ebc61 100644 --- a/scard-opensc.c +++ b/scard-opensc.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2002 Juha Yrjölä. All rights reserved. | 2 | * Copyright (c) 2002 Juha Yrjölä. All rights reserved. |
3 | * Copyright (c) 2001 Markus Friedl. | 3 | * Copyright (c) 2001 Markus Friedl. |
4 | * | 4 | * |
5 | * Redistribution and use in source and binary forms, with or without | 5 | * Redistribution and use in source and binary forms, with or without |
6 | * modification, are permitted provided that the following conditions | 6 | * modification, are permitted provided that the following conditions |
7 | * are met: | 7 | * are met: |
@@ -81,7 +81,7 @@ sc_close(void) | |||
81 | } | 81 | } |
82 | } | 82 | } |
83 | 83 | ||
84 | static int | 84 | static int |
85 | sc_init(void) | 85 | sc_init(void) |
86 | { | 86 | { |
87 | int r; | 87 | int r; |
@@ -91,7 +91,7 @@ sc_init(void) | |||
91 | goto err; | 91 | goto err; |
92 | if (sc_reader_id >= ctx->reader_count) { | 92 | if (sc_reader_id >= ctx->reader_count) { |
93 | r = SC_ERROR_NO_READERS_FOUND; | 93 | r = SC_ERROR_NO_READERS_FOUND; |
94 | error("Illegal reader number %d (max %d)", sc_reader_id, | 94 | error("Illegal reader number %d (max %d)", sc_reader_id, |
95 | ctx->reader_count -1); | 95 | ctx->reader_count -1); |
96 | goto err; | 96 | goto err; |
97 | } | 97 | } |
@@ -131,7 +131,7 @@ sc_prkey_op_init(RSA *rsa, struct sc_pkcs15_object **key_obj_out, | |||
131 | goto err; | 131 | goto err; |
132 | } | 132 | } |
133 | } | 133 | } |
134 | r = sc_pkcs15_find_prkey_by_id_usage(p15card, &priv->cert_id, | 134 | r = sc_pkcs15_find_prkey_by_id_usage(p15card, &priv->cert_id, |
135 | usage, &key_obj); | 135 | usage, &key_obj); |
136 | if (r) { | 136 | if (r) { |
137 | error("Unable to find private key from SmartCard: %s", | 137 | error("Unable to find private key from SmartCard: %s", |
@@ -189,11 +189,11 @@ sc_private_decrypt(int flen, u_char *from, u_char *to, RSA *rsa, | |||
189 | int r; | 189 | int r; |
190 | 190 | ||
191 | if (padding != RSA_PKCS1_PADDING) | 191 | if (padding != RSA_PKCS1_PADDING) |
192 | return -1; | 192 | return -1; |
193 | r = sc_prkey_op_init(rsa, &key_obj, SC_USAGE_DECRYPT); | 193 | r = sc_prkey_op_init(rsa, &key_obj, SC_USAGE_DECRYPT); |
194 | if (r) | 194 | if (r) |
195 | return -1; | 195 | return -1; |
196 | r = sc_pkcs15_decipher(p15card, key_obj, SC_ALGORITHM_RSA_PAD_PKCS1, | 196 | r = sc_pkcs15_decipher(p15card, key_obj, SC_ALGORITHM_RSA_PAD_PKCS1, |
197 | from, flen, to, flen); | 197 | from, flen, to, flen); |
198 | sc_unlock(card); | 198 | sc_unlock(card); |
199 | if (r < 0) { | 199 | if (r < 0) { |
@@ -223,7 +223,7 @@ sc_sign(int type, u_char *m, unsigned int m_len, | |||
223 | * the key will be rejected as using a non-repudiation key | 223 | * the key will be rejected as using a non-repudiation key |
224 | * for authentication is not recommended. Note: This does not | 224 | * for authentication is not recommended. Note: This does not |
225 | * prevent the use of a non-repudiation key for authentication | 225 | * prevent the use of a non-repudiation key for authentication |
226 | * if the sign or signrecover flag is set as well. | 226 | * if the sign or signrecover flag is set as well. |
227 | */ | 227 | */ |
228 | r = sc_prkey_op_init(rsa, &key_obj, SC_USAGE_SIGN); | 228 | r = sc_prkey_op_init(rsa, &key_obj, SC_USAGE_SIGN); |
229 | if (r) | 229 | if (r) |
@@ -325,7 +325,7 @@ static void | |||
325 | convert_rsa_to_rsa1(Key * in, Key * out) | 325 | convert_rsa_to_rsa1(Key * in, Key * out) |
326 | { | 326 | { |
327 | struct sc_priv_data *priv; | 327 | struct sc_priv_data *priv; |
328 | 328 | ||
329 | out->rsa->flags = in->rsa->flags; | 329 | out->rsa->flags = in->rsa->flags; |
330 | out->flags = in->flags; | 330 | out->flags = in->flags; |
331 | RSA_set_method(out->rsa, RSA_get_method(in->rsa)); | 331 | RSA_set_method(out->rsa, RSA_get_method(in->rsa)); |
@@ -337,7 +337,7 @@ convert_rsa_to_rsa1(Key * in, Key * out) | |||
337 | return; | 337 | return; |
338 | } | 338 | } |
339 | 339 | ||
340 | static int | 340 | static int |
341 | sc_read_pubkey(Key * k, const struct sc_pkcs15_object *cert_obj) | 341 | sc_read_pubkey(Key * k, const struct sc_pkcs15_object *cert_obj) |
342 | { | 342 | { |
343 | int r; | 343 | int r; |
@@ -349,7 +349,7 @@ sc_read_pubkey(Key * k, const struct sc_pkcs15_object *cert_obj) | |||
349 | EVP_PKEY *pubkey = NULL; | 349 | EVP_PKEY *pubkey = NULL; |
350 | u8 *p; | 350 | u8 *p; |
351 | char *tmp; | 351 | char *tmp; |
352 | 352 | ||
353 | debug("sc_read_pubkey() with cert id %02X", cinfo->id.value[0]); | 353 | debug("sc_read_pubkey() with cert id %02X", cinfo->id.value[0]); |
354 | r = sc_pkcs15_read_certificate(p15card, cinfo, &cert); | 354 | r = sc_pkcs15_read_certificate(p15card, cinfo, &cert); |
355 | if (r) { | 355 | if (r) { |
@@ -358,7 +358,7 @@ sc_read_pubkey(Key * k, const struct sc_pkcs15_object *cert_obj) | |||
358 | } | 358 | } |
359 | x509 = X509_new(); | 359 | x509 = X509_new(); |
360 | if (x509 == NULL) { | 360 | if (x509 == NULL) { |
361 | r = -1; | 361 | r = -1; |
362 | goto err; | 362 | goto err; |
363 | } | 363 | } |
364 | p = cert->data; | 364 | p = cert->data; |
@@ -391,7 +391,7 @@ sc_read_pubkey(Key * k, const struct sc_pkcs15_object *cert_obj) | |||
391 | tmp = key_fingerprint(k, SSH_FP_MD5, SSH_FP_HEX); | 391 | tmp = key_fingerprint(k, SSH_FP_MD5, SSH_FP_HEX); |
392 | debug("fingerprint %d %s", key_size(k), tmp); | 392 | debug("fingerprint %d %s", key_size(k), tmp); |
393 | xfree(tmp); | 393 | xfree(tmp); |
394 | 394 | ||
395 | return 0; | 395 | return 0; |
396 | err: | 396 | err: |
397 | if (cert) | 397 | if (cert) |
@@ -4,9 +4,9 @@ NAME | |||
4 | scp - secure copy (remote file copy program) | 4 | scp - secure copy (remote file copy program) |
5 | 5 | ||
6 | SYNOPSIS | 6 | SYNOPSIS |
7 | scp [-pqrvBC1246] [-F ssh_config] [-S program] [-P port] [-c cipher] | 7 | scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] |
8 | [-i identity_file] [-l limit] [-o ssh_option] [[user@]host1:]file1 | 8 | [-l limit] [-o ssh_option] [-P port] [-S program] |
9 | [...] [[user@]host2:]file2 | 9 | [[user@]host1:]file1 [...] [[user@]host2:]file2 |
10 | 10 | ||
11 | DESCRIPTION | 11 | DESCRIPTION |
12 | scp copies files between hosts on a network. It uses ssh(1) for data | 12 | scp copies files between hosts on a network. It uses ssh(1) for data |
@@ -20,61 +20,105 @@ DESCRIPTION | |||
20 | 20 | ||
21 | The options are as follows: | 21 | The options are as follows: |
22 | 22 | ||
23 | -c cipher | 23 | -1 Forces scp to use protocol 1. |
24 | Selects the cipher to use for encrypting the data transfer. This | ||
25 | option is directly passed to ssh(1). | ||
26 | |||
27 | -i identity_file | ||
28 | Selects the file from which the identity (private key) for RSA | ||
29 | authentication is read. This option is directly passed to | ||
30 | ssh(1). | ||
31 | |||
32 | -l limit | ||
33 | Limits the used bandwidth, specified in Kbit/s. | ||
34 | 24 | ||
35 | -p Preserves modification times, access times, and modes from the | 25 | -2 Forces scp to use protocol 2. |
36 | original file. | ||
37 | 26 | ||
38 | -r Recursively copy entire directories. | 27 | -4 Forces scp to use IPv4 addresses only. |
39 | 28 | ||
40 | -v Verbose mode. Causes scp and ssh(1) to print debugging messages | 29 | -6 Forces scp to use IPv6 addresses only. |
41 | about their progress. This is helpful in debugging connection, | ||
42 | authentication, and configuration problems. | ||
43 | 30 | ||
44 | -B Selects batch mode (prevents asking for passwords or passphras- | 31 | -B Selects batch mode (prevents asking for passwords or passphras- |
45 | es). | 32 | es). |
46 | 33 | ||
47 | -q Disables the progress meter. | ||
48 | |||
49 | -C Compression enable. Passes the -C flag to ssh(1) to enable com- | 34 | -C Compression enable. Passes the -C flag to ssh(1) to enable com- |
50 | pression. | 35 | pression. |
51 | 36 | ||
37 | -c cipher | ||
38 | Selects the cipher to use for encrypting the data transfer. This | ||
39 | option is directly passed to ssh(1). | ||
40 | |||
52 | -F ssh_config | 41 | -F ssh_config |
53 | Specifies an alternative per-user configuration file for ssh. | 42 | Specifies an alternative per-user configuration file for ssh. |
54 | This option is directly passed to ssh(1). | 43 | This option is directly passed to ssh(1). |
55 | 44 | ||
45 | -i identity_file | ||
46 | Selects the file from which the identity (private key) for RSA | ||
47 | authentication is read. This option is directly passed to | ||
48 | ssh(1). | ||
49 | |||
50 | -l limit | ||
51 | Limits the used bandwidth, specified in Kbit/s. | ||
52 | |||
53 | -o ssh_option | ||
54 | Can be used to pass options to ssh in the format used in | ||
55 | ssh_config(5). This is useful for specifying options for which | ||
56 | there is no separate scp command-line flag. For full details of | ||
57 | the options listed below, and their possible values, see | ||
58 | ssh_config(5). | ||
59 | |||
60 | AddressFamily | ||
61 | BatchMode | ||
62 | BindAddress | ||
63 | ChallengeResponseAuthentication | ||
64 | CheckHostIP | ||
65 | Cipher | ||
66 | Ciphers | ||
67 | Compression | ||
68 | CompressionLevel | ||
69 | ConnectionAttempts | ||
70 | ConnectionTimeout | ||
71 | GlobalKnownHostsFile | ||
72 | GSSAPIAuthentication | ||
73 | GSSAPIDelegateCredentials | ||
74 | Host | ||
75 | HostbasedAuthentication | ||
76 | HostKeyAlgorithms | ||
77 | HostKeyAlias | ||
78 | HostName | ||
79 | IdentityFile | ||
80 | LogLevel | ||
81 | MACs | ||
82 | NoHostAuthenticationForLocalhost | ||
83 | NumberOfPasswordPrompts | ||
84 | PasswordAuthentication | ||
85 | Port | ||
86 | PreferredAuthentications | ||
87 | Protocol | ||
88 | ProxyCommand | ||
89 | PubkeyAuthentication | ||
90 | RhostsRSAAuthentication | ||
91 | RSAAuthentication | ||
92 | ServerAliveInterval | ||
93 | ServerAliveCountMax | ||
94 | SmartcardDevice | ||
95 | StrictHostKeyChecking | ||
96 | TCPKeepAlive | ||
97 | UsePrivilegedPort | ||
98 | User | ||
99 | UserKnownHostsFile | ||
100 | VerifyHostKeyDNS | ||
101 | |||
56 | -P port | 102 | -P port |
57 | Specifies the port to connect to on the remote host. Note that | 103 | Specifies the port to connect to on the remote host. Note that |
58 | this option is written with a capital `P', because -p is already | 104 | this option is written with a capital `P', because -p is already |
59 | reserved for preserving the times and modes of the file in | 105 | reserved for preserving the times and modes of the file in |
60 | rcp(1). | 106 | rcp(1). |
61 | 107 | ||
62 | -S program | 108 | -p Preserves modification times, access times, and modes from the |
63 | Name of program to use for the encrypted connection. The program | 109 | original file. |
64 | must understand ssh(1) options. | ||
65 | |||
66 | -o ssh_option | ||
67 | Can be used to pass options to ssh in the format used in | ||
68 | ssh_config(5). This is useful for specifying options for which | ||
69 | there is no separate scp command-line flag. | ||
70 | 110 | ||
71 | -1 Forces scp to use protocol 1. | 111 | -q Disables the progress meter. |
72 | 112 | ||
73 | -2 Forces scp to use protocol 2. | 113 | -r Recursively copy entire directories. |
74 | 114 | ||
75 | -4 Forces scp to use IPv4 addresses only. | 115 | -S program |
116 | Name of program to use for the encrypted connection. The program | ||
117 | must understand ssh(1) options. | ||
76 | 118 | ||
77 | -6 Forces scp to use IPv6 addresses only. | 119 | -v Verbose mode. Causes scp and ssh(1) to print debugging messages |
120 | about their progress. This is helpful in debugging connection, | ||
121 | authentication, and configuration problems. | ||
78 | 122 | ||
79 | DIAGNOSTICS | 123 | DIAGNOSTICS |
80 | scp exits with 0 on success or >0 if an error occurred. | 124 | scp exits with 0 on success or >0 if an error occurred. |
@@ -88,7 +132,7 @@ HISTORY | |||
88 | the University of California. | 132 | the University of California. |
89 | 133 | ||
90 | AUTHORS | 134 | AUTHORS |
91 | Timo Rinne <tri@iki.fi> and | 135 | Timo Rinne <tri@iki.fi> |
92 | Tatu Ylonen <ylo@cs.hut.fi> | 136 | Tatu Ylonen <ylo@cs.hut.fi> |
93 | 137 | ||
94 | OpenBSD 3.4 September 25, 1999 2 | 138 | OpenBSD 3.4 September 25, 1999 3 |
@@ -9,7 +9,7 @@ | |||
9 | .\" | 9 | .\" |
10 | .\" Created: Sun May 7 00:14:37 1995 ylo | 10 | .\" Created: Sun May 7 00:14:37 1995 ylo |
11 | .\" | 11 | .\" |
12 | .\" $OpenBSD: scp.1,v 1.28 2003/06/10 09:12:11 jmc Exp $ | 12 | .\" $OpenBSD: scp.1,v 1.32 2003/12/16 15:49:51 markus Exp $ |
13 | .\" | 13 | .\" |
14 | .Dd September 25, 1999 | 14 | .Dd September 25, 1999 |
15 | .Dt SCP 1 | 15 | .Dt SCP 1 |
@@ -20,24 +20,24 @@ | |||
20 | .Sh SYNOPSIS | 20 | .Sh SYNOPSIS |
21 | .Nm scp | 21 | .Nm scp |
22 | .Bk -words | 22 | .Bk -words |
23 | .Op Fl pqrvBC1246 | 23 | .Op Fl 1246BCpqrv |
24 | .Op Fl F Ar ssh_config | ||
25 | .Op Fl S Ar program | ||
26 | .Op Fl P Ar port | ||
27 | .Op Fl c Ar cipher | 24 | .Op Fl c Ar cipher |
25 | .Op Fl F Ar ssh_config | ||
28 | .Op Fl i Ar identity_file | 26 | .Op Fl i Ar identity_file |
29 | .Op Fl l Ar limit | 27 | .Op Fl l Ar limit |
30 | .Op Fl o Ar ssh_option | 28 | .Op Fl o Ar ssh_option |
29 | .Op Fl P Ar port | ||
30 | .Op Fl S Ar program | ||
31 | .Sm off | 31 | .Sm off |
32 | .Oo | 32 | .Oo |
33 | .Op Ar user@ | 33 | .Op Ar user No @ |
34 | .Ar host1 No : | 34 | .Ar host1 No : |
35 | .Oc Ns Ar file1 | 35 | .Oc Ns Ar file1 |
36 | .Sm on | 36 | .Sm on |
37 | .Op Ar ... | 37 | .Op Ar ... |
38 | .Sm off | 38 | .Sm off |
39 | .Oo | 39 | .Oo |
40 | .Op Ar user@ | 40 | .Op Ar user No @ |
41 | .Ar host2 No : | 41 | .Ar host2 No : |
42 | .Oc Ar file2 | 42 | .Oc Ar file2 |
43 | .Sm on | 43 | .Sm on |
@@ -62,35 +62,24 @@ Copies between two remote hosts are permitted. | |||
62 | .Pp | 62 | .Pp |
63 | The options are as follows: | 63 | The options are as follows: |
64 | .Bl -tag -width Ds | 64 | .Bl -tag -width Ds |
65 | .It Fl c Ar cipher | 65 | .It Fl 1 |
66 | Selects the cipher to use for encrypting the data transfer. | 66 | Forces |
67 | This option is directly passed to | ||
68 | .Xr ssh 1 . | ||
69 | .It Fl i Ar identity_file | ||
70 | Selects the file from which the identity (private key) for RSA | ||
71 | authentication is read. | ||
72 | This option is directly passed to | ||
73 | .Xr ssh 1 . | ||
74 | .It Fl l Ar limit | ||
75 | Limits the used bandwidth, specified in Kbit/s. | ||
76 | .It Fl p | ||
77 | Preserves modification times, access times, and modes from the | ||
78 | original file. | ||
79 | .It Fl r | ||
80 | Recursively copy entire directories. | ||
81 | .It Fl v | ||
82 | Verbose mode. | ||
83 | Causes | ||
84 | .Nm | 67 | .Nm |
85 | and | 68 | to use protocol 1. |
86 | .Xr ssh 1 | 69 | .It Fl 2 |
87 | to print debugging messages about their progress. | 70 | Forces |
88 | This is helpful in | 71 | .Nm |
89 | debugging connection, authentication, and configuration problems. | 72 | to use protocol 2. |
73 | .It Fl 4 | ||
74 | Forces | ||
75 | .Nm | ||
76 | to use IPv4 addresses only. | ||
77 | .It Fl 6 | ||
78 | Forces | ||
79 | .Nm | ||
80 | to use IPv6 addresses only. | ||
90 | .It Fl B | 81 | .It Fl B |
91 | Selects batch mode (prevents asking for passwords or passphrases). | 82 | Selects batch mode (prevents asking for passwords or passphrases). |
92 | .It Fl q | ||
93 | Disables the progress meter. | ||
94 | .It Fl C | 83 | .It Fl C |
95 | Compression enable. | 84 | Compression enable. |
96 | Passes the | 85 | Passes the |
@@ -98,12 +87,78 @@ Passes the | |||
98 | flag to | 87 | flag to |
99 | .Xr ssh 1 | 88 | .Xr ssh 1 |
100 | to enable compression. | 89 | to enable compression. |
90 | .It Fl c Ar cipher | ||
91 | Selects the cipher to use for encrypting the data transfer. | ||
92 | This option is directly passed to | ||
93 | .Xr ssh 1 . | ||
101 | .It Fl F Ar ssh_config | 94 | .It Fl F Ar ssh_config |
102 | Specifies an alternative | 95 | Specifies an alternative |
103 | per-user configuration file for | 96 | per-user configuration file for |
104 | .Nm ssh . | 97 | .Nm ssh . |
105 | This option is directly passed to | 98 | This option is directly passed to |
106 | .Xr ssh 1 . | 99 | .Xr ssh 1 . |
100 | .It Fl i Ar identity_file | ||
101 | Selects the file from which the identity (private key) for RSA | ||
102 | authentication is read. | ||
103 | This option is directly passed to | ||
104 | .Xr ssh 1 . | ||
105 | .It Fl l Ar limit | ||
106 | Limits the used bandwidth, specified in Kbit/s. | ||
107 | .It Fl o Ar ssh_option | ||
108 | Can be used to pass options to | ||
109 | .Nm ssh | ||
110 | in the format used in | ||
111 | .Xr ssh_config 5 . | ||
112 | This is useful for specifying options | ||
113 | for which there is no separate | ||
114 | .Nm scp | ||
115 | command-line flag. | ||
116 | For full details of the options listed below, and their possible values, see | ||
117 | .Xr ssh_config 5 . | ||
118 | .Pp | ||
119 | .Bl -tag -width Ds -offset indent -compact | ||
120 | .It AddressFamily | ||
121 | .It BatchMode | ||
122 | .It BindAddress | ||
123 | .It ChallengeResponseAuthentication | ||
124 | .It CheckHostIP | ||
125 | .It Cipher | ||
126 | .It Ciphers | ||
127 | .It Compression | ||
128 | .It CompressionLevel | ||
129 | .It ConnectionAttempts | ||
130 | .It ConnectionTimeout | ||
131 | .It GlobalKnownHostsFile | ||
132 | .It GSSAPIAuthentication | ||
133 | .It GSSAPIDelegateCredentials | ||
134 | .It Host | ||
135 | .It HostbasedAuthentication | ||
136 | .It HostKeyAlgorithms | ||
137 | .It HostKeyAlias | ||
138 | .It HostName | ||
139 | .It IdentityFile | ||
140 | .It LogLevel | ||
141 | .It MACs | ||
142 | .It NoHostAuthenticationForLocalhost | ||
143 | .It NumberOfPasswordPrompts | ||
144 | .It PasswordAuthentication | ||
145 | .It Port | ||
146 | .It PreferredAuthentications | ||
147 | .It Protocol | ||
148 | .It ProxyCommand | ||
149 | .It PubkeyAuthentication | ||
150 | .It RhostsRSAAuthentication | ||
151 | .It RSAAuthentication | ||
152 | .It ServerAliveInterval | ||
153 | .It ServerAliveCountMax | ||
154 | .It SmartcardDevice | ||
155 | .It StrictHostKeyChecking | ||
156 | .It TCPKeepAlive | ||
157 | .It UsePrivilegedPort | ||
158 | .It User | ||
159 | .It UserKnownHostsFile | ||
160 | .It VerifyHostKeyDNS | ||
161 | .El | ||
107 | .It Fl P Ar port | 162 | .It Fl P Ar port |
108 | Specifies the port to connect to on the remote host. | 163 | Specifies the port to connect to on the remote host. |
109 | Note that this option is written with a capital | 164 | Note that this option is written with a capital |
@@ -112,6 +167,13 @@ because | |||
112 | .Fl p | 167 | .Fl p |
113 | is already reserved for preserving the times and modes of the file in | 168 | is already reserved for preserving the times and modes of the file in |
114 | .Xr rcp 1 . | 169 | .Xr rcp 1 . |
170 | .It Fl p | ||
171 | Preserves modification times, access times, and modes from the | ||
172 | original file. | ||
173 | .It Fl q | ||
174 | Disables the progress meter. | ||
175 | .It Fl r | ||
176 | Recursively copy entire directories. | ||
115 | .It Fl S Ar program | 177 | .It Fl S Ar program |
116 | Name of | 178 | Name of |
117 | .Ar program | 179 | .Ar program |
@@ -119,31 +181,15 @@ to use for the encrypted connection. | |||
119 | The program must understand | 181 | The program must understand |
120 | .Xr ssh 1 | 182 | .Xr ssh 1 |
121 | options. | 183 | options. |
122 | .It Fl o Ar ssh_option | 184 | .It Fl v |
123 | Can be used to pass options to | 185 | Verbose mode. |
124 | .Nm ssh | 186 | Causes |
125 | in the format used in | ||
126 | .Xr ssh_config 5 . | ||
127 | This is useful for specifying options | ||
128 | for which there is no separate | ||
129 | .Nm scp | ||
130 | command-line flag. | ||
131 | .It Fl 1 | ||
132 | Forces | ||
133 | .Nm | ||
134 | to use protocol 1. | ||
135 | .It Fl 2 | ||
136 | Forces | ||
137 | .Nm | ||
138 | to use protocol 2. | ||
139 | .It Fl 4 | ||
140 | Forces | ||
141 | .Nm | ||
142 | to use IPv4 addresses only. | ||
143 | .It Fl 6 | ||
144 | Forces | ||
145 | .Nm | 187 | .Nm |
146 | to use IPv6 addresses only. | 188 | and |
189 | .Xr ssh 1 | ||
190 | to print debugging messages about their progress. | ||
191 | This is helpful in | ||
192 | debugging connection, authentication, and configuration problems. | ||
147 | .El | 193 | .El |
148 | .Sh DIAGNOSTICS | 194 | .Sh DIAGNOSTICS |
149 | .Nm | 195 | .Nm |
@@ -165,5 +211,4 @@ program in BSD source code from the Regents of the University of | |||
165 | California. | 211 | California. |
166 | .Sh AUTHORS | 212 | .Sh AUTHORS |
167 | .An Timo Rinne Aq tri@iki.fi | 213 | .An Timo Rinne Aq tri@iki.fi |
168 | and | ||
169 | .An Tatu Ylonen Aq ylo@cs.hut.fi | 214 | .An Tatu Ylonen Aq ylo@cs.hut.fi |
@@ -71,7 +71,7 @@ | |||
71 | */ | 71 | */ |
72 | 72 | ||
73 | #include "includes.h" | 73 | #include "includes.h" |
74 | RCSID("$OpenBSD: scp.c,v 1.108 2003/07/18 01:54:25 deraadt Exp $"); | 74 | RCSID("$OpenBSD: scp.c,v 1.113 2003/11/23 23:21:21 djm Exp $"); |
75 | 75 | ||
76 | #include "xmalloc.h" | 76 | #include "xmalloc.h" |
77 | #include "atomicio.h" | 77 | #include "atomicio.h" |
@@ -92,7 +92,7 @@ void bwlimit(int); | |||
92 | arglist args; | 92 | arglist args; |
93 | 93 | ||
94 | /* Bandwidth limit */ | 94 | /* Bandwidth limit */ |
95 | off_t limitbw = 0; | 95 | off_t limit_rate = 0; |
96 | 96 | ||
97 | /* Name of current file being transferred. */ | 97 | /* Name of current file being transferred. */ |
98 | char *curfile; | 98 | char *curfile; |
@@ -257,7 +257,7 @@ main(int argc, char **argv) | |||
257 | speed = strtod(optarg, &endp); | 257 | speed = strtod(optarg, &endp); |
258 | if (speed <= 0 || *endp != '\0') | 258 | if (speed <= 0 || *endp != '\0') |
259 | usage(); | 259 | usage(); |
260 | limitbw = speed * 1024; | 260 | limit_rate = speed * 1024; |
261 | break; | 261 | break; |
262 | case 'p': | 262 | case 'p': |
263 | pflag = 1; | 263 | pflag = 1; |
@@ -273,6 +273,7 @@ main(int argc, char **argv) | |||
273 | verbose_mode = 1; | 273 | verbose_mode = 1; |
274 | break; | 274 | break; |
275 | case 'q': | 275 | case 'q': |
276 | addargs(&args, "-q"); | ||
276 | showprogress = 0; | 277 | showprogress = 0; |
277 | break; | 278 | break; |
278 | 279 | ||
@@ -426,7 +427,8 @@ toremote(char *targ, int argc, char **argv) | |||
426 | } | 427 | } |
427 | if (verbose_mode) | 428 | if (verbose_mode) |
428 | fprintf(stderr, "Executing: %s\n", bp); | 429 | fprintf(stderr, "Executing: %s\n", bp); |
429 | (void) system(bp); | 430 | if (system(bp) != 0) |
431 | errs = 1; | ||
430 | (void) xfree(bp); | 432 | (void) xfree(bp); |
431 | } else { /* local to remote */ | 433 | } else { /* local to remote */ |
432 | if (remin == -1) { | 434 | if (remin == -1) { |
@@ -587,7 +589,7 @@ next: (void) close(fd); | |||
587 | haderr = result >= 0 ? EIO : errno; | 589 | haderr = result >= 0 ? EIO : errno; |
588 | statbytes += result; | 590 | statbytes += result; |
589 | } | 591 | } |
590 | if (limitbw) | 592 | if (limit_rate) |
591 | bwlimit(amt); | 593 | bwlimit(amt); |
592 | } | 594 | } |
593 | if (showprogress) | 595 | if (showprogress) |
@@ -679,7 +681,7 @@ bwlimit(int amount) | |||
679 | return; | 681 | return; |
680 | 682 | ||
681 | lamt *= 8; | 683 | lamt *= 8; |
682 | wait = (double)1000000L * lamt / limitbw; | 684 | wait = (double)1000000L * lamt / limit_rate; |
683 | 685 | ||
684 | bwstart.tv_sec = wait / 1000000L; | 686 | bwstart.tv_sec = wait / 1000000L; |
685 | bwstart.tv_usec = wait % 1000000L; | 687 | bwstart.tv_usec = wait % 1000000L; |
@@ -905,8 +907,8 @@ bad: run_err("%s: %s", np, strerror(errno)); | |||
905 | cp += j; | 907 | cp += j; |
906 | statbytes += j; | 908 | statbytes += j; |
907 | } while (amt > 0); | 909 | } while (amt > 0); |
908 | 910 | ||
909 | if (limitbw) | 911 | if (limit_rate) |
910 | bwlimit(4096); | 912 | bwlimit(4096); |
911 | 913 | ||
912 | if (count == bp->cnt) { | 914 | if (count == bp->cnt) { |
@@ -1018,8 +1020,8 @@ void | |||
1018 | usage(void) | 1020 | usage(void) |
1019 | { | 1021 | { |
1020 | (void) fprintf(stderr, | 1022 | (void) fprintf(stderr, |
1021 | "usage: scp [-pqrvBC1246] [-F config] [-S program] [-P port]\n" | 1023 | "usage: scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]\n" |
1022 | " [-c cipher] [-i identity] [-l limit] [-o option]\n" | 1024 | " [-l limit] [-o ssh_option] [-P port] [-S program]\n" |
1023 | " [[user@]host1:]file1 [...] [[user@]host2:]file2\n"); | 1025 | " [[user@]host1:]file1 [...] [[user@]host2:]file2\n"); |
1024 | exit(1); | 1026 | exit(1); |
1025 | } | 1027 | } |
diff --git a/servconf.c b/servconf.c index 58f49a2f4..a72246b6c 100644 --- a/servconf.c +++ b/servconf.c | |||
@@ -10,7 +10,7 @@ | |||
10 | */ | 10 | */ |
11 | 11 | ||
12 | #include "includes.h" | 12 | #include "includes.h" |
13 | RCSID("$OpenBSD: servconf.c,v 1.127 2003/09/01 18:15:50 markus Exp $"); | 13 | RCSID("$OpenBSD: servconf.c,v 1.130 2003/12/23 16:12:10 jakob Exp $"); |
14 | 14 | ||
15 | #include "ssh.h" | 15 | #include "ssh.h" |
16 | #include "log.h" | 16 | #include "log.h" |
@@ -61,7 +61,7 @@ initialize_server_options(ServerOptions *options) | |||
61 | options->x11_use_localhost = -1; | 61 | options->x11_use_localhost = -1; |
62 | options->xauth_location = NULL; | 62 | options->xauth_location = NULL; |
63 | options->strict_modes = -1; | 63 | options->strict_modes = -1; |
64 | options->keepalives = -1; | 64 | options->tcp_keep_alive = -1; |
65 | options->log_facility = SYSLOG_FACILITY_NOT_SET; | 65 | options->log_facility = SYSLOG_FACILITY_NOT_SET; |
66 | options->log_level = SYSLOG_LEVEL_NOT_SET; | 66 | options->log_level = SYSLOG_LEVEL_NOT_SET; |
67 | options->rhosts_rsa_authentication = -1; | 67 | options->rhosts_rsa_authentication = -1; |
@@ -72,6 +72,7 @@ initialize_server_options(ServerOptions *options) | |||
72 | options->kerberos_authentication = -1; | 72 | options->kerberos_authentication = -1; |
73 | options->kerberos_or_local_passwd = -1; | 73 | options->kerberos_or_local_passwd = -1; |
74 | options->kerberos_ticket_cleanup = -1; | 74 | options->kerberos_ticket_cleanup = -1; |
75 | options->kerberos_get_afs_token = -1; | ||
75 | options->gss_authentication=-1; | 76 | options->gss_authentication=-1; |
76 | options->gss_cleanup_creds = -1; | 77 | options->gss_cleanup_creds = -1; |
77 | options->password_authentication = -1; | 78 | options->password_authentication = -1; |
@@ -159,8 +160,8 @@ fill_default_server_options(ServerOptions *options) | |||
159 | options->xauth_location = _PATH_XAUTH; | 160 | options->xauth_location = _PATH_XAUTH; |
160 | if (options->strict_modes == -1) | 161 | if (options->strict_modes == -1) |
161 | options->strict_modes = 1; | 162 | options->strict_modes = 1; |
162 | if (options->keepalives == -1) | 163 | if (options->tcp_keep_alive == -1) |
163 | options->keepalives = 1; | 164 | options->tcp_keep_alive = 1; |
164 | if (options->log_facility == SYSLOG_FACILITY_NOT_SET) | 165 | if (options->log_facility == SYSLOG_FACILITY_NOT_SET) |
165 | options->log_facility = SYSLOG_FACILITY_AUTH; | 166 | options->log_facility = SYSLOG_FACILITY_AUTH; |
166 | if (options->log_level == SYSLOG_LEVEL_NOT_SET) | 167 | if (options->log_level == SYSLOG_LEVEL_NOT_SET) |
@@ -181,6 +182,8 @@ fill_default_server_options(ServerOptions *options) | |||
181 | options->kerberos_or_local_passwd = 1; | 182 | options->kerberos_or_local_passwd = 1; |
182 | if (options->kerberos_ticket_cleanup == -1) | 183 | if (options->kerberos_ticket_cleanup == -1) |
183 | options->kerberos_ticket_cleanup = 1; | 184 | options->kerberos_ticket_cleanup = 1; |
185 | if (options->kerberos_get_afs_token == -1) | ||
186 | options->kerberos_get_afs_token = 0; | ||
184 | if (options->gss_authentication == -1) | 187 | if (options->gss_authentication == -1) |
185 | options->gss_authentication = 0; | 188 | options->gss_authentication = 0; |
186 | if (options->gss_cleanup_creds == -1) | 189 | if (options->gss_cleanup_creds == -1) |
@@ -250,11 +253,12 @@ typedef enum { | |||
250 | sPermitRootLogin, sLogFacility, sLogLevel, | 253 | sPermitRootLogin, sLogFacility, sLogLevel, |
251 | sRhostsRSAAuthentication, sRSAAuthentication, | 254 | sRhostsRSAAuthentication, sRSAAuthentication, |
252 | sKerberosAuthentication, sKerberosOrLocalPasswd, sKerberosTicketCleanup, | 255 | sKerberosAuthentication, sKerberosOrLocalPasswd, sKerberosTicketCleanup, |
256 | sKerberosGetAFSToken, | ||
253 | sKerberosTgtPassing, sChallengeResponseAuthentication, | 257 | sKerberosTgtPassing, sChallengeResponseAuthentication, |
254 | sPasswordAuthentication, sKbdInteractiveAuthentication, sListenAddress, | 258 | sPasswordAuthentication, sKbdInteractiveAuthentication, sListenAddress, |
255 | sPrintMotd, sPrintLastLog, sIgnoreRhosts, | 259 | sPrintMotd, sPrintLastLog, sIgnoreRhosts, |
256 | sX11Forwarding, sX11DisplayOffset, sX11UseLocalhost, | 260 | sX11Forwarding, sX11DisplayOffset, sX11UseLocalhost, |
257 | sStrictModes, sEmptyPasswd, sKeepAlives, | 261 | sStrictModes, sEmptyPasswd, sTCPKeepAlive, |
258 | sPermitUserEnvironment, sUseLogin, sAllowTcpForwarding, sCompression, | 262 | sPermitUserEnvironment, sUseLogin, sAllowTcpForwarding, sCompression, |
259 | sAllowUsers, sDenyUsers, sAllowGroups, sDenyGroups, | 263 | sAllowUsers, sDenyUsers, sAllowGroups, sDenyGroups, |
260 | sIgnoreUserKnownHosts, sCiphers, sMacs, sProtocol, sPidFile, | 264 | sIgnoreUserKnownHosts, sCiphers, sMacs, sProtocol, sPidFile, |
@@ -301,19 +305,25 @@ static struct { | |||
301 | { "kerberosauthentication", sKerberosAuthentication }, | 305 | { "kerberosauthentication", sKerberosAuthentication }, |
302 | { "kerberosorlocalpasswd", sKerberosOrLocalPasswd }, | 306 | { "kerberosorlocalpasswd", sKerberosOrLocalPasswd }, |
303 | { "kerberosticketcleanup", sKerberosTicketCleanup }, | 307 | { "kerberosticketcleanup", sKerberosTicketCleanup }, |
308 | #ifdef USE_AFS | ||
309 | { "kerberosgetafstoken", sKerberosGetAFSToken }, | ||
310 | #else | ||
311 | { "kerberosgetafstoken", sUnsupported }, | ||
312 | #endif | ||
304 | #else | 313 | #else |
305 | { "kerberosauthentication", sUnsupported }, | 314 | { "kerberosauthentication", sUnsupported }, |
306 | { "kerberosorlocalpasswd", sUnsupported }, | 315 | { "kerberosorlocalpasswd", sUnsupported }, |
307 | { "kerberosticketcleanup", sUnsupported }, | 316 | { "kerberosticketcleanup", sUnsupported }, |
317 | { "kerberosgetafstoken", sUnsupported }, | ||
308 | #endif | 318 | #endif |
309 | { "kerberostgtpassing", sUnsupported }, | 319 | { "kerberostgtpassing", sUnsupported }, |
310 | { "afstokenpassing", sUnsupported }, | 320 | { "afstokenpassing", sUnsupported }, |
311 | #ifdef GSSAPI | 321 | #ifdef GSSAPI |
312 | { "gssapiauthentication", sGssAuthentication }, | 322 | { "gssapiauthentication", sGssAuthentication }, |
313 | { "gssapicleanupcreds", sGssCleanupCreds }, | 323 | { "gssapicleanupcredentials", sGssCleanupCreds }, |
314 | #else | 324 | #else |
315 | { "gssapiauthentication", sUnsupported }, | 325 | { "gssapiauthentication", sUnsupported }, |
316 | { "gssapicleanupcreds", sUnsupported }, | 326 | { "gssapicleanupcredentials", sUnsupported }, |
317 | #endif | 327 | #endif |
318 | { "passwordauthentication", sPasswordAuthentication }, | 328 | { "passwordauthentication", sPasswordAuthentication }, |
319 | { "kbdinteractiveauthentication", sKbdInteractiveAuthentication }, | 329 | { "kbdinteractiveauthentication", sKbdInteractiveAuthentication }, |
@@ -334,7 +344,8 @@ static struct { | |||
334 | { "permituserenvironment", sPermitUserEnvironment }, | 344 | { "permituserenvironment", sPermitUserEnvironment }, |
335 | { "uselogin", sUseLogin }, | 345 | { "uselogin", sUseLogin }, |
336 | { "compression", sCompression }, | 346 | { "compression", sCompression }, |
337 | { "keepalive", sKeepAlives }, | 347 | { "tcpkeepalive", sTCPKeepAlive }, |
348 | { "keepalive", sTCPKeepAlive }, /* obsolete alias */ | ||
338 | { "allowtcpforwarding", sAllowTcpForwarding }, | 349 | { "allowtcpforwarding", sAllowTcpForwarding }, |
339 | { "allowusers", sAllowUsers }, | 350 | { "allowusers", sAllowUsers }, |
340 | { "denyusers", sDenyUsers }, | 351 | { "denyusers", sDenyUsers }, |
@@ -629,6 +640,10 @@ parse_flag: | |||
629 | intptr = &options->kerberos_ticket_cleanup; | 640 | intptr = &options->kerberos_ticket_cleanup; |
630 | goto parse_flag; | 641 | goto parse_flag; |
631 | 642 | ||
643 | case sKerberosGetAFSToken: | ||
644 | intptr = &options->kerberos_get_afs_token; | ||
645 | goto parse_flag; | ||
646 | |||
632 | case sGssAuthentication: | 647 | case sGssAuthentication: |
633 | intptr = &options->gss_authentication; | 648 | intptr = &options->gss_authentication; |
634 | goto parse_flag; | 649 | goto parse_flag; |
@@ -677,8 +692,8 @@ parse_flag: | |||
677 | intptr = &options->strict_modes; | 692 | intptr = &options->strict_modes; |
678 | goto parse_flag; | 693 | goto parse_flag; |
679 | 694 | ||
680 | case sKeepAlives: | 695 | case sTCPKeepAlive: |
681 | intptr = &options->keepalives; | 696 | intptr = &options->tcp_keep_alive; |
682 | goto parse_flag; | 697 | goto parse_flag; |
683 | 698 | ||
684 | case sEmptyPasswd: | 699 | case sEmptyPasswd: |
diff --git a/servconf.h b/servconf.h index 828e94c5c..57c7e5fab 100644 --- a/servconf.h +++ b/servconf.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: servconf.h,v 1.65 2003/09/01 18:15:50 markus Exp $ */ | 1 | /* $OpenBSD: servconf.h,v 1.67 2003/12/23 16:12:10 jakob Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> | 4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> |
@@ -58,7 +58,7 @@ typedef struct { | |||
58 | int x11_use_localhost; /* If true, use localhost for fake X11 server. */ | 58 | int x11_use_localhost; /* If true, use localhost for fake X11 server. */ |
59 | char *xauth_location; /* Location of xauth program */ | 59 | char *xauth_location; /* Location of xauth program */ |
60 | int strict_modes; /* If true, require string home dir modes. */ | 60 | int strict_modes; /* If true, require string home dir modes. */ |
61 | int keepalives; /* If true, set SO_KEEPALIVE. */ | 61 | int tcp_keep_alive; /* If true, set SO_KEEPALIVE. */ |
62 | char *ciphers; /* Supported SSH2 ciphers. */ | 62 | char *ciphers; /* Supported SSH2 ciphers. */ |
63 | char *macs; /* Supported SSH2 macs. */ | 63 | char *macs; /* Supported SSH2 macs. */ |
64 | int protocol; /* Supported protocol versions. */ | 64 | int protocol; /* Supported protocol versions. */ |
@@ -80,6 +80,8 @@ typedef struct { | |||
80 | * /etc/passwd */ | 80 | * /etc/passwd */ |
81 | int kerberos_ticket_cleanup; /* If true, destroy ticket | 81 | int kerberos_ticket_cleanup; /* If true, destroy ticket |
82 | * file on logout. */ | 82 | * file on logout. */ |
83 | int kerberos_get_afs_token; /* If true, try to get AFS token if | ||
84 | * authenticated with Kerberos. */ | ||
83 | int gss_authentication; /* If true, permit GSSAPI authentication */ | 85 | int gss_authentication; /* If true, permit GSSAPI authentication */ |
84 | int gss_cleanup_creds; /* If true, destroy cred cache on logout */ | 86 | int gss_cleanup_creds; /* If true, destroy cred cache on logout */ |
85 | int password_authentication; /* If true, permit password | 87 | int password_authentication; /* If true, permit password |
diff --git a/serverloop.c b/serverloop.c index a95390273..a777a048d 100644 --- a/serverloop.c +++ b/serverloop.c | |||
@@ -35,7 +35,7 @@ | |||
35 | */ | 35 | */ |
36 | 36 | ||
37 | #include "includes.h" | 37 | #include "includes.h" |
38 | RCSID("$OpenBSD: serverloop.c,v 1.110 2003/06/24 08:23:46 markus Exp $"); | 38 | RCSID("$OpenBSD: serverloop.c,v 1.115 2004/01/19 21:25:15 markus Exp $"); |
39 | 39 | ||
40 | #include "xmalloc.h" | 40 | #include "xmalloc.h" |
41 | #include "packet.h" | 41 | #include "packet.h" |
@@ -60,7 +60,7 @@ extern ServerOptions options; | |||
60 | 60 | ||
61 | /* XXX */ | 61 | /* XXX */ |
62 | extern Kex *xxx_kex; | 62 | extern Kex *xxx_kex; |
63 | static Authctxt *xxx_authctxt; | 63 | extern Authctxt *the_authctxt; |
64 | 64 | ||
65 | static Buffer stdin_buffer; /* Buffer for stdin data. */ | 65 | static Buffer stdin_buffer; /* Buffer for stdin data. */ |
66 | static Buffer stdout_buffer; /* Buffer for stdout data. */ | 66 | static Buffer stdout_buffer; /* Buffer for stdout data. */ |
@@ -212,26 +212,23 @@ make_packets_from_stdout_data(void) | |||
212 | static void | 212 | static void |
213 | client_alive_check(void) | 213 | client_alive_check(void) |
214 | { | 214 | { |
215 | static int had_channel = 0; | 215 | int channel_id; |
216 | int id; | ||
217 | |||
218 | id = channel_find_open(); | ||
219 | if (id == -1) { | ||
220 | if (!had_channel) | ||
221 | return; | ||
222 | packet_disconnect("No open channels after timeout!"); | ||
223 | } | ||
224 | had_channel = 1; | ||
225 | 216 | ||
226 | /* timeout, check to see how many we have had */ | 217 | /* timeout, check to see how many we have had */ |
227 | if (++client_alive_timeouts > options.client_alive_count_max) | 218 | if (++client_alive_timeouts > options.client_alive_count_max) |
228 | packet_disconnect("Timeout, your session not responding."); | 219 | packet_disconnect("Timeout, your session not responding."); |
229 | 220 | ||
230 | /* | 221 | /* |
231 | * send a bogus channel request with "wantreply", | 222 | * send a bogus global/channel request with "wantreply", |
232 | * we should get back a failure | 223 | * we should get back a failure |
233 | */ | 224 | */ |
234 | channel_request_start(id, "keepalive@openssh.com", 1); | 225 | if ((channel_id = channel_find_open()) == -1) { |
226 | packet_start(SSH2_MSG_GLOBAL_REQUEST); | ||
227 | packet_put_cstring("keepalive@openssh.com"); | ||
228 | packet_put_char(1); /* boolean: want reply */ | ||
229 | } else { | ||
230 | channel_request_start(channel_id, "keepalive@openssh.com", 1); | ||
231 | } | ||
235 | packet_send(); | 232 | packet_send(); |
236 | } | 233 | } |
237 | 234 | ||
@@ -355,13 +352,13 @@ process_input(fd_set * readset) | |||
355 | connection_closed = 1; | 352 | connection_closed = 1; |
356 | if (compat20) | 353 | if (compat20) |
357 | return; | 354 | return; |
358 | fatal_cleanup(); | 355 | cleanup_exit(255); |
359 | } else if (len < 0) { | 356 | } else if (len < 0) { |
360 | if (errno != EINTR && errno != EAGAIN) { | 357 | if (errno != EINTR && errno != EAGAIN) { |
361 | verbose("Read error from remote host " | 358 | verbose("Read error from remote host " |
362 | "%.100s: %.100s", | 359 | "%.100s: %.100s", |
363 | get_remote_ipaddr(), strerror(errno)); | 360 | get_remote_ipaddr(), strerror(errno)); |
364 | fatal_cleanup(); | 361 | cleanup_exit(255); |
365 | } | 362 | } |
366 | } else { | 363 | } else { |
367 | /* Buffer any received data. */ | 364 | /* Buffer any received data. */ |
@@ -756,8 +753,6 @@ server_loop2(Authctxt *authctxt) | |||
756 | max_fd = MAX(connection_in, connection_out); | 753 | max_fd = MAX(connection_in, connection_out); |
757 | max_fd = MAX(max_fd, notify_pipe[0]); | 754 | max_fd = MAX(max_fd, notify_pipe[0]); |
758 | 755 | ||
759 | xxx_authctxt = authctxt; | ||
760 | |||
761 | server_init_dispatch(); | 756 | server_init_dispatch(); |
762 | 757 | ||
763 | for (;;) { | 758 | for (;;) { |
@@ -799,9 +794,9 @@ server_loop2(Authctxt *authctxt) | |||
799 | } | 794 | } |
800 | 795 | ||
801 | static void | 796 | static void |
802 | server_input_channel_failure(int type, u_int32_t seq, void *ctxt) | 797 | server_input_keep_alive(int type, u_int32_t seq, void *ctxt) |
803 | { | 798 | { |
804 | debug("Got CHANNEL_FAILURE for keepalive"); | 799 | debug("Got %d/%u for keepalive", type, seq); |
805 | /* | 800 | /* |
806 | * reset timeout, since we got a sane answer from the client. | 801 | * reset timeout, since we got a sane answer from the client. |
807 | * even if this was generated by something other than | 802 | * even if this was generated by something other than |
@@ -810,7 +805,6 @@ server_input_channel_failure(int type, u_int32_t seq, void *ctxt) | |||
810 | client_alive_timeouts = 0; | 805 | client_alive_timeouts = 0; |
811 | } | 806 | } |
812 | 807 | ||
813 | |||
814 | static void | 808 | static void |
815 | server_input_stdin_data(int type, u_int32_t seq, void *ctxt) | 809 | server_input_stdin_data(int type, u_int32_t seq, void *ctxt) |
816 | { | 810 | { |
@@ -856,7 +850,7 @@ server_input_window_size(int type, u_int32_t seq, void *ctxt) | |||
856 | } | 850 | } |
857 | 851 | ||
858 | static Channel * | 852 | static Channel * |
859 | server_request_direct_tcpip(char *ctype) | 853 | server_request_direct_tcpip(void) |
860 | { | 854 | { |
861 | Channel *c; | 855 | Channel *c; |
862 | int sock; | 856 | int sock; |
@@ -878,14 +872,14 @@ server_request_direct_tcpip(char *ctype) | |||
878 | xfree(originator); | 872 | xfree(originator); |
879 | if (sock < 0) | 873 | if (sock < 0) |
880 | return NULL; | 874 | return NULL; |
881 | c = channel_new(ctype, SSH_CHANNEL_CONNECTING, | 875 | c = channel_new("direct-tcpip", SSH_CHANNEL_CONNECTING, |
882 | sock, sock, -1, CHAN_TCP_WINDOW_DEFAULT, | 876 | sock, sock, -1, CHAN_TCP_WINDOW_DEFAULT, |
883 | CHAN_TCP_PACKET_DEFAULT, 0, "direct-tcpip", 1); | 877 | CHAN_TCP_PACKET_DEFAULT, 0, "direct-tcpip", 1); |
884 | return c; | 878 | return c; |
885 | } | 879 | } |
886 | 880 | ||
887 | static Channel * | 881 | static Channel * |
888 | server_request_session(char *ctype) | 882 | server_request_session(void) |
889 | { | 883 | { |
890 | Channel *c; | 884 | Channel *c; |
891 | 885 | ||
@@ -897,10 +891,10 @@ server_request_session(char *ctype) | |||
897 | * SSH_CHANNEL_LARVAL. Additionally, a callback for handling all | 891 | * SSH_CHANNEL_LARVAL. Additionally, a callback for handling all |
898 | * CHANNEL_REQUEST messages is registered. | 892 | * CHANNEL_REQUEST messages is registered. |
899 | */ | 893 | */ |
900 | c = channel_new(ctype, SSH_CHANNEL_LARVAL, | 894 | c = channel_new("session", SSH_CHANNEL_LARVAL, |
901 | -1, -1, -1, /*window size*/0, CHAN_SES_PACKET_DEFAULT, | 895 | -1, -1, -1, /*window size*/0, CHAN_SES_PACKET_DEFAULT, |
902 | 0, "server-session", 1); | 896 | 0, "server-session", 1); |
903 | if (session_open(xxx_authctxt, c->self) != 1) { | 897 | if (session_open(the_authctxt, c->self) != 1) { |
904 | debug("session open failed, free channel %d", c->self); | 898 | debug("session open failed, free channel %d", c->self); |
905 | channel_free(c); | 899 | channel_free(c); |
906 | return NULL; | 900 | return NULL; |
@@ -926,9 +920,9 @@ server_input_channel_open(int type, u_int32_t seq, void *ctxt) | |||
926 | ctype, rchan, rwindow, rmaxpack); | 920 | ctype, rchan, rwindow, rmaxpack); |
927 | 921 | ||
928 | if (strcmp(ctype, "session") == 0) { | 922 | if (strcmp(ctype, "session") == 0) { |
929 | c = server_request_session(ctype); | 923 | c = server_request_session(); |
930 | } else if (strcmp(ctype, "direct-tcpip") == 0) { | 924 | } else if (strcmp(ctype, "direct-tcpip") == 0) { |
931 | c = server_request_direct_tcpip(ctype); | 925 | c = server_request_direct_tcpip(); |
932 | } | 926 | } |
933 | if (c != NULL) { | 927 | if (c != NULL) { |
934 | debug("server_input_channel_open: confirm %s", ctype); | 928 | debug("server_input_channel_open: confirm %s", ctype); |
@@ -974,9 +968,9 @@ server_input_global_request(int type, u_int32_t seq, void *ctxt) | |||
974 | char *listen_address; | 968 | char *listen_address; |
975 | u_short listen_port; | 969 | u_short listen_port; |
976 | 970 | ||
977 | pw = auth_get_user(); | 971 | pw = the_authctxt->pw; |
978 | if (pw == NULL) | 972 | if (pw == NULL || !the_authctxt->valid) |
979 | fatal("server_input_global_request: no user"); | 973 | fatal("server_input_global_request: no/invalid user"); |
980 | listen_address = packet_get_string(NULL); | 974 | listen_address = packet_get_string(NULL); |
981 | listen_port = (u_short)packet_get_int(); | 975 | listen_port = (u_short)packet_get_int(); |
982 | debug("server_input_global_request: tcpip-forward listen %s port %d", | 976 | debug("server_input_global_request: tcpip-forward listen %s port %d", |
@@ -1050,7 +1044,9 @@ server_init_dispatch_20(void) | |||
1050 | dispatch_set(SSH2_MSG_CHANNEL_WINDOW_ADJUST, &channel_input_window_adjust); | 1044 | dispatch_set(SSH2_MSG_CHANNEL_WINDOW_ADJUST, &channel_input_window_adjust); |
1051 | dispatch_set(SSH2_MSG_GLOBAL_REQUEST, &server_input_global_request); | 1045 | dispatch_set(SSH2_MSG_GLOBAL_REQUEST, &server_input_global_request); |
1052 | /* client_alive */ | 1046 | /* client_alive */ |
1053 | dispatch_set(SSH2_MSG_CHANNEL_FAILURE, &server_input_channel_failure); | 1047 | dispatch_set(SSH2_MSG_CHANNEL_FAILURE, &server_input_keep_alive); |
1048 | dispatch_set(SSH2_MSG_REQUEST_SUCCESS, &server_input_keep_alive); | ||
1049 | dispatch_set(SSH2_MSG_REQUEST_FAILURE, &server_input_keep_alive); | ||
1054 | /* rekeying */ | 1050 | /* rekeying */ |
1055 | dispatch_set(SSH2_MSG_KEXINIT, &kex_input_kexinit); | 1051 | dispatch_set(SSH2_MSG_KEXINIT, &kex_input_kexinit); |
1056 | } | 1052 | } |
@@ -33,7 +33,7 @@ | |||
33 | */ | 33 | */ |
34 | 34 | ||
35 | #include "includes.h" | 35 | #include "includes.h" |
36 | RCSID("$OpenBSD: session.c,v 1.164 2003/09/18 08:49:45 markus Exp $"); | 36 | RCSID("$OpenBSD: session.c,v 1.172 2004/01/30 09:48:57 markus Exp $"); |
37 | 37 | ||
38 | #include "ssh.h" | 38 | #include "ssh.h" |
39 | #include "ssh1.h" | 39 | #include "ssh1.h" |
@@ -58,6 +58,10 @@ RCSID("$OpenBSD: session.c,v 1.164 2003/09/18 08:49:45 markus Exp $"); | |||
58 | #include "session.h" | 58 | #include "session.h" |
59 | #include "monitor_wrap.h" | 59 | #include "monitor_wrap.h" |
60 | 60 | ||
61 | #if defined(KRB5) && defined(USE_AFS) | ||
62 | #include <kafs.h> | ||
63 | #endif | ||
64 | |||
61 | #ifdef GSSAPI | 65 | #ifdef GSSAPI |
62 | #include "ssh-gss.h" | 66 | #include "ssh-gss.h" |
63 | #endif | 67 | #endif |
@@ -66,7 +70,7 @@ RCSID("$OpenBSD: session.c,v 1.164 2003/09/18 08:49:45 markus Exp $"); | |||
66 | 70 | ||
67 | Session *session_new(void); | 71 | Session *session_new(void); |
68 | void session_set_fds(Session *, int, int, int); | 72 | void session_set_fds(Session *, int, int, int); |
69 | void session_pty_cleanup(void *); | 73 | void session_pty_cleanup(Session *); |
70 | void session_proctitle(Session *); | 74 | void session_proctitle(Session *); |
71 | int session_setup_x11fwd(Session *); | 75 | int session_setup_x11fwd(Session *); |
72 | void do_exec_pty(Session *, const char *); | 76 | void do_exec_pty(Session *, const char *); |
@@ -106,6 +110,8 @@ Session sessions[MAX_SESSIONS]; | |||
106 | login_cap_t *lc; | 110 | login_cap_t *lc; |
107 | #endif | 111 | #endif |
108 | 112 | ||
113 | static int is_child = 0; | ||
114 | |||
109 | /* Name and directory of socket for authentication agent forwarding. */ | 115 | /* Name and directory of socket for authentication agent forwarding. */ |
110 | static char *auth_sock_name = NULL; | 116 | static char *auth_sock_name = NULL; |
111 | static char *auth_sock_dir = NULL; | 117 | static char *auth_sock_dir = NULL; |
@@ -113,10 +119,8 @@ static char *auth_sock_dir = NULL; | |||
113 | /* removes the agent forwarding socket */ | 119 | /* removes the agent forwarding socket */ |
114 | 120 | ||
115 | static void | 121 | static void |
116 | auth_sock_cleanup_proc(void *_pw) | 122 | auth_sock_cleanup_proc(struct passwd *pw) |
117 | { | 123 | { |
118 | struct passwd *pw = _pw; | ||
119 | |||
120 | if (auth_sock_name != NULL) { | 124 | if (auth_sock_name != NULL) { |
121 | temporarily_use_uid(pw); | 125 | temporarily_use_uid(pw); |
122 | unlink(auth_sock_name); | 126 | unlink(auth_sock_name); |
@@ -144,7 +148,7 @@ auth_input_request_forwarding(struct passwd * pw) | |||
144 | /* Allocate a buffer for the socket name, and format the name. */ | 148 | /* Allocate a buffer for the socket name, and format the name. */ |
145 | auth_sock_name = xmalloc(MAXPATHLEN); | 149 | auth_sock_name = xmalloc(MAXPATHLEN); |
146 | auth_sock_dir = xmalloc(MAXPATHLEN); | 150 | auth_sock_dir = xmalloc(MAXPATHLEN); |
147 | strlcpy(auth_sock_dir, "/tmp/ssh-XXXXXXXX", MAXPATHLEN); | 151 | strlcpy(auth_sock_dir, "/tmp/ssh-XXXXXXXXXX", MAXPATHLEN); |
148 | 152 | ||
149 | /* Create private directory for socket */ | 153 | /* Create private directory for socket */ |
150 | if (mkdtemp(auth_sock_dir) == NULL) { | 154 | if (mkdtemp(auth_sock_dir) == NULL) { |
@@ -160,9 +164,6 @@ auth_input_request_forwarding(struct passwd * pw) | |||
160 | snprintf(auth_sock_name, MAXPATHLEN, "%s/agent.%ld", | 164 | snprintf(auth_sock_name, MAXPATHLEN, "%s/agent.%ld", |
161 | auth_sock_dir, (long) getpid()); | 165 | auth_sock_dir, (long) getpid()); |
162 | 166 | ||
163 | /* delete agent socket on fatal() */ | ||
164 | fatal_add_cleanup(auth_sock_cleanup_proc, pw); | ||
165 | |||
166 | /* Create the socket. */ | 167 | /* Create the socket. */ |
167 | sock = socket(AF_UNIX, SOCK_STREAM, 0); | 168 | sock = socket(AF_UNIX, SOCK_STREAM, 0); |
168 | if (sock < 0) | 169 | if (sock < 0) |
@@ -180,7 +181,7 @@ auth_input_request_forwarding(struct passwd * pw) | |||
180 | restore_uid(); | 181 | restore_uid(); |
181 | 182 | ||
182 | /* Start listening on the socket. */ | 183 | /* Start listening on the socket. */ |
183 | if (listen(sock, 5) < 0) | 184 | if (listen(sock, SSH_LISTEN_BACKLOG) < 0) |
184 | packet_disconnect("listen: %.100s", strerror(errno)); | 185 | packet_disconnect("listen: %.100s", strerror(errno)); |
185 | 186 | ||
186 | /* Allocate a channel for the authentication agent socket. */ | 187 | /* Allocate a channel for the authentication agent socket. */ |
@@ -192,6 +193,15 @@ auth_input_request_forwarding(struct passwd * pw) | |||
192 | return 1; | 193 | return 1; |
193 | } | 194 | } |
194 | 195 | ||
196 | static void | ||
197 | display_loginmsg(void) | ||
198 | { | ||
199 | if (buffer_len(&loginmsg) > 0) { | ||
200 | buffer_append(&loginmsg, "\0", 1); | ||
201 | printf("%s\n", (char *)buffer_ptr(&loginmsg)); | ||
202 | buffer_clear(&loginmsg); | ||
203 | } | ||
204 | } | ||
195 | 205 | ||
196 | void | 206 | void |
197 | do_authenticated(Authctxt *authctxt) | 207 | do_authenticated(Authctxt *authctxt) |
@@ -207,7 +217,6 @@ do_authenticated(Authctxt *authctxt) | |||
207 | close(startup_pipe); | 217 | close(startup_pipe); |
208 | startup_pipe = -1; | 218 | startup_pipe = -1; |
209 | } | 219 | } |
210 | |||
211 | /* setup the channel layer */ | 220 | /* setup the channel layer */ |
212 | if (!no_port_forwarding_flag && options.allow_tcp_forwarding) | 221 | if (!no_port_forwarding_flag && options.allow_tcp_forwarding) |
213 | channel_permit_all_opens(); | 222 | channel_permit_all_opens(); |
@@ -217,13 +226,7 @@ do_authenticated(Authctxt *authctxt) | |||
217 | else | 226 | else |
218 | do_authenticated1(authctxt); | 227 | do_authenticated1(authctxt); |
219 | 228 | ||
220 | /* remove agent socket */ | 229 | do_cleanup(authctxt); |
221 | if (auth_sock_name != NULL) | ||
222 | auth_sock_cleanup_proc(authctxt->pw); | ||
223 | #ifdef KRB5 | ||
224 | if (options.kerberos_ticket_cleanup) | ||
225 | krb5_cleanup_proc(authctxt); | ||
226 | #endif | ||
227 | } | 230 | } |
228 | 231 | ||
229 | /* | 232 | /* |
@@ -395,17 +398,13 @@ do_exec_no_pty(Session *s, const char *command) | |||
395 | session_proctitle(s); | 398 | session_proctitle(s); |
396 | 399 | ||
397 | #if defined(USE_PAM) | 400 | #if defined(USE_PAM) |
398 | if (options.use_pam) { | 401 | if (options.use_pam && !use_privsep) |
399 | do_pam_setcred(1); | 402 | do_pam_setcred(1); |
400 | if (is_pam_password_change_required()) | ||
401 | packet_disconnect("Password change required but no " | ||
402 | "TTY available"); | ||
403 | } | ||
404 | #endif /* USE_PAM */ | 403 | #endif /* USE_PAM */ |
405 | 404 | ||
406 | /* Fork the child. */ | 405 | /* Fork the child. */ |
407 | if ((pid = fork()) == 0) { | 406 | if ((pid = fork()) == 0) { |
408 | fatal_remove_all_cleanups(); | 407 | is_child = 1; |
409 | 408 | ||
410 | /* Child. Reinitialize the log since the pid has changed. */ | 409 | /* Child. Reinitialize the log since the pid has changed. */ |
411 | log_init(__progname, options.log_level, options.log_facility, log_stderr); | 410 | log_init(__progname, options.log_level, options.log_facility, log_stderr); |
@@ -525,13 +524,14 @@ do_exec_pty(Session *s, const char *command) | |||
525 | #if defined(USE_PAM) | 524 | #if defined(USE_PAM) |
526 | if (options.use_pam) { | 525 | if (options.use_pam) { |
527 | do_pam_set_tty(s->tty); | 526 | do_pam_set_tty(s->tty); |
528 | do_pam_setcred(1); | 527 | if (!use_privsep) |
528 | do_pam_setcred(1); | ||
529 | } | 529 | } |
530 | #endif | 530 | #endif |
531 | 531 | ||
532 | /* Fork the child. */ | 532 | /* Fork the child. */ |
533 | if ((pid = fork()) == 0) { | 533 | if ((pid = fork()) == 0) { |
534 | fatal_remove_all_cleanups(); | 534 | is_child = 1; |
535 | 535 | ||
536 | /* Child. Reinitialize the log because the pid has changed. */ | 536 | /* Child. Reinitialize the log because the pid has changed. */ |
537 | log_init(__progname, options.log_level, options.log_facility, log_stderr); | 537 | log_init(__progname, options.log_level, options.log_facility, log_stderr); |
@@ -627,7 +627,7 @@ do_pre_login(Session *s) | |||
627 | if (getpeername(packet_get_connection_in(), | 627 | if (getpeername(packet_get_connection_in(), |
628 | (struct sockaddr *) & from, &fromlen) < 0) { | 628 | (struct sockaddr *) & from, &fromlen) < 0) { |
629 | debug("getpeername: %.100s", strerror(errno)); | 629 | debug("getpeername: %.100s", strerror(errno)); |
630 | fatal_cleanup(); | 630 | cleanup_exit(255); |
631 | } | 631 | } |
632 | } | 632 | } |
633 | 633 | ||
@@ -687,7 +687,7 @@ do_login(Session *s, const char *command) | |||
687 | if (getpeername(packet_get_connection_in(), | 687 | if (getpeername(packet_get_connection_in(), |
688 | (struct sockaddr *) & from, &fromlen) < 0) { | 688 | (struct sockaddr *) & from, &fromlen) < 0) { |
689 | debug("getpeername: %.100s", strerror(errno)); | 689 | debug("getpeername: %.100s", strerror(errno)); |
690 | fatal_cleanup(); | 690 | cleanup_exit(255); |
691 | } | 691 | } |
692 | } | 692 | } |
693 | 693 | ||
@@ -703,9 +703,10 @@ do_login(Session *s, const char *command) | |||
703 | * If password change is needed, do it now. | 703 | * If password change is needed, do it now. |
704 | * This needs to occur before the ~/.hushlogin check. | 704 | * This needs to occur before the ~/.hushlogin check. |
705 | */ | 705 | */ |
706 | if (options.use_pam && is_pam_password_change_required()) { | 706 | if (options.use_pam && !use_privsep && s->authctxt->force_pwchange) { |
707 | print_pam_messages(); | 707 | display_loginmsg(); |
708 | do_pam_chauthtok(); | 708 | do_pam_chauthtok(); |
709 | s->authctxt->force_pwchange = 0; | ||
709 | /* XXX - signal [net] parent to enable forwardings */ | 710 | /* XXX - signal [net] parent to enable forwardings */ |
710 | } | 711 | } |
711 | #endif | 712 | #endif |
@@ -713,17 +714,7 @@ do_login(Session *s, const char *command) | |||
713 | if (check_quietlogin(s, command)) | 714 | if (check_quietlogin(s, command)) |
714 | return; | 715 | return; |
715 | 716 | ||
716 | #ifdef USE_PAM | 717 | display_loginmsg(); |
717 | if (options.use_pam && !is_pam_password_change_required()) | ||
718 | print_pam_messages(); | ||
719 | #endif /* USE_PAM */ | ||
720 | |||
721 | /* display post-login message */ | ||
722 | if (buffer_len(&loginmsg) > 0) { | ||
723 | buffer_append(&loginmsg, "\0", 1); | ||
724 | printf("%s\n", (char *)buffer_ptr(&loginmsg)); | ||
725 | } | ||
726 | buffer_free(&loginmsg); | ||
727 | 718 | ||
728 | #ifndef NO_SSH_LASTLOG | 719 | #ifndef NO_SSH_LASTLOG |
729 | if (options.print_lastlog && s->last_login_time != 0) { | 720 | if (options.print_lastlog && s->last_login_time != 0) { |
@@ -915,7 +906,7 @@ read_etc_default_login(char ***env, u_int *envsize, uid_t uid) | |||
915 | { | 906 | { |
916 | char **tmpenv = NULL, *var; | 907 | char **tmpenv = NULL, *var; |
917 | u_int i, tmpenvsize = 0; | 908 | u_int i, tmpenvsize = 0; |
918 | mode_t mask; | 909 | u_long mask; |
919 | 910 | ||
920 | /* | 911 | /* |
921 | * We don't want to copy the whole file to the child's environment, | 912 | * We don't want to copy the whole file to the child's environment, |
@@ -933,11 +924,11 @@ read_etc_default_login(char ***env, u_int *envsize, uid_t uid) | |||
933 | var = child_get_env(tmpenv, "PATH"); | 924 | var = child_get_env(tmpenv, "PATH"); |
934 | if (var != NULL) | 925 | if (var != NULL) |
935 | child_set_env(env, envsize, "PATH", var); | 926 | child_set_env(env, envsize, "PATH", var); |
936 | 927 | ||
937 | if ((var = child_get_env(tmpenv, "UMASK")) != NULL) | 928 | if ((var = child_get_env(tmpenv, "UMASK")) != NULL) |
938 | if (sscanf(var, "%5lo", &mask) == 1) | 929 | if (sscanf(var, "%5lo", &mask) == 1) |
939 | umask(mask); | 930 | umask((mode_t)mask); |
940 | 931 | ||
941 | for (i = 0; tmpenv[i] != NULL; i++) | 932 | for (i = 0; tmpenv[i] != NULL; i++) |
942 | xfree(tmpenv[i]); | 933 | xfree(tmpenv[i]); |
943 | xfree(tmpenv); | 934 | xfree(tmpenv); |
@@ -962,7 +953,7 @@ void copy_environment(char **source, char ***env, u_int *envsize) | |||
962 | 953 | ||
963 | debug3("Copy environment: %s=%s", var_name, var_val); | 954 | debug3("Copy environment: %s=%s", var_name, var_val); |
964 | child_set_env(env, envsize, var_name, var_val); | 955 | child_set_env(env, envsize, var_name, var_val); |
965 | 956 | ||
966 | xfree(var_name); | 957 | xfree(var_name); |
967 | } | 958 | } |
968 | } | 959 | } |
@@ -989,7 +980,7 @@ do_setup_env(Session *s, const char *shell) | |||
989 | #endif | 980 | #endif |
990 | 981 | ||
991 | #ifdef GSSAPI | 982 | #ifdef GSSAPI |
992 | /* Allow any GSSAPI methods that we've used to alter | 983 | /* Allow any GSSAPI methods that we've used to alter |
993 | * the childs environment as they see fit | 984 | * the childs environment as they see fit |
994 | */ | 985 | */ |
995 | ssh_gssapi_do_child(&env, &envsize); | 986 | ssh_gssapi_do_child(&env, &envsize); |
@@ -1021,7 +1012,7 @@ do_setup_env(Session *s, const char *shell) | |||
1021 | path = child_get_env(env, "PATH"); | 1012 | path = child_get_env(env, "PATH"); |
1022 | # endif /* HAVE_ETC_DEFAULT_LOGIN */ | 1013 | # endif /* HAVE_ETC_DEFAULT_LOGIN */ |
1023 | if (path == NULL || *path == '\0') { | 1014 | if (path == NULL || *path == '\0') { |
1024 | child_set_env(&env, &envsize, "PATH", | 1015 | child_set_env(&env, &envsize, "PATH", |
1025 | s->pw->pw_uid == 0 ? | 1016 | s->pw->pw_uid == 0 ? |
1026 | SUPERUSER_PATH : _PATH_STDPATH); | 1017 | SUPERUSER_PATH : _PATH_STDPATH); |
1027 | } | 1018 | } |
@@ -1104,8 +1095,13 @@ do_setup_env(Session *s, const char *shell) | |||
1104 | * been set by PAM. | 1095 | * been set by PAM. |
1105 | */ | 1096 | */ |
1106 | if (options.use_pam) { | 1097 | if (options.use_pam) { |
1107 | char **p = fetch_pam_environment(); | 1098 | char **p; |
1108 | 1099 | ||
1100 | p = fetch_pam_child_environment(); | ||
1101 | copy_environment(p, &env, &envsize); | ||
1102 | free_pam_environment(p); | ||
1103 | |||
1104 | p = fetch_pam_environment(); | ||
1109 | copy_environment(p, &env, &envsize); | 1105 | copy_environment(p, &env, &envsize); |
1110 | free_pam_environment(p); | 1106 | free_pam_environment(p); |
1111 | } | 1107 | } |
@@ -1178,7 +1174,7 @@ do_rc_files(Session *s, const char *shell) | |||
1178 | if (debug_flag) { | 1174 | if (debug_flag) { |
1179 | fprintf(stderr, | 1175 | fprintf(stderr, |
1180 | "Running %.500s remove %.100s\n", | 1176 | "Running %.500s remove %.100s\n", |
1181 | options.xauth_location, s->auth_display); | 1177 | options.xauth_location, s->auth_display); |
1182 | fprintf(stderr, | 1178 | fprintf(stderr, |
1183 | "%.500s add %.100s %.100s %.100s\n", | 1179 | "%.500s add %.100s %.100s %.100s\n", |
1184 | options.xauth_location, s->auth_display, | 1180 | options.xauth_location, s->auth_display, |
@@ -1244,6 +1240,12 @@ do_setusercontext(struct passwd *pw) | |||
1244 | # ifdef __bsdi__ | 1240 | # ifdef __bsdi__ |
1245 | setpgid(0, 0); | 1241 | setpgid(0, 0); |
1246 | # endif | 1242 | # endif |
1243 | # ifdef USE_PAM | ||
1244 | if (options.use_pam) { | ||
1245 | do_pam_session(); | ||
1246 | do_pam_setcred(0); | ||
1247 | } | ||
1248 | # endif /* USE_PAM */ | ||
1247 | if (setusercontext(lc, pw, pw->pw_uid, | 1249 | if (setusercontext(lc, pw, pw->pw_uid, |
1248 | (LOGIN_SETALL & ~LOGIN_SETPATH)) < 0) { | 1250 | (LOGIN_SETALL & ~LOGIN_SETPATH)) < 0) { |
1249 | perror("unable to set user context"); | 1251 | perror("unable to set user context"); |
@@ -1270,7 +1272,7 @@ do_setusercontext(struct passwd *pw) | |||
1270 | endgrent(); | 1272 | endgrent(); |
1271 | # ifdef USE_PAM | 1273 | # ifdef USE_PAM |
1272 | /* | 1274 | /* |
1273 | * PAM credentials may take the form of supplementary groups. | 1275 | * PAM credentials may take the form of supplementary groups. |
1274 | * These will have been wiped by the above initgroups() call. | 1276 | * These will have been wiped by the above initgroups() call. |
1275 | * Reestablish them here. | 1277 | * Reestablish them here. |
1276 | */ | 1278 | */ |
@@ -1298,6 +1300,22 @@ do_setusercontext(struct passwd *pw) | |||
1298 | } | 1300 | } |
1299 | 1301 | ||
1300 | static void | 1302 | static void |
1303 | do_pwchange(Session *s) | ||
1304 | { | ||
1305 | fprintf(stderr, "WARNING: Your password has expired.\n"); | ||
1306 | if (s->ttyfd != -1) { | ||
1307 | fprintf(stderr, | ||
1308 | "You must change your password now and login again!\n"); | ||
1309 | execl(_PATH_PASSWD_PROG, "passwd", (char *)NULL); | ||
1310 | perror("passwd"); | ||
1311 | } else { | ||
1312 | fprintf(stderr, | ||
1313 | "Password change required but no TTY available.\n"); | ||
1314 | } | ||
1315 | exit(1); | ||
1316 | } | ||
1317 | |||
1318 | static void | ||
1301 | launch_login(struct passwd *pw, const char *hostname) | 1319 | launch_login(struct passwd *pw, const char *hostname) |
1302 | { | 1320 | { |
1303 | /* Launch login(1). */ | 1321 | /* Launch login(1). */ |
@@ -1318,6 +1336,40 @@ launch_login(struct passwd *pw, const char *hostname) | |||
1318 | exit(1); | 1336 | exit(1); |
1319 | } | 1337 | } |
1320 | 1338 | ||
1339 | static void | ||
1340 | child_close_fds(void) | ||
1341 | { | ||
1342 | int i; | ||
1343 | |||
1344 | if (packet_get_connection_in() == packet_get_connection_out()) | ||
1345 | close(packet_get_connection_in()); | ||
1346 | else { | ||
1347 | close(packet_get_connection_in()); | ||
1348 | close(packet_get_connection_out()); | ||
1349 | } | ||
1350 | /* | ||
1351 | * Close all descriptors related to channels. They will still remain | ||
1352 | * open in the parent. | ||
1353 | */ | ||
1354 | /* XXX better use close-on-exec? -markus */ | ||
1355 | channel_close_all(); | ||
1356 | |||
1357 | /* | ||
1358 | * Close any extra file descriptors. Note that there may still be | ||
1359 | * descriptors left by system functions. They will be closed later. | ||
1360 | */ | ||
1361 | endpwent(); | ||
1362 | |||
1363 | /* | ||
1364 | * Close any extra open file descriptors so that we don\'t have them | ||
1365 | * hanging around in clients. Note that we want to do this after | ||
1366 | * initgroups, because at least on Solaris 2.3 it leaves file | ||
1367 | * descriptors open. | ||
1368 | */ | ||
1369 | for (i = 3; i < 64; i++) | ||
1370 | close(i); | ||
1371 | } | ||
1372 | |||
1321 | /* | 1373 | /* |
1322 | * Performs common processing for the child, such as setting up the | 1374 | * Performs common processing for the child, such as setting up the |
1323 | * environment, closing extra file descriptors, setting the user and group | 1375 | * environment, closing extra file descriptors, setting the user and group |
@@ -1331,11 +1383,18 @@ do_child(Session *s, const char *command) | |||
1331 | char *argv[10]; | 1383 | char *argv[10]; |
1332 | const char *shell, *shell0, *hostname = NULL; | 1384 | const char *shell, *shell0, *hostname = NULL; |
1333 | struct passwd *pw = s->pw; | 1385 | struct passwd *pw = s->pw; |
1334 | u_int i; | ||
1335 | 1386 | ||
1336 | /* remove hostkey from the child's memory */ | 1387 | /* remove hostkey from the child's memory */ |
1337 | destroy_sensitive_data(); | 1388 | destroy_sensitive_data(); |
1338 | 1389 | ||
1390 | /* Force a password change */ | ||
1391 | if (s->authctxt->force_pwchange) { | ||
1392 | do_setusercontext(pw); | ||
1393 | child_close_fds(); | ||
1394 | do_pwchange(s); | ||
1395 | exit(1); | ||
1396 | } | ||
1397 | |||
1339 | /* login(1) is only called if we execute the login shell */ | 1398 | /* login(1) is only called if we execute the login shell */ |
1340 | if (options.use_login && command != NULL) | 1399 | if (options.use_login && command != NULL) |
1341 | options.use_login = 0; | 1400 | options.use_login = 0; |
@@ -1386,39 +1445,39 @@ do_child(Session *s, const char *command) | |||
1386 | * closed before building the environment, as we call | 1445 | * closed before building the environment, as we call |
1387 | * get_remote_ipaddr there. | 1446 | * get_remote_ipaddr there. |
1388 | */ | 1447 | */ |
1389 | if (packet_get_connection_in() == packet_get_connection_out()) | 1448 | child_close_fds(); |
1390 | close(packet_get_connection_in()); | ||
1391 | else { | ||
1392 | close(packet_get_connection_in()); | ||
1393 | close(packet_get_connection_out()); | ||
1394 | } | ||
1395 | /* | ||
1396 | * Close all descriptors related to channels. They will still remain | ||
1397 | * open in the parent. | ||
1398 | */ | ||
1399 | /* XXX better use close-on-exec? -markus */ | ||
1400 | channel_close_all(); | ||
1401 | 1449 | ||
1402 | /* | 1450 | /* |
1403 | * Close any extra file descriptors. Note that there may still be | 1451 | * Must take new environment into use so that .ssh/rc, |
1404 | * descriptors left by system functions. They will be closed later. | 1452 | * /etc/ssh/sshrc and xauth are run in the proper environment. |
1405 | */ | 1453 | */ |
1406 | endpwent(); | 1454 | environ = env; |
1407 | 1455 | ||
1456 | #if defined(KRB5) && defined(USE_AFS) | ||
1408 | /* | 1457 | /* |
1409 | * Close any extra open file descriptors so that we don\'t have them | 1458 | * At this point, we check to see if AFS is active and if we have |
1410 | * hanging around in clients. Note that we want to do this after | 1459 | * a valid Kerberos 5 TGT. If so, it seems like a good idea to see |
1411 | * initgroups, because at least on Solaris 2.3 it leaves file | 1460 | * if we can (and need to) extend the ticket into an AFS token. If |
1412 | * descriptors open. | 1461 | * we don't do this, we run into potential problems if the user's |
1462 | * home directory is in AFS and it's not world-readable. | ||
1413 | */ | 1463 | */ |
1414 | for (i = 3; i < 64; i++) | ||
1415 | close(i); | ||
1416 | 1464 | ||
1417 | /* | 1465 | if (options.kerberos_get_afs_token && k_hasafs() && |
1418 | * Must take new environment into use so that .ssh/rc, | 1466 | (s->authctxt->krb5_ctx != NULL)) { |
1419 | * /etc/ssh/sshrc and xauth are run in the proper environment. | 1467 | char cell[64]; |
1420 | */ | 1468 | |
1421 | environ = env; | 1469 | debug("Getting AFS token"); |
1470 | |||
1471 | k_setpag(); | ||
1472 | |||
1473 | if (k_afs_cell_of_file(pw->pw_dir, cell, sizeof(cell)) == 0) | ||
1474 | krb5_afslog(s->authctxt->krb5_ctx, | ||
1475 | s->authctxt->krb5_fwd_ccache, cell, NULL); | ||
1476 | |||
1477 | krb5_afslog_home(s->authctxt->krb5_ctx, | ||
1478 | s->authctxt->krb5_fwd_ccache, NULL, NULL, pw->pw_dir); | ||
1479 | } | ||
1480 | #endif | ||
1422 | 1481 | ||
1423 | /* Change current directory to the user\'s home directory. */ | 1482 | /* Change current directory to the user\'s home directory. */ |
1424 | if (chdir(pw->pw_dir) < 0) { | 1483 | if (chdir(pw->pw_dir) < 0) { |
@@ -1541,7 +1600,7 @@ session_open(Authctxt *authctxt, int chanid) | |||
1541 | } | 1600 | } |
1542 | s->authctxt = authctxt; | 1601 | s->authctxt = authctxt; |
1543 | s->pw = authctxt->pw; | 1602 | s->pw = authctxt->pw; |
1544 | if (s->pw == NULL) | 1603 | if (s->pw == NULL || !authctxt->valid) |
1545 | fatal("no user for session %d", s->self); | 1604 | fatal("no user for session %d", s->self); |
1546 | debug("session_open: session %d: link with channel %d", s->self, chanid); | 1605 | debug("session_open: session %d: link with channel %d", s->self, chanid); |
1547 | s->chanid = chanid; | 1606 | s->chanid = chanid; |
@@ -1663,11 +1722,6 @@ session_pty_req(Session *s) | |||
1663 | n_bytes = packet_remaining(); | 1722 | n_bytes = packet_remaining(); |
1664 | tty_parse_modes(s->ttyfd, &n_bytes); | 1723 | tty_parse_modes(s->ttyfd, &n_bytes); |
1665 | 1724 | ||
1666 | /* | ||
1667 | * Add a cleanup function to clear the utmp entry and record logout | ||
1668 | * time in case we call fatal() (e.g., the connection gets closed). | ||
1669 | */ | ||
1670 | fatal_add_cleanup(session_pty_cleanup, (void *)s); | ||
1671 | if (!use_privsep) | 1725 | if (!use_privsep) |
1672 | pty_setowner(s->pw, s->tty); | 1726 | pty_setowner(s->pw, s->tty); |
1673 | 1727 | ||
@@ -1849,10 +1903,8 @@ session_set_fds(Session *s, int fdin, int fdout, int fderr) | |||
1849 | * (e.g., due to a dropped connection). | 1903 | * (e.g., due to a dropped connection). |
1850 | */ | 1904 | */ |
1851 | void | 1905 | void |
1852 | session_pty_cleanup2(void *session) | 1906 | session_pty_cleanup2(Session *s) |
1853 | { | 1907 | { |
1854 | Session *s = session; | ||
1855 | |||
1856 | if (s == NULL) { | 1908 | if (s == NULL) { |
1857 | error("session_pty_cleanup: no session"); | 1909 | error("session_pty_cleanup: no session"); |
1858 | return; | 1910 | return; |
@@ -1883,9 +1935,9 @@ session_pty_cleanup2(void *session) | |||
1883 | } | 1935 | } |
1884 | 1936 | ||
1885 | void | 1937 | void |
1886 | session_pty_cleanup(void *session) | 1938 | session_pty_cleanup(Session *s) |
1887 | { | 1939 | { |
1888 | PRIVSEP(session_pty_cleanup2(session)); | 1940 | PRIVSEP(session_pty_cleanup2(s)); |
1889 | } | 1941 | } |
1890 | 1942 | ||
1891 | static char * | 1943 | static char * |
@@ -1958,10 +2010,8 @@ void | |||
1958 | session_close(Session *s) | 2010 | session_close(Session *s) |
1959 | { | 2011 | { |
1960 | debug("session_close: session %d pid %ld", s->self, (long)s->pid); | 2012 | debug("session_close: session %d pid %ld", s->self, (long)s->pid); |
1961 | if (s->ttyfd != -1) { | 2013 | if (s->ttyfd != -1) |
1962 | fatal_remove_cleanup(session_pty_cleanup, (void *)s); | ||
1963 | session_pty_cleanup(s); | 2014 | session_pty_cleanup(s); |
1964 | } | ||
1965 | if (s->term) | 2015 | if (s->term) |
1966 | xfree(s->term); | 2016 | xfree(s->term); |
1967 | if (s->display) | 2017 | if (s->display) |
@@ -2010,10 +2060,8 @@ session_close_by_channel(int id, void *arg) | |||
2010 | * delay detach of session, but release pty, since | 2060 | * delay detach of session, but release pty, since |
2011 | * the fd's to the child are already closed | 2061 | * the fd's to the child are already closed |
2012 | */ | 2062 | */ |
2013 | if (s->ttyfd != -1) { | 2063 | if (s->ttyfd != -1) |
2014 | fatal_remove_cleanup(session_pty_cleanup, (void *)s); | ||
2015 | session_pty_cleanup(s); | 2064 | session_pty_cleanup(s); |
2016 | } | ||
2017 | return; | 2065 | return; |
2018 | } | 2066 | } |
2019 | /* detach by removing callback */ | 2067 | /* detach by removing callback */ |
@@ -2048,13 +2096,13 @@ session_tty_list(void) | |||
2048 | for (i = 0; i < MAX_SESSIONS; i++) { | 2096 | for (i = 0; i < MAX_SESSIONS; i++) { |
2049 | Session *s = &sessions[i]; | 2097 | Session *s = &sessions[i]; |
2050 | if (s->used && s->ttyfd != -1) { | 2098 | if (s->used && s->ttyfd != -1) { |
2051 | 2099 | ||
2052 | if (strncmp(s->tty, "/dev/", 5) != 0) { | 2100 | if (strncmp(s->tty, "/dev/", 5) != 0) { |
2053 | cp = strrchr(s->tty, '/'); | 2101 | cp = strrchr(s->tty, '/'); |
2054 | cp = (cp == NULL) ? s->tty : cp + 1; | 2102 | cp = (cp == NULL) ? s->tty : cp + 1; |
2055 | } else | 2103 | } else |
2056 | cp = s->tty + 5; | 2104 | cp = s->tty + 5; |
2057 | 2105 | ||
2058 | if (buf[0] != '\0') | 2106 | if (buf[0] != '\0') |
2059 | strlcat(buf, ",", sizeof buf); | 2107 | strlcat(buf, ",", sizeof buf); |
2060 | strlcat(buf, cp, sizeof buf); | 2108 | strlcat(buf, cp, sizeof buf); |
@@ -2154,8 +2202,51 @@ static void | |||
2154 | do_authenticated2(Authctxt *authctxt) | 2202 | do_authenticated2(Authctxt *authctxt) |
2155 | { | 2203 | { |
2156 | server_loop2(authctxt); | 2204 | server_loop2(authctxt); |
2157 | #if defined(GSSAPI) | 2205 | } |
2158 | if (options.gss_cleanup_creds) | 2206 | |
2159 | ssh_gssapi_cleanup_creds(NULL); | 2207 | void |
2208 | do_cleanup(Authctxt *authctxt) | ||
2209 | { | ||
2210 | static int called = 0; | ||
2211 | |||
2212 | debug("do_cleanup"); | ||
2213 | |||
2214 | /* no cleanup if we're in the child for login shell */ | ||
2215 | if (is_child) | ||
2216 | return; | ||
2217 | |||
2218 | /* avoid double cleanup */ | ||
2219 | if (called) | ||
2220 | return; | ||
2221 | called = 1; | ||
2222 | |||
2223 | if (authctxt == NULL) | ||
2224 | return; | ||
2225 | #ifdef KRB5 | ||
2226 | if (options.kerberos_ticket_cleanup && | ||
2227 | authctxt->krb5_ctx) | ||
2228 | krb5_cleanup_proc(authctxt); | ||
2160 | #endif | 2229 | #endif |
2230 | |||
2231 | #ifdef GSSAPI | ||
2232 | if (compat20 && options.gss_cleanup_creds) | ||
2233 | ssh_gssapi_cleanup_creds(); | ||
2234 | #endif | ||
2235 | |||
2236 | #ifdef USE_PAM | ||
2237 | if (options.use_pam) { | ||
2238 | sshpam_cleanup(); | ||
2239 | sshpam_thread_cleanup(); | ||
2240 | } | ||
2241 | #endif | ||
2242 | |||
2243 | /* remove agent socket */ | ||
2244 | auth_sock_cleanup_proc(authctxt->pw); | ||
2245 | |||
2246 | /* | ||
2247 | * Cleanup ptys/utmp only if privsep is disabled, | ||
2248 | * or if running in monitor. | ||
2249 | */ | ||
2250 | if (!use_privsep || mm_is_monitor()) | ||
2251 | session_destroy_all(session_pty_cleanup2); | ||
2161 | } | 2252 | } |
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: session.h,v 1.20 2003/08/22 10:56:09 markus Exp $ */ | 1 | /* $OpenBSD: session.h,v 1.21 2003/09/23 20:17:11 markus Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved. | 4 | * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved. |
@@ -56,13 +56,14 @@ struct Session { | |||
56 | }; | 56 | }; |
57 | 57 | ||
58 | void do_authenticated(Authctxt *); | 58 | void do_authenticated(Authctxt *); |
59 | void do_cleanup(Authctxt *); | ||
59 | 60 | ||
60 | int session_open(Authctxt *, int); | 61 | int session_open(Authctxt *, int); |
61 | int session_input_channel_req(Channel *, const char *); | 62 | int session_input_channel_req(Channel *, const char *); |
62 | void session_close_by_pid(pid_t, int); | 63 | void session_close_by_pid(pid_t, int); |
63 | void session_close_by_channel(int, void *); | 64 | void session_close_by_channel(int, void *); |
64 | void session_destroy_all(void (*)(Session *)); | 65 | void session_destroy_all(void (*)(Session *)); |
65 | void session_pty_cleanup2(void *); | 66 | void session_pty_cleanup2(Session *); |
66 | 67 | ||
67 | Session *session_new(void); | 68 | Session *session_new(void); |
68 | Session *session_by_tty(char *); | 69 | Session *session_by_tty(char *); |
diff --git a/sftp-client.c b/sftp-client.c index ffff0fe5a..81c5dd497 100644 --- a/sftp-client.c +++ b/sftp-client.c | |||
@@ -1,25 +1,17 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2001-2003 Damien Miller. All rights reserved. | 2 | * Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org> |
3 | * | 3 | * |
4 | * Redistribution and use in source and binary forms, with or without | 4 | * Permission to use, copy, modify, and distribute this software for any |
5 | * modification, are permitted provided that the following conditions | 5 | * purpose with or without fee is hereby granted, provided that the above |
6 | * are met: | 6 | * copyright notice and this permission notice appear in all copies. |
7 | * 1. Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * 2. Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * | 7 | * |
13 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | 8 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
14 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | 9 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
15 | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | 10 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
16 | * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | 11 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
17 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | 12 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
18 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 13 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
19 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 14 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
20 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
21 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
22 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
23 | */ | 15 | */ |
24 | 16 | ||
25 | /* XXX: memleaks */ | 17 | /* XXX: memleaks */ |
@@ -28,7 +20,7 @@ | |||
28 | /* XXX: copy between two remote sites */ | 20 | /* XXX: copy between two remote sites */ |
29 | 21 | ||
30 | #include "includes.h" | 22 | #include "includes.h" |
31 | RCSID("$OpenBSD: sftp-client.c,v 1.44 2003/06/28 16:23:06 deraadt Exp $"); | 23 | RCSID("$OpenBSD: sftp-client.c,v 1.46 2004/02/17 05:39:51 djm Exp $"); |
32 | 24 | ||
33 | #include "openbsd-compat/sys-queue.h" | 25 | #include "openbsd-compat/sys-queue.h" |
34 | 26 | ||
@@ -798,7 +790,7 @@ do_download(struct sftp_conn *conn, char *remote_path, char *local_path, | |||
798 | return(-1); | 790 | return(-1); |
799 | } | 791 | } |
800 | 792 | ||
801 | local_fd = open(local_path, O_WRONLY | O_CREAT | O_TRUNC, | 793 | local_fd = open(local_path, O_WRONLY | O_CREAT | O_TRUNC, |
802 | mode | S_IWRITE); | 794 | mode | S_IWRITE); |
803 | if (local_fd == -1) { | 795 | if (local_fd == -1) { |
804 | error("Couldn't open local file \"%s\" for writing: %s", | 796 | error("Couldn't open local file \"%s\" for writing: %s", |
@@ -946,7 +938,7 @@ do_download(struct sftp_conn *conn, char *remote_path, char *local_path, | |||
946 | /* Override umask and utimes if asked */ | 938 | /* Override umask and utimes if asked */ |
947 | #ifdef HAVE_FCHMOD | 939 | #ifdef HAVE_FCHMOD |
948 | if (pflag && fchmod(local_fd, mode) == -1) | 940 | if (pflag && fchmod(local_fd, mode) == -1) |
949 | #else | 941 | #else |
950 | if (pflag && chmod(local_path, mode) == -1) | 942 | if (pflag && chmod(local_path, mode) == -1) |
951 | #endif /* HAVE_FCHMOD */ | 943 | #endif /* HAVE_FCHMOD */ |
952 | error("Couldn't set mode on \"%s\": %s", local_path, | 944 | error("Couldn't set mode on \"%s\": %s", local_path, |
diff --git a/sftp-client.h b/sftp-client.h index 98e08ffa7..a0e8e44b3 100644 --- a/sftp-client.h +++ b/sftp-client.h | |||
@@ -1,27 +1,19 @@ | |||
1 | /* $OpenBSD: sftp-client.h,v 1.11 2002/09/11 22:41:50 djm Exp $ */ | 1 | /* $OpenBSD: sftp-client.h,v 1.12 2004/02/17 05:39:51 djm Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 2001,2002 Damien Miller. All rights reserved. | 4 | * Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org> |
5 | * | 5 | * |
6 | * Redistribution and use in source and binary forms, with or without | 6 | * Permission to use, copy, modify, and distribute this software for any |
7 | * modification, are permitted provided that the following conditions | 7 | * purpose with or without fee is hereby granted, provided that the above |
8 | * are met: | 8 | * copyright notice and this permission notice appear in all copies. |
9 | * 1. Redistributions of source code must retain the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer. | ||
11 | * 2. Redistributions in binary form must reproduce the above copyright | ||
12 | * notice, this list of conditions and the following disclaimer in the | ||
13 | * documentation and/or other materials provided with the distribution. | ||
14 | * | 9 | * |
15 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | 10 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
16 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | 11 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
17 | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | 12 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
18 | * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | 13 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
19 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | 14 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
20 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 15 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
21 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 16 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
22 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
23 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
24 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
25 | */ | 17 | */ |
26 | 18 | ||
27 | /* Client side of SSH2 filexfer protocol */ | 19 | /* Client side of SSH2 filexfer protocol */ |
diff --git a/sftp-common.c b/sftp-common.c index 5313b134d..4cea3c305 100644 --- a/sftp-common.c +++ b/sftp-common.c | |||
@@ -24,7 +24,7 @@ | |||
24 | */ | 24 | */ |
25 | 25 | ||
26 | #include "includes.h" | 26 | #include "includes.h" |
27 | RCSID("$OpenBSD: sftp-common.c,v 1.9 2003/05/24 09:30:40 djm Exp $"); | 27 | RCSID("$OpenBSD: sftp-common.c,v 1.10 2003/11/10 16:23:41 jakob Exp $"); |
28 | 28 | ||
29 | #include "buffer.h" | 29 | #include "buffer.h" |
30 | #include "bufaux.h" | 30 | #include "bufaux.h" |
@@ -49,7 +49,7 @@ attrib_clear(Attrib *a) | |||
49 | 49 | ||
50 | /* Convert from struct stat to filexfer attribs */ | 50 | /* Convert from struct stat to filexfer attribs */ |
51 | void | 51 | void |
52 | stat_to_attrib(struct stat *st, Attrib *a) | 52 | stat_to_attrib(const struct stat *st, Attrib *a) |
53 | { | 53 | { |
54 | attrib_clear(a); | 54 | attrib_clear(a); |
55 | a->flags = 0; | 55 | a->flags = 0; |
@@ -67,7 +67,7 @@ stat_to_attrib(struct stat *st, Attrib *a) | |||
67 | 67 | ||
68 | /* Convert from filexfer attribs to struct stat */ | 68 | /* Convert from filexfer attribs to struct stat */ |
69 | void | 69 | void |
70 | attrib_to_stat(Attrib *a, struct stat *st) | 70 | attrib_to_stat(const Attrib *a, struct stat *st) |
71 | { | 71 | { |
72 | memset(st, 0, sizeof(*st)); | 72 | memset(st, 0, sizeof(*st)); |
73 | 73 | ||
@@ -124,7 +124,7 @@ decode_attrib(Buffer *b) | |||
124 | 124 | ||
125 | /* Encode attributes to buffer */ | 125 | /* Encode attributes to buffer */ |
126 | void | 126 | void |
127 | encode_attrib(Buffer *b, Attrib *a) | 127 | encode_attrib(Buffer *b, const Attrib *a) |
128 | { | 128 | { |
129 | buffer_put_int(b, a->flags); | 129 | buffer_put_int(b, a->flags); |
130 | if (a->flags & SSH2_FILEXFER_ATTR_SIZE) | 130 | if (a->flags & SSH2_FILEXFER_ATTR_SIZE) |
@@ -174,7 +174,7 @@ fx2txt(int status) | |||
174 | * drwxr-xr-x 5 markus markus 1024 Jan 13 18:39 .ssh | 174 | * drwxr-xr-x 5 markus markus 1024 Jan 13 18:39 .ssh |
175 | */ | 175 | */ |
176 | char * | 176 | char * |
177 | ls_file(char *name, struct stat *st, int remote) | 177 | ls_file(const char *name, const struct stat *st, int remote) |
178 | { | 178 | { |
179 | int ulen, glen, sz = 0; | 179 | int ulen, glen, sz = 0; |
180 | struct passwd *pw; | 180 | struct passwd *pw; |
diff --git a/sftp-common.h b/sftp-common.h index 201611cc4..b42ba9140 100644 --- a/sftp-common.h +++ b/sftp-common.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: sftp-common.h,v 1.4 2002/09/11 22:41:50 djm Exp $ */ | 1 | /* $OpenBSD: sftp-common.h,v 1.5 2003/11/10 16:23:41 jakob Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 2001 Markus Friedl. All rights reserved. | 4 | * Copyright (c) 2001 Markus Friedl. All rights reserved. |
@@ -39,10 +39,10 @@ struct Attrib { | |||
39 | }; | 39 | }; |
40 | 40 | ||
41 | void attrib_clear(Attrib *); | 41 | void attrib_clear(Attrib *); |
42 | void stat_to_attrib(struct stat *, Attrib *); | 42 | void stat_to_attrib(const struct stat *, Attrib *); |
43 | void attrib_to_stat(Attrib *, struct stat *); | 43 | void attrib_to_stat(const Attrib *, struct stat *); |
44 | Attrib *decode_attrib(Buffer *); | 44 | Attrib *decode_attrib(Buffer *); |
45 | void encode_attrib(Buffer *, Attrib *); | 45 | void encode_attrib(Buffer *, const Attrib *); |
46 | char *ls_file(char *, struct stat *, int); | 46 | char *ls_file(const char *, const struct stat *, int); |
47 | 47 | ||
48 | const char *fx2txt(int); | 48 | const char *fx2txt(int); |
diff --git a/sftp-glob.c b/sftp-glob.c index ee122a2cd..16c5e206a 100644 --- a/sftp-glob.c +++ b/sftp-glob.c | |||
@@ -1,29 +1,21 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2001,2002 Damien Miller. All rights reserved. | 2 | * Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org> |
3 | * | 3 | * |
4 | * Redistribution and use in source and binary forms, with or without | 4 | * Permission to use, copy, modify, and distribute this software for any |
5 | * modification, are permitted provided that the following conditions | 5 | * purpose with or without fee is hereby granted, provided that the above |
6 | * are met: | 6 | * copyright notice and this permission notice appear in all copies. |
7 | * 1. Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * 2. Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * | 7 | * |
13 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | 8 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
14 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | 9 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
15 | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | 10 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
16 | * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | 11 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
17 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | 12 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
18 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 13 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
19 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 14 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
20 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
21 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
22 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
23 | */ | 15 | */ |
24 | 16 | ||
25 | #include "includes.h" | 17 | #include "includes.h" |
26 | RCSID("$OpenBSD: sftp-glob.c,v 1.13 2002/09/11 22:41:50 djm Exp $"); | 18 | RCSID("$OpenBSD: sftp-glob.c,v 1.15 2004/02/17 07:17:29 djm Exp $"); |
27 | 19 | ||
28 | #include "buffer.h" | 20 | #include "buffer.h" |
29 | #include "bufaux.h" | 21 | #include "bufaux.h" |
@@ -33,7 +25,9 @@ RCSID("$OpenBSD: sftp-glob.c,v 1.13 2002/09/11 22:41:50 djm Exp $"); | |||
33 | #include "sftp.h" | 25 | #include "sftp.h" |
34 | #include "sftp-common.h" | 26 | #include "sftp-common.h" |
35 | #include "sftp-client.h" | 27 | #include "sftp-client.h" |
36 | #include "sftp-glob.h" | 28 | |
29 | int remote_glob(struct sftp_conn *, const char *, int, | ||
30 | int (*)(const char *, int), glob_t *); | ||
37 | 31 | ||
38 | struct SFTP_OPENDIR { | 32 | struct SFTP_OPENDIR { |
39 | SFTP_DIRENT **dir; | 33 | SFTP_DIRENT **dir; |
@@ -70,7 +64,7 @@ fudge_readdir(struct SFTP_OPENDIR *od) | |||
70 | #ifdef __GNU_LIBRARY__ | 64 | #ifdef __GNU_LIBRARY__ |
71 | static int inum = 1; | 65 | static int inum = 1; |
72 | #endif /* __GNU_LIBRARY__ */ | 66 | #endif /* __GNU_LIBRARY__ */ |
73 | 67 | ||
74 | if (od->dir[od->offset] == NULL) | 68 | if (od->dir[od->offset] == NULL) |
75 | return(NULL); | 69 | return(NULL); |
76 | 70 | ||
@@ -89,7 +83,7 @@ fudge_readdir(struct SFTP_OPENDIR *od) | |||
89 | #ifdef __GNU_LIBRARY__ | 83 | #ifdef __GNU_LIBRARY__ |
90 | /* | 84 | /* |
91 | * Idiot glibc uses extensions to struct dirent for readdir with | 85 | * Idiot glibc uses extensions to struct dirent for readdir with |
92 | * ALTDIRFUNCs. Not that this is documented anywhere but the | 86 | * ALTDIRFUNCs. Not that this is documented anywhere but the |
93 | * source... Fake an inode number to appease it. | 87 | * source... Fake an inode number to appease it. |
94 | */ | 88 | */ |
95 | ret->d_ino = inum++; | 89 | ret->d_ino = inum++; |
diff --git a/sftp-server.0 b/sftp-server.0 index 3d3154ebb..dad6bda73 100644 --- a/sftp-server.0 +++ b/sftp-server.0 | |||
@@ -10,10 +10,10 @@ DESCRIPTION | |||
10 | sftp-server is a program that speaks the server side of SFTP protocol to | 10 | sftp-server is a program that speaks the server side of SFTP protocol to |
11 | stdout and expects client requests from stdin. sftp-server is not in- | 11 | stdout and expects client requests from stdin. sftp-server is not in- |
12 | tended to be called directly, but from sshd(8) using the Subsystem op- | 12 | tended to be called directly, but from sshd(8) using the Subsystem op- |
13 | tion. See sshd(8) for more information. | 13 | tion. See sshd_config(5) for more information. |
14 | 14 | ||
15 | SEE ALSO | 15 | SEE ALSO |
16 | sftp(1), ssh(1), sshd(8) | 16 | sftp(1), ssh(1), sshd_config(5), sshd(8) |
17 | 17 | ||
18 | T. Ylonen, and S. Lehtinen, SSH File Transfer Protocol, draft-ietf-secsh- | 18 | T. Ylonen, and S. Lehtinen, SSH File Transfer Protocol, draft-ietf-secsh- |
19 | filexfer-00.txt, January 2001, work in progress material. | 19 | filexfer-00.txt, January 2001, work in progress material. |
diff --git a/sftp-server.8 b/sftp-server.8 index 871f83796..42f5d437c 100644 --- a/sftp-server.8 +++ b/sftp-server.8 | |||
@@ -1,4 +1,4 @@ | |||
1 | .\" $OpenBSD: sftp-server.8,v 1.9 2003/06/10 09:12:11 jmc Exp $ | 1 | .\" $OpenBSD: sftp-server.8,v 1.10 2003/10/08 08:27:36 jmc Exp $ |
2 | .\" | 2 | .\" |
3 | .\" Copyright (c) 2000 Markus Friedl. All rights reserved. | 3 | .\" Copyright (c) 2000 Markus Friedl. All rights reserved. |
4 | .\" | 4 | .\" |
@@ -41,11 +41,12 @@ using the | |||
41 | .Cm Subsystem | 41 | .Cm Subsystem |
42 | option. | 42 | option. |
43 | See | 43 | See |
44 | .Xr sshd 8 | 44 | .Xr sshd_config 5 |
45 | for more information. | 45 | for more information. |
46 | .Sh SEE ALSO | 46 | .Sh SEE ALSO |
47 | .Xr sftp 1 , | 47 | .Xr sftp 1 , |
48 | .Xr ssh 1 , | 48 | .Xr ssh 1 , |
49 | .Xr sshd_config 5 , | ||
49 | .Xr sshd 8 | 50 | .Xr sshd 8 |
50 | .Rs | 51 | .Rs |
51 | .%A T. Ylonen | 52 | .%A T. Ylonen |
diff --git a/sftp-server.c b/sftp-server.c index 9166853ed..1d13e97b2 100644 --- a/sftp-server.c +++ b/sftp-server.c | |||
@@ -1,28 +1,20 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2000, 2001, 2002 Markus Friedl. All rights reserved. | 2 | * Copyright (c) 2000-2004 Markus Friedl. All rights reserved. |
3 | * | 3 | * |
4 | * Redistribution and use in source and binary forms, with or without | 4 | * Permission to use, copy, modify, and distribute this software for any |
5 | * modification, are permitted provided that the following conditions | 5 | * purpose with or without fee is hereby granted, provided that the above |
6 | * are met: | 6 | * copyright notice and this permission notice appear in all copies. |
7 | * 1. Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * 2. Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * | 7 | * |
13 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | 8 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
14 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | 9 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
15 | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | 10 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
16 | * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | 11 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
17 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | 12 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
18 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 13 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
19 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 14 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
20 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
21 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
22 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
23 | */ | 15 | */ |
24 | #include "includes.h" | 16 | #include "includes.h" |
25 | RCSID("$OpenBSD: sftp-server.c,v 1.43 2003/06/25 22:39:36 miod Exp $"); | 17 | RCSID("$OpenBSD: sftp-server.c,v 1.45 2004/02/19 21:15:04 markus Exp $"); |
26 | 18 | ||
27 | #include "buffer.h" | 19 | #include "buffer.h" |
28 | #include "bufaux.h" | 20 | #include "bufaux.h" |
@@ -149,7 +141,7 @@ handle_init(void) | |||
149 | } | 141 | } |
150 | 142 | ||
151 | static int | 143 | static int |
152 | handle_new(int use, char *name, int fd, DIR *dirp) | 144 | handle_new(int use, const char *name, int fd, DIR *dirp) |
153 | { | 145 | { |
154 | int i; | 146 | int i; |
155 | 147 | ||
@@ -184,7 +176,7 @@ handle_to_string(int handle, char **stringp, int *hlenp) | |||
184 | } | 176 | } |
185 | 177 | ||
186 | static int | 178 | static int |
187 | handle_from_string(char *handle, u_int hlen) | 179 | handle_from_string(const char *handle, u_int hlen) |
188 | { | 180 | { |
189 | int val; | 181 | int val; |
190 | 182 | ||
@@ -298,7 +290,7 @@ send_status(u_int32_t id, u_int32_t error) | |||
298 | buffer_free(&msg); | 290 | buffer_free(&msg); |
299 | } | 291 | } |
300 | static void | 292 | static void |
301 | send_data_or_handle(char type, u_int32_t id, char *data, int dlen) | 293 | send_data_or_handle(char type, u_int32_t id, const char *data, int dlen) |
302 | { | 294 | { |
303 | Buffer msg; | 295 | Buffer msg; |
304 | 296 | ||
@@ -311,7 +303,7 @@ send_data_or_handle(char type, u_int32_t id, char *data, int dlen) | |||
311 | } | 303 | } |
312 | 304 | ||
313 | static void | 305 | static void |
314 | send_data(u_int32_t id, char *data, int dlen) | 306 | send_data(u_int32_t id, const char *data, int dlen) |
315 | { | 307 | { |
316 | TRACE("sent data id %u len %d", id, dlen); | 308 | TRACE("sent data id %u len %d", id, dlen); |
317 | send_data_or_handle(SSH2_FXP_DATA, id, data, dlen); | 309 | send_data_or_handle(SSH2_FXP_DATA, id, data, dlen); |
@@ -330,7 +322,7 @@ send_handle(u_int32_t id, int handle) | |||
330 | } | 322 | } |
331 | 323 | ||
332 | static void | 324 | static void |
333 | send_names(u_int32_t id, int count, Stat *stats) | 325 | send_names(u_int32_t id, int count, const Stat *stats) |
334 | { | 326 | { |
335 | Buffer msg; | 327 | Buffer msg; |
336 | int i; | 328 | int i; |
@@ -350,7 +342,7 @@ send_names(u_int32_t id, int count, Stat *stats) | |||
350 | } | 342 | } |
351 | 343 | ||
352 | static void | 344 | static void |
353 | send_attrib(u_int32_t id, Attrib *a) | 345 | send_attrib(u_int32_t id, const Attrib *a) |
354 | { | 346 | { |
355 | Buffer msg; | 347 | Buffer msg; |
356 | 348 | ||
@@ -567,7 +559,7 @@ process_fstat(void) | |||
567 | } | 559 | } |
568 | 560 | ||
569 | static struct timeval * | 561 | static struct timeval * |
570 | attrib_to_tv(Attrib *a) | 562 | attrib_to_tv(const Attrib *a) |
571 | { | 563 | { |
572 | static struct timeval tv[2]; | 564 | static struct timeval tv[2]; |
573 | 565 | ||
@@ -4,9 +4,9 @@ NAME | |||
4 | sftp - secure file transfer program | 4 | sftp - secure file transfer program |
5 | 5 | ||
6 | SYNOPSIS | 6 | SYNOPSIS |
7 | sftp [-vC1] [-b batchfile] [-o ssh_option] [-s subsystem | sftp_server] | 7 | sftp [-1Cv] [-B buffer_size] [-b batchfile] [-F ssh_config] |
8 | [-B buffer_size] [-F ssh_config] [-P sftp_server path] | 8 | [-o ssh_option] [-P sftp_server_path] [-R num_requests] [-S program] |
9 | [-R num_requests] [-S program] host | 9 | [-s subsystem | sftp_server] host |
10 | sftp [[user@]host[:file [file]]] | 10 | sftp [[user@]host[:file [file]]] |
11 | sftp [[user@]host[:dir[/]]] | 11 | sftp [[user@]host[:dir[/]]] |
12 | sftp -b batchfile [user@]host | 12 | sftp -b batchfile [user@]host |
@@ -30,42 +30,81 @@ DESCRIPTION | |||
30 | cation to obviate the need to enter a password at connection time (see | 30 | cation to obviate the need to enter a password at connection time (see |
31 | sshd(8) and ssh-keygen(1) for details). The options are as follows: | 31 | sshd(8) and ssh-keygen(1) for details). The options are as follows: |
32 | 32 | ||
33 | -1 Specify the use of protocol version 1. | ||
34 | |||
35 | -B buffer_size | ||
36 | Specify the size of the buffer that sftp uses when transferring | ||
37 | files. Larger buffers require fewer round trips at the cost of | ||
38 | higher memory consumption. The default is 32768 bytes. | ||
39 | |||
33 | -b batchfile | 40 | -b batchfile |
34 | Batch mode reads a series of commands from an input batchfile in- | 41 | Batch mode reads a series of commands from an input batchfile in- |
35 | stead of stdin. Since it lacks user interaction it should be | 42 | stead of stdin. Since it lacks user interaction it should be |
36 | used in conjunction with non-interactive authentication. sftp | 43 | used in conjunction with non-interactive authentication. A |
44 | batchfile of `-' may be used to indicate standard input. sftp | ||
37 | will abort if any of the following commands fail: get, put, | 45 | will abort if any of the following commands fail: get, put, |
38 | rename, ln, rm, mkdir, chdir, ls, lchdir, chmod, chown, chgrp, | 46 | rename, ln, rm, mkdir, chdir, ls, lchdir, chmod, chown, chgrp, |
39 | lpwd and lmkdir. Termination on error can be suppressed on a | 47 | lpwd and lmkdir. Termination on error can be suppressed on a |
40 | command by command basis by prefixing the command with a `-' | 48 | command by command basis by prefixing the command with a `-' |
41 | character (for example, -rm /tmp/blah*). | 49 | character (for example, -rm /tmp/blah*). |
42 | 50 | ||
43 | -o ssh_option | ||
44 | Can be used to pass options to ssh in the format used in | ||
45 | ssh_config(5). This is useful for specifying options for which | ||
46 | there is no separate sftp command-line flag. For example, to | ||
47 | specify an alternate port use: sftp -oPort=24. | ||
48 | |||
49 | -s subsystem | sftp_server | ||
50 | Specifies the SSH2 subsystem or the path for an sftp server on | ||
51 | the remote host. A path is useful for using sftp over protocol | ||
52 | version 1, or when the remote sshd(8) does not have an sftp sub- | ||
53 | system configured. | ||
54 | |||
55 | -v Raise logging level. This option is also passed to ssh. | ||
56 | |||
57 | -B buffer_size | ||
58 | Specify the size of the buffer that sftp uses when transferring | ||
59 | files. Larger buffers require fewer round trips at the cost of | ||
60 | higher memory consumption. The default is 32768 bytes. | ||
61 | |||
62 | -C Enables compression (via ssh's -C flag). | 51 | -C Enables compression (via ssh's -C flag). |
63 | 52 | ||
64 | -F ssh_config | 53 | -F ssh_config |
65 | Specifies an alternative per-user configuration file for ssh(1). | 54 | Specifies an alternative per-user configuration file for ssh(1). |
66 | This option is directly passed to ssh(1). | 55 | This option is directly passed to ssh(1). |
67 | 56 | ||
68 | -P sftp_server path | 57 | -o ssh_option |
58 | Can be used to pass options to ssh in the format used in | ||
59 | ssh_config(5). This is useful for specifying options for which | ||
60 | there is no separate sftp command-line flag. For example, to | ||
61 | specify an alternate port use: sftp -oPort=24. For full details | ||
62 | of the options listed below, and their possible values, see | ||
63 | ssh_config(5). | ||
64 | |||
65 | AddressFamily | ||
66 | BatchMode | ||
67 | BindAddress | ||
68 | ChallengeResponseAuthentication | ||
69 | CheckHostIP | ||
70 | Cipher | ||
71 | Ciphers | ||
72 | Compression | ||
73 | CompressionLevel | ||
74 | ConnectionAttempts | ||
75 | ConnectionTimeout | ||
76 | GlobalKnownHostsFile | ||
77 | GSSAPIAuthentication | ||
78 | GSSAPIDelegateCredentials | ||
79 | Host | ||
80 | HostbasedAuthentication | ||
81 | HostKeyAlgorithms | ||
82 | HostKeyAlias | ||
83 | HostName | ||
84 | IdentityFile | ||
85 | LogLevel | ||
86 | MACs | ||
87 | NoHostAuthenticationForLocalhost | ||
88 | NumberOfPasswordPrompts | ||
89 | PasswordAuthentication | ||
90 | Port | ||
91 | PreferredAuthentications | ||
92 | Protocol | ||
93 | ProxyCommand | ||
94 | PubkeyAuthentication | ||
95 | RhostsRSAAuthentication | ||
96 | RSAAuthentication | ||
97 | ServerAliveInterval | ||
98 | ServerAliveCountMax | ||
99 | SmartcardDevice | ||
100 | StrictHostKeyChecking | ||
101 | TCPKeepAlive | ||
102 | UsePrivilegedPort | ||
103 | User | ||
104 | UserKnownHostsFile | ||
105 | VerifyHostKeyDNS | ||
106 | |||
107 | -P sftp_server_path | ||
69 | Connect directly to a local sftp server (rather than via ssh(1)) | 108 | Connect directly to a local sftp server (rather than via ssh(1)) |
70 | This option may be useful in debugging the client and server. | 109 | This option may be useful in debugging the client and server. |
71 | 110 | ||
@@ -78,104 +117,104 @@ DESCRIPTION | |||
78 | Name of the program to use for the encrypted connection. The | 117 | Name of the program to use for the encrypted connection. The |
79 | program must understand ssh(1) options. | 118 | program must understand ssh(1) options. |
80 | 119 | ||
81 | -1 Specify the use of protocol version 1. | 120 | -s subsystem | sftp_server |
121 | Specifies the SSH2 subsystem or the path for an sftp server on | ||
122 | the remote host. A path is useful for using sftp over protocol | ||
123 | version 1, or when the remote sshd(8) does not have an sftp sub- | ||
124 | system configured. | ||
125 | |||
126 | -v Raise logging level. This option is also passed to ssh. | ||
82 | 127 | ||
83 | INTERACTIVE COMMANDS | 128 | INTERACTIVE COMMANDS |
84 | Once in interactive mode, sftp understands a set of commands similar to | 129 | Once in interactive mode, sftp understands a set of commands similar to |
85 | those of ftp(1). Commands are case insensitive and pathnames may be en- | 130 | those of ftp(1). Commands are case insensitive and pathnames may be en- |
86 | closed in quotes if they contain spaces. | 131 | closed in quotes if they contain spaces. |
87 | 132 | ||
88 | bye Quit sftp. | 133 | bye Quit sftp. |
89 | 134 | ||
90 | cd path | 135 | cd path Change remote directory to path. |
91 | Change remote directory to path. | ||
92 | |||
93 | lcd path | ||
94 | Change local directory to path. | ||
95 | 136 | ||
96 | chgrp grp path | 137 | chgrp grp path |
97 | Change group of file path to grp. grp must be a numeric GID. | 138 | Change group of file path to grp. grp must be a numeric GID. |
98 | 139 | ||
99 | chmod mode path | 140 | chmod mode path |
100 | Change permissions of file path to mode. | 141 | Change permissions of file path to mode. |
101 | 142 | ||
102 | chown own path | 143 | chown own path |
103 | Change owner of file path to own. own must be a numeric UID. | 144 | Change owner of file path to own. own must be a numeric UID. |
104 | 145 | ||
105 | exit Quit sftp. | 146 | exit Quit sftp. |
106 | 147 | ||
107 | get [flags] remote-path [local-path] | 148 | get [flags] remote-path [local-path] |
108 | Retrieve the remote-path and store it on the local machine. If | 149 | Retrieve the remote-path and store it on the local machine. |
109 | the local path name is not specified, it is given the same name | 150 | If the local path name is not specified, it is given the same |
110 | it has on the remote machine. If the -P flag is specified, then | 151 | name it has on the remote machine. If the -P flag is speci- |
111 | the file's full permission and access time are copied too. | 152 | fied, then the file's full permission and access time are |
153 | copied too. | ||
154 | |||
155 | help Display help text. | ||
112 | 156 | ||
113 | help Display help text. | 157 | lcd path Change local directory to path. |
114 | 158 | ||
115 | lls [ls-options [path]] | 159 | lls [ls-options [path]] |
116 | Display local directory listing of either path or current direc- | 160 | Display local directory listing of either path or current di- |
117 | tory if path is not specified. | 161 | rectory if path is not specified. |
118 | 162 | ||
119 | lmkdir path | 163 | lmkdir path |
120 | Create local directory specified by path. | 164 | Create local directory specified by path. |
121 | 165 | ||
122 | ln oldpath newpath | 166 | ln oldpath newpath |
123 | Create a symbolic link from oldpath to newpath. | 167 | Create a symbolic link from oldpath to newpath. |
124 | 168 | ||
125 | lpwd Print local working directory. | 169 | lpwd Print local working directory. |
126 | 170 | ||
127 | ls [flags] [path] | 171 | ls [flags] [path] |
128 | Display remote directory listing of either path or current direc- | 172 | Display remote directory listing of either path or current |
129 | tory if path is not specified. If the -l flag is specified, then | 173 | directory if path is not specified. If the -l flag is speci- |
130 | display additional details including permissions and ownership | 174 | fied, then display additional details including permissions |
131 | information. | 175 | and ownership information. |
132 | 176 | ||
133 | lumask umask | 177 | lumask umask |
134 | Set local umask to umask. | 178 | Set local umask to umask. |
135 | 179 | ||
136 | mkdir path | 180 | mkdir path Create remote directory specified by path. |
137 | Create remote directory specified by path. | ||
138 | 181 | ||
139 | progress | 182 | progress Toggle display of progress meter. |
140 | Toggle display of progress meter. | ||
141 | 183 | ||
142 | put [flags] local-path [remote-path] | 184 | put [flags] local-path [remote-path] |
143 | Upload local-path and store it on the remote machine. If the re- | 185 | Upload local-path and store it on the remote machine. If the |
144 | mote path name is not specified, it is given the same name it has | 186 | remote path name is not specified, it is given the same name |
145 | on the local machine. If the -P flag is specified, then the | 187 | it has on the local machine. If the -P flag is specified, |
146 | file's full permission and access time are copied too. | 188 | then the file's full permission and access time are copied |
189 | too. | ||
147 | 190 | ||
148 | pwd Display remote working directory. | 191 | pwd Display remote working directory. |
149 | 192 | ||
150 | quit Quit sftp. | 193 | quit Quit sftp. |
151 | 194 | ||
152 | rename oldpath newpath | 195 | rename oldpath newpath |
153 | Rename remote file from oldpath to newpath. | 196 | Rename remote file from oldpath to newpath. |
154 | 197 | ||
155 | rmdir path | 198 | rm path Delete remote file specified by path. |
156 | Remove remote directory specified by path. | ||
157 | 199 | ||
158 | rm path | 200 | rmdir path Remove remote directory specified by path. |
159 | Delete remote file specified by path. | ||
160 | 201 | ||
161 | symlink oldpath newpath | 202 | symlink oldpath newpath |
162 | Create a symbolic link from oldpath to newpath. | 203 | Create a symbolic link from oldpath to newpath. |
163 | 204 | ||
164 | version | 205 | version Display the sftp protocol version. |
165 | Display the sftp protocol version. | ||
166 | 206 | ||
167 | ! command | 207 | ! command Execute command in local shell. |
168 | Execute command in local shell. | ||
169 | 208 | ||
170 | ! Escape to local shell. | 209 | ! Escape to local shell. |
171 | 210 | ||
172 | ? Synonym for help. | 211 | ? Synonym for help. |
173 | 212 | ||
174 | SEE ALSO | 213 | SEE ALSO |
175 | scp(1), ssh(1), ssh-add(1), ssh-keygen(1), ssh_config(5), sftp-server(8), | 214 | ftp(1), scp(1), ssh(1), ssh-add(1), ssh-keygen(1), ssh_config(5), |
176 | sshd(8) | 215 | sftp-server(8), sshd(8) |
177 | 216 | ||
178 | T. Ylonen, and S. Lehtinen, SSH File Transfer Protocol, draft-ietf-secsh- | 217 | T. Ylonen, and S. Lehtinen, SSH File Transfer Protocol, draft-ietf-secsh- |
179 | filexfer-00.txt, January 2001, work in progress material. | 218 | filexfer-00.txt, January 2001, work in progress material. |
180 | 219 | ||
181 | OpenBSD 3.4 February 4, 2001 3 | 220 | OpenBSD 3.4 February 4, 2001 4 |
@@ -1,4 +1,4 @@ | |||
1 | .\" $OpenBSD: sftp.1,v 1.45 2003/09/02 18:50:06 jmc Exp $ | 1 | .\" $OpenBSD: sftp.1,v 1.51 2004/01/13 12:17:33 jmc Exp $ |
2 | .\" | 2 | .\" |
3 | .\" Copyright (c) 2001 Damien Miller. All rights reserved. | 3 | .\" Copyright (c) 2001 Damien Miller. All rights reserved. |
4 | .\" | 4 | .\" |
@@ -31,15 +31,15 @@ | |||
31 | .Sh SYNOPSIS | 31 | .Sh SYNOPSIS |
32 | .Nm sftp | 32 | .Nm sftp |
33 | .Bk -words | 33 | .Bk -words |
34 | .Op Fl vC1 | 34 | .Op Fl 1Cv |
35 | .Op Fl b Ar batchfile | ||
36 | .Op Fl o Ar ssh_option | ||
37 | .Op Fl s Ar subsystem | sftp_server | ||
38 | .Op Fl B Ar buffer_size | 35 | .Op Fl B Ar buffer_size |
36 | .Op Fl b Ar batchfile | ||
39 | .Op Fl F Ar ssh_config | 37 | .Op Fl F Ar ssh_config |
40 | .Op Fl P Ar sftp_server path | 38 | .Op Fl o Ar ssh_option |
39 | .Op Fl P Ar sftp_server_path | ||
41 | .Op Fl R Ar num_requests | 40 | .Op Fl R Ar num_requests |
42 | .Op Fl S Ar program | 41 | .Op Fl S Ar program |
42 | .Op Fl s Ar subsystem | sftp_server | ||
43 | .Ar host | 43 | .Ar host |
44 | .Ek | 44 | .Ek |
45 | .Nm sftp | 45 | .Nm sftp |
@@ -84,6 +84,15 @@ and | |||
84 | for details). | 84 | for details). |
85 | The options are as follows: | 85 | The options are as follows: |
86 | .Bl -tag -width Ds | 86 | .Bl -tag -width Ds |
87 | .It Fl 1 | ||
88 | Specify the use of protocol version 1. | ||
89 | .It Fl B Ar buffer_size | ||
90 | Specify the size of the buffer that | ||
91 | .Nm | ||
92 | uses when transferring files. | ||
93 | Larger buffers require fewer round trips at the cost of higher | ||
94 | memory consumption. | ||
95 | The default is 32768 bytes. | ||
87 | .It Fl b Ar batchfile | 96 | .It Fl b Ar batchfile |
88 | Batch mode reads a series of commands from an input | 97 | Batch mode reads a series of commands from an input |
89 | .Ar batchfile | 98 | .Ar batchfile |
@@ -91,6 +100,11 @@ instead of | |||
91 | .Em stdin . | 100 | .Em stdin . |
92 | Since it lacks user interaction it should be used in conjunction with | 101 | Since it lacks user interaction it should be used in conjunction with |
93 | non-interactive authentication. | 102 | non-interactive authentication. |
103 | A | ||
104 | .Ar batchfile | ||
105 | of | ||
106 | .Sq \- | ||
107 | may be used to indicate standard input. | ||
94 | .Nm | 108 | .Nm |
95 | will abort if any of the following | 109 | will abort if any of the following |
96 | commands fail: | 110 | commands fail: |
@@ -101,9 +115,19 @@ and | |||
101 | .Ic lmkdir . | 115 | .Ic lmkdir . |
102 | Termination on error can be suppressed on a command by command basis by | 116 | Termination on error can be suppressed on a command by command basis by |
103 | prefixing the command with a | 117 | prefixing the command with a |
104 | .Sq Ic \- | 118 | .Sq \- |
105 | character (for example, | 119 | character (for example, |
106 | .Ic -rm /tmp/blah* ) . | 120 | .Ic -rm /tmp/blah* ) . |
121 | .It Fl C | ||
122 | Enables compression (via ssh's | ||
123 | .Fl C | ||
124 | flag). | ||
125 | .It Fl F Ar ssh_config | ||
126 | Specifies an alternative | ||
127 | per-user configuration file for | ||
128 | .Xr ssh 1 . | ||
129 | This option is directly passed to | ||
130 | .Xr ssh 1 . | ||
107 | .It Fl o Ar ssh_option | 131 | .It Fl o Ar ssh_option |
108 | Can be used to pass options to | 132 | Can be used to pass options to |
109 | .Nm ssh | 133 | .Nm ssh |
@@ -115,35 +139,53 @@ for which there is no separate | |||
115 | command-line flag. | 139 | command-line flag. |
116 | For example, to specify an alternate port use: | 140 | For example, to specify an alternate port use: |
117 | .Ic sftp -oPort=24 . | 141 | .Ic sftp -oPort=24 . |
118 | .It Fl s Ar subsystem | sftp_server | 142 | For full details of the options listed below, and their possible values, see |
119 | Specifies the SSH2 subsystem or the path for an sftp server | 143 | .Xr ssh_config 5 . |
120 | on the remote host. | 144 | .Pp |
121 | A path is useful for using | 145 | .Bl -tag -width Ds -offset indent -compact |
122 | .Nm | 146 | .It AddressFamily |
123 | over protocol version 1, or when the remote | 147 | .It BatchMode |
124 | .Xr sshd 8 | 148 | .It BindAddress |
125 | does not have an sftp subsystem configured. | 149 | .It ChallengeResponseAuthentication |
126 | .It Fl v | 150 | .It CheckHostIP |
127 | Raise logging level. | 151 | .It Cipher |
128 | This option is also passed to ssh. | 152 | .It Ciphers |
129 | .It Fl B Ar buffer_size | 153 | .It Compression |
130 | Specify the size of the buffer that | 154 | .It CompressionLevel |
131 | .Nm | 155 | .It ConnectionAttempts |
132 | uses when transferring files. | 156 | .It ConnectionTimeout |
133 | Larger buffers require fewer round trips at the cost of higher | 157 | .It GlobalKnownHostsFile |
134 | memory consumption. | 158 | .It GSSAPIAuthentication |
135 | The default is 32768 bytes. | 159 | .It GSSAPIDelegateCredentials |
136 | .It Fl C | 160 | .It Host |
137 | Enables compression (via ssh's | 161 | .It HostbasedAuthentication |
138 | .Fl C | 162 | .It HostKeyAlgorithms |
139 | flag). | 163 | .It HostKeyAlias |
140 | .It Fl F Ar ssh_config | 164 | .It HostName |
141 | Specifies an alternative | 165 | .It IdentityFile |
142 | per-user configuration file for | 166 | .It LogLevel |
143 | .Xr ssh 1 . | 167 | .It MACs |
144 | This option is directly passed to | 168 | .It NoHostAuthenticationForLocalhost |
145 | .Xr ssh 1 . | 169 | .It NumberOfPasswordPrompts |
146 | .It Fl P Ar sftp_server path | 170 | .It PasswordAuthentication |
171 | .It Port | ||
172 | .It PreferredAuthentications | ||
173 | .It Protocol | ||
174 | .It ProxyCommand | ||
175 | .It PubkeyAuthentication | ||
176 | .It RhostsRSAAuthentication | ||
177 | .It RSAAuthentication | ||
178 | .It ServerAliveInterval | ||
179 | .It ServerAliveCountMax | ||
180 | .It SmartcardDevice | ||
181 | .It StrictHostKeyChecking | ||
182 | .It TCPKeepAlive | ||
183 | .It UsePrivilegedPort | ||
184 | .It User | ||
185 | .It UserKnownHostsFile | ||
186 | .It VerifyHostKeyDNS | ||
187 | .El | ||
188 | .It Fl P Ar sftp_server_path | ||
147 | Connect directly to a local sftp server | 189 | Connect directly to a local sftp server |
148 | (rather than via | 190 | (rather than via |
149 | .Xr ssh 1 ) | 191 | .Xr ssh 1 ) |
@@ -160,8 +202,17 @@ to use for the encrypted connection. | |||
160 | The program must understand | 202 | The program must understand |
161 | .Xr ssh 1 | 203 | .Xr ssh 1 |
162 | options. | 204 | options. |
163 | .It Fl 1 | 205 | .It Fl s Ar subsystem | sftp_server |
164 | Specify the use of protocol version 1. | 206 | Specifies the SSH2 subsystem or the path for an sftp server |
207 | on the remote host. | ||
208 | A path is useful for using | ||
209 | .Nm | ||
210 | over protocol version 1, or when the remote | ||
211 | .Xr sshd 8 | ||
212 | does not have an sftp subsystem configured. | ||
213 | .It Fl v | ||
214 | Raise logging level. | ||
215 | This option is also passed to ssh. | ||
165 | .El | 216 | .El |
166 | .Sh INTERACTIVE COMMANDS | 217 | .Sh INTERACTIVE COMMANDS |
167 | Once in interactive mode, | 218 | Once in interactive mode, |
@@ -170,16 +221,13 @@ understands a set of commands similar to those of | |||
170 | .Xr ftp 1 . | 221 | .Xr ftp 1 . |
171 | Commands are case insensitive and pathnames may be enclosed in quotes if they | 222 | Commands are case insensitive and pathnames may be enclosed in quotes if they |
172 | contain spaces. | 223 | contain spaces. |
173 | .Bl -tag -width Ds | 224 | .Bl -tag -width "lmdir path" |
174 | .It Ic bye | 225 | .It Ic bye |
175 | Quit | 226 | Quit |
176 | .Nm sftp . | 227 | .Nm sftp . |
177 | .It Ic cd Ar path | 228 | .It Ic cd Ar path |
178 | Change remote directory to | 229 | Change remote directory to |
179 | .Ar path . | 230 | .Ar path . |
180 | .It Ic lcd Ar path | ||
181 | Change local directory to | ||
182 | .Ar path . | ||
183 | .It Ic chgrp Ar grp Ar path | 231 | .It Ic chgrp Ar grp Ar path |
184 | Change group of file | 232 | Change group of file |
185 | .Ar path | 233 | .Ar path |
@@ -219,6 +267,9 @@ flag is specified, then the file's full permission and access time are | |||
219 | copied too. | 267 | copied too. |
220 | .It Ic help | 268 | .It Ic help |
221 | Display help text. | 269 | Display help text. |
270 | .It Ic lcd Ar path | ||
271 | Change local directory to | ||
272 | .Ar path . | ||
222 | .It Ic lls Op Ar ls-options Op Ar path | 273 | .It Ic lls Op Ar ls-options Op Ar path |
223 | Display local directory listing of either | 274 | Display local directory listing of either |
224 | .Ar path | 275 | .Ar path |
@@ -280,12 +331,12 @@ Rename remote file from | |||
280 | .Ar oldpath | 331 | .Ar oldpath |
281 | to | 332 | to |
282 | .Ar newpath . | 333 | .Ar newpath . |
283 | .It Ic rmdir Ar path | ||
284 | Remove remote directory specified by | ||
285 | .Ar path . | ||
286 | .It Ic rm Ar path | 334 | .It Ic rm Ar path |
287 | Delete remote file specified by | 335 | Delete remote file specified by |
288 | .Ar path . | 336 | .Ar path . |
337 | .It Ic rmdir Ar path | ||
338 | Remove remote directory specified by | ||
339 | .Ar path . | ||
289 | .It Ic symlink Ar oldpath Ar newpath | 340 | .It Ic symlink Ar oldpath Ar newpath |
290 | Create a symbolic link from | 341 | Create a symbolic link from |
291 | .Ar oldpath | 342 | .Ar oldpath |
@@ -305,6 +356,7 @@ Escape to local shell. | |||
305 | Synonym for help. | 356 | Synonym for help. |
306 | .El | 357 | .El |
307 | .Sh SEE ALSO | 358 | .Sh SEE ALSO |
359 | .Xr ftp 1 , | ||
308 | .Xr scp 1 , | 360 | .Xr scp 1 , |
309 | .Xr ssh 1 , | 361 | .Xr ssh 1 , |
310 | .Xr ssh-add 1 , | 362 | .Xr ssh-add 1 , |
@@ -1,30 +1,22 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2001,2002 Damien Miller. All rights reserved. | 2 | * Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org> |
3 | * | 3 | * |
4 | * Redistribution and use in source and binary forms, with or without | 4 | * Permission to use, copy, modify, and distribute this software for any |
5 | * modification, are permitted provided that the following conditions | 5 | * purpose with or without fee is hereby granted, provided that the above |
6 | * are met: | 6 | * copyright notice and this permission notice appear in all copies. |
7 | * 1. Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * 2. Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * | 7 | * |
13 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | 8 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
14 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | 9 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
15 | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | 10 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
16 | * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | 11 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
17 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | 12 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
18 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 13 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
19 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 14 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
20 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
21 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
22 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
23 | */ | 15 | */ |
24 | 16 | ||
25 | #include "includes.h" | 17 | #include "includes.h" |
26 | 18 | ||
27 | RCSID("$OpenBSD: sftp.c,v 1.37 2003/07/10 20:05:55 markus Exp $"); | 19 | RCSID("$OpenBSD: sftp.c,v 1.44 2004/02/17 11:03:08 djm Exp $"); |
28 | 20 | ||
29 | #include "buffer.h" | 21 | #include "buffer.h" |
30 | #include "xmalloc.h" | 22 | #include "xmalloc.h" |
@@ -35,7 +27,27 @@ RCSID("$OpenBSD: sftp.c,v 1.37 2003/07/10 20:05:55 markus Exp $"); | |||
35 | #include "sftp.h" | 27 | #include "sftp.h" |
36 | #include "sftp-common.h" | 28 | #include "sftp-common.h" |
37 | #include "sftp-client.h" | 29 | #include "sftp-client.h" |
38 | #include "sftp-int.h" | 30 | |
31 | /* File to read commands from */ | ||
32 | FILE* infile; | ||
33 | |||
34 | /* Are we in batchfile mode? */ | ||
35 | int batchmode = 0; | ||
36 | |||
37 | /* Size of buffer used when copying files */ | ||
38 | size_t copy_buffer_len = 32768; | ||
39 | |||
40 | /* Number of concurrent outstanding requests */ | ||
41 | size_t num_requests = 16; | ||
42 | |||
43 | /* PID of ssh transport process */ | ||
44 | static pid_t sshpid = -1; | ||
45 | |||
46 | /* This is set to 0 if the progressmeter is not desired. */ | ||
47 | int showprogress; | ||
48 | |||
49 | int remote_glob(struct sftp_conn *, const char *, int, | ||
50 | int (*)(const char *, int), glob_t *); /* proto for sftp-glob.c */ | ||
39 | 51 | ||
40 | #ifdef HAVE___PROGNAME | 52 | #ifdef HAVE___PROGNAME |
41 | extern char *__progname; | 53 | extern char *__progname; |
@@ -43,12 +55,1155 @@ extern char *__progname; | |||
43 | char *__progname; | 55 | char *__progname; |
44 | #endif | 56 | #endif |
45 | 57 | ||
46 | FILE* infile; | 58 | /* Separators for interactive commands */ |
47 | size_t copy_buffer_len = 32768; | 59 | #define WHITESPACE " \t\r\n" |
48 | size_t num_requests = 16; | 60 | |
49 | static pid_t sshpid = -1; | 61 | /* Define what type of ls view (0 - multi-column) */ |
62 | #define LONG_VIEW 1 /* Full view ala ls -l */ | ||
63 | #define SHORT_VIEW 2 /* Single row view ala ls -1 */ | ||
64 | |||
65 | /* Commands for interactive mode */ | ||
66 | #define I_CHDIR 1 | ||
67 | #define I_CHGRP 2 | ||
68 | #define I_CHMOD 3 | ||
69 | #define I_CHOWN 4 | ||
70 | #define I_GET 5 | ||
71 | #define I_HELP 6 | ||
72 | #define I_LCHDIR 7 | ||
73 | #define I_LLS 8 | ||
74 | #define I_LMKDIR 9 | ||
75 | #define I_LPWD 10 | ||
76 | #define I_LS 11 | ||
77 | #define I_LUMASK 12 | ||
78 | #define I_MKDIR 13 | ||
79 | #define I_PUT 14 | ||
80 | #define I_PWD 15 | ||
81 | #define I_QUIT 16 | ||
82 | #define I_RENAME 17 | ||
83 | #define I_RM 18 | ||
84 | #define I_RMDIR 19 | ||
85 | #define I_SHELL 20 | ||
86 | #define I_SYMLINK 21 | ||
87 | #define I_VERSION 22 | ||
88 | #define I_PROGRESS 23 | ||
89 | |||
90 | struct CMD { | ||
91 | const char *c; | ||
92 | const int n; | ||
93 | }; | ||
94 | |||
95 | static const struct CMD cmds[] = { | ||
96 | { "bye", I_QUIT }, | ||
97 | { "cd", I_CHDIR }, | ||
98 | { "chdir", I_CHDIR }, | ||
99 | { "chgrp", I_CHGRP }, | ||
100 | { "chmod", I_CHMOD }, | ||
101 | { "chown", I_CHOWN }, | ||
102 | { "dir", I_LS }, | ||
103 | { "exit", I_QUIT }, | ||
104 | { "get", I_GET }, | ||
105 | { "mget", I_GET }, | ||
106 | { "help", I_HELP }, | ||
107 | { "lcd", I_LCHDIR }, | ||
108 | { "lchdir", I_LCHDIR }, | ||
109 | { "lls", I_LLS }, | ||
110 | { "lmkdir", I_LMKDIR }, | ||
111 | { "ln", I_SYMLINK }, | ||
112 | { "lpwd", I_LPWD }, | ||
113 | { "ls", I_LS }, | ||
114 | { "lumask", I_LUMASK }, | ||
115 | { "mkdir", I_MKDIR }, | ||
116 | { "progress", I_PROGRESS }, | ||
117 | { "put", I_PUT }, | ||
118 | { "mput", I_PUT }, | ||
119 | { "pwd", I_PWD }, | ||
120 | { "quit", I_QUIT }, | ||
121 | { "rename", I_RENAME }, | ||
122 | { "rm", I_RM }, | ||
123 | { "rmdir", I_RMDIR }, | ||
124 | { "symlink", I_SYMLINK }, | ||
125 | { "version", I_VERSION }, | ||
126 | { "!", I_SHELL }, | ||
127 | { "?", I_HELP }, | ||
128 | { NULL, -1} | ||
129 | }; | ||
50 | 130 | ||
51 | extern int showprogress; | 131 | int interactive_loop(int fd_in, int fd_out, char *file1, char *file2); |
132 | |||
133 | static void | ||
134 | help(void) | ||
135 | { | ||
136 | printf("Available commands:\n"); | ||
137 | printf("cd path Change remote directory to 'path'\n"); | ||
138 | printf("lcd path Change local directory to 'path'\n"); | ||
139 | printf("chgrp grp path Change group of file 'path' to 'grp'\n"); | ||
140 | printf("chmod mode path Change permissions of file 'path' to 'mode'\n"); | ||
141 | printf("chown own path Change owner of file 'path' to 'own'\n"); | ||
142 | printf("help Display this help text\n"); | ||
143 | printf("get remote-path [local-path] Download file\n"); | ||
144 | printf("lls [ls-options [path]] Display local directory listing\n"); | ||
145 | printf("ln oldpath newpath Symlink remote file\n"); | ||
146 | printf("lmkdir path Create local directory\n"); | ||
147 | printf("lpwd Print local working directory\n"); | ||
148 | printf("ls [path] Display remote directory listing\n"); | ||
149 | printf("lumask umask Set local umask to 'umask'\n"); | ||
150 | printf("mkdir path Create remote directory\n"); | ||
151 | printf("progress Toggle display of progress meter\n"); | ||
152 | printf("put local-path [remote-path] Upload file\n"); | ||
153 | printf("pwd Display remote working directory\n"); | ||
154 | printf("exit Quit sftp\n"); | ||
155 | printf("quit Quit sftp\n"); | ||
156 | printf("rename oldpath newpath Rename remote file\n"); | ||
157 | printf("rmdir path Remove remote directory\n"); | ||
158 | printf("rm path Delete remote file\n"); | ||
159 | printf("symlink oldpath newpath Symlink remote file\n"); | ||
160 | printf("version Show SFTP version\n"); | ||
161 | printf("!command Execute 'command' in local shell\n"); | ||
162 | printf("! Escape to local shell\n"); | ||
163 | printf("? Synonym for help\n"); | ||
164 | } | ||
165 | |||
166 | static void | ||
167 | local_do_shell(const char *args) | ||
168 | { | ||
169 | int status; | ||
170 | char *shell; | ||
171 | pid_t pid; | ||
172 | |||
173 | if (!*args) | ||
174 | args = NULL; | ||
175 | |||
176 | if ((shell = getenv("SHELL")) == NULL) | ||
177 | shell = _PATH_BSHELL; | ||
178 | |||
179 | if ((pid = fork()) == -1) | ||
180 | fatal("Couldn't fork: %s", strerror(errno)); | ||
181 | |||
182 | if (pid == 0) { | ||
183 | /* XXX: child has pipe fds to ssh subproc open - issue? */ | ||
184 | if (args) { | ||
185 | debug3("Executing %s -c \"%s\"", shell, args); | ||
186 | execl(shell, shell, "-c", args, (char *)NULL); | ||
187 | } else { | ||
188 | debug3("Executing %s", shell); | ||
189 | execl(shell, shell, (char *)NULL); | ||
190 | } | ||
191 | fprintf(stderr, "Couldn't execute \"%s\": %s\n", shell, | ||
192 | strerror(errno)); | ||
193 | _exit(1); | ||
194 | } | ||
195 | while (waitpid(pid, &status, 0) == -1) | ||
196 | if (errno != EINTR) | ||
197 | fatal("Couldn't wait for child: %s", strerror(errno)); | ||
198 | if (!WIFEXITED(status)) | ||
199 | error("Shell exited abormally"); | ||
200 | else if (WEXITSTATUS(status)) | ||
201 | error("Shell exited with status %d", WEXITSTATUS(status)); | ||
202 | } | ||
203 | |||
204 | static void | ||
205 | local_do_ls(const char *args) | ||
206 | { | ||
207 | if (!args || !*args) | ||
208 | local_do_shell(_PATH_LS); | ||
209 | else { | ||
210 | int len = strlen(_PATH_LS " ") + strlen(args) + 1; | ||
211 | char *buf = xmalloc(len); | ||
212 | |||
213 | /* XXX: quoting - rip quoting code from ftp? */ | ||
214 | snprintf(buf, len, _PATH_LS " %s", args); | ||
215 | local_do_shell(buf); | ||
216 | xfree(buf); | ||
217 | } | ||
218 | } | ||
219 | |||
220 | /* Strip one path (usually the pwd) from the start of another */ | ||
221 | static char * | ||
222 | path_strip(char *path, char *strip) | ||
223 | { | ||
224 | size_t len; | ||
225 | |||
226 | if (strip == NULL) | ||
227 | return (xstrdup(path)); | ||
228 | |||
229 | len = strlen(strip); | ||
230 | if (strip != NULL && strncmp(path, strip, len) == 0) { | ||
231 | if (strip[len - 1] != '/' && path[len] == '/') | ||
232 | len++; | ||
233 | return (xstrdup(path + len)); | ||
234 | } | ||
235 | |||
236 | return (xstrdup(path)); | ||
237 | } | ||
238 | |||
239 | static char * | ||
240 | path_append(char *p1, char *p2) | ||
241 | { | ||
242 | char *ret; | ||
243 | int len = strlen(p1) + strlen(p2) + 2; | ||
244 | |||
245 | ret = xmalloc(len); | ||
246 | strlcpy(ret, p1, len); | ||
247 | if (p1[strlen(p1) - 1] != '/') | ||
248 | strlcat(ret, "/", len); | ||
249 | strlcat(ret, p2, len); | ||
250 | |||
251 | return(ret); | ||
252 | } | ||
253 | |||
254 | static char * | ||
255 | make_absolute(char *p, char *pwd) | ||
256 | { | ||
257 | char *abs; | ||
258 | |||
259 | /* Derelativise */ | ||
260 | if (p && p[0] != '/') { | ||
261 | abs = path_append(pwd, p); | ||
262 | xfree(p); | ||
263 | return(abs); | ||
264 | } else | ||
265 | return(p); | ||
266 | } | ||
267 | |||
268 | static int | ||
269 | infer_path(const char *p, char **ifp) | ||
270 | { | ||
271 | char *cp; | ||
272 | |||
273 | cp = strrchr(p, '/'); | ||
274 | if (cp == NULL) { | ||
275 | *ifp = xstrdup(p); | ||
276 | return(0); | ||
277 | } | ||
278 | |||
279 | if (!cp[1]) { | ||
280 | error("Invalid path"); | ||
281 | return(-1); | ||
282 | } | ||
283 | |||
284 | *ifp = xstrdup(cp + 1); | ||
285 | return(0); | ||
286 | } | ||
287 | |||
288 | static int | ||
289 | parse_getput_flags(const char **cpp, int *pflag) | ||
290 | { | ||
291 | const char *cp = *cpp; | ||
292 | |||
293 | /* Check for flags */ | ||
294 | if (cp[0] == '-' && cp[1] && strchr(WHITESPACE, cp[2])) { | ||
295 | switch (cp[1]) { | ||
296 | case 'p': | ||
297 | case 'P': | ||
298 | *pflag = 1; | ||
299 | break; | ||
300 | default: | ||
301 | error("Invalid flag -%c", cp[1]); | ||
302 | return(-1); | ||
303 | } | ||
304 | cp += 2; | ||
305 | *cpp = cp + strspn(cp, WHITESPACE); | ||
306 | } | ||
307 | |||
308 | return(0); | ||
309 | } | ||
310 | |||
311 | static int | ||
312 | parse_ls_flags(const char **cpp, int *lflag) | ||
313 | { | ||
314 | const char *cp = *cpp; | ||
315 | |||
316 | /* Check for flags */ | ||
317 | if (cp++[0] == '-') { | ||
318 | for(; strchr(WHITESPACE, *cp) == NULL; cp++) { | ||
319 | switch (*cp) { | ||
320 | case 'l': | ||
321 | *lflag = LONG_VIEW; | ||
322 | break; | ||
323 | case '1': | ||
324 | *lflag = SHORT_VIEW; | ||
325 | break; | ||
326 | default: | ||
327 | error("Invalid flag -%c", *cp); | ||
328 | return(-1); | ||
329 | } | ||
330 | } | ||
331 | *cpp = cp + strspn(cp, WHITESPACE); | ||
332 | } | ||
333 | |||
334 | return(0); | ||
335 | } | ||
336 | |||
337 | static int | ||
338 | get_pathname(const char **cpp, char **path) | ||
339 | { | ||
340 | const char *cp = *cpp, *end; | ||
341 | char quot; | ||
342 | int i, j; | ||
343 | |||
344 | cp += strspn(cp, WHITESPACE); | ||
345 | if (!*cp) { | ||
346 | *cpp = cp; | ||
347 | *path = NULL; | ||
348 | return (0); | ||
349 | } | ||
350 | |||
351 | *path = xmalloc(strlen(cp) + 1); | ||
352 | |||
353 | /* Check for quoted filenames */ | ||
354 | if (*cp == '\"' || *cp == '\'') { | ||
355 | quot = *cp++; | ||
356 | |||
357 | /* Search for terminating quote, unescape some chars */ | ||
358 | for (i = j = 0; i <= strlen(cp); i++) { | ||
359 | if (cp[i] == quot) { /* Found quote */ | ||
360 | i++; | ||
361 | (*path)[j] = '\0'; | ||
362 | break; | ||
363 | } | ||
364 | if (cp[i] == '\0') { /* End of string */ | ||
365 | error("Unterminated quote"); | ||
366 | goto fail; | ||
367 | } | ||
368 | if (cp[i] == '\\') { /* Escaped characters */ | ||
369 | i++; | ||
370 | if (cp[i] != '\'' && cp[i] != '\"' && | ||
371 | cp[i] != '\\') { | ||
372 | error("Bad escaped character '\%c'", | ||
373 | cp[i]); | ||
374 | goto fail; | ||
375 | } | ||
376 | } | ||
377 | (*path)[j++] = cp[i]; | ||
378 | } | ||
379 | |||
380 | if (j == 0) { | ||
381 | error("Empty quotes"); | ||
382 | goto fail; | ||
383 | } | ||
384 | *cpp = cp + i + strspn(cp + i, WHITESPACE); | ||
385 | } else { | ||
386 | /* Read to end of filename */ | ||
387 | end = strpbrk(cp, WHITESPACE); | ||
388 | if (end == NULL) | ||
389 | end = strchr(cp, '\0'); | ||
390 | *cpp = end + strspn(end, WHITESPACE); | ||
391 | |||
392 | memcpy(*path, cp, end - cp); | ||
393 | (*path)[end - cp] = '\0'; | ||
394 | } | ||
395 | return (0); | ||
396 | |||
397 | fail: | ||
398 | xfree(*path); | ||
399 | *path = NULL; | ||
400 | return (-1); | ||
401 | } | ||
402 | |||
403 | static int | ||
404 | is_dir(char *path) | ||
405 | { | ||
406 | struct stat sb; | ||
407 | |||
408 | /* XXX: report errors? */ | ||
409 | if (stat(path, &sb) == -1) | ||
410 | return(0); | ||
411 | |||
412 | return(sb.st_mode & S_IFDIR); | ||
413 | } | ||
414 | |||
415 | static int | ||
416 | is_reg(char *path) | ||
417 | { | ||
418 | struct stat sb; | ||
419 | |||
420 | if (stat(path, &sb) == -1) | ||
421 | fatal("stat %s: %s", path, strerror(errno)); | ||
422 | |||
423 | return(S_ISREG(sb.st_mode)); | ||
424 | } | ||
425 | |||
426 | static int | ||
427 | remote_is_dir(struct sftp_conn *conn, char *path) | ||
428 | { | ||
429 | Attrib *a; | ||
430 | |||
431 | /* XXX: report errors? */ | ||
432 | if ((a = do_stat(conn, path, 1)) == NULL) | ||
433 | return(0); | ||
434 | if (!(a->flags & SSH2_FILEXFER_ATTR_PERMISSIONS)) | ||
435 | return(0); | ||
436 | return(a->perm & S_IFDIR); | ||
437 | } | ||
438 | |||
439 | static int | ||
440 | process_get(struct sftp_conn *conn, char *src, char *dst, char *pwd, int pflag) | ||
441 | { | ||
442 | char *abs_src = NULL; | ||
443 | char *abs_dst = NULL; | ||
444 | char *tmp; | ||
445 | glob_t g; | ||
446 | int err = 0; | ||
447 | int i; | ||
448 | |||
449 | abs_src = xstrdup(src); | ||
450 | abs_src = make_absolute(abs_src, pwd); | ||
451 | |||
452 | memset(&g, 0, sizeof(g)); | ||
453 | debug3("Looking up %s", abs_src); | ||
454 | if (remote_glob(conn, abs_src, 0, NULL, &g)) { | ||
455 | error("File \"%s\" not found.", abs_src); | ||
456 | err = -1; | ||
457 | goto out; | ||
458 | } | ||
459 | |||
460 | /* If multiple matches, dst must be a directory or unspecified */ | ||
461 | if (g.gl_matchc > 1 && dst && !is_dir(dst)) { | ||
462 | error("Multiple files match, but \"%s\" is not a directory", | ||
463 | dst); | ||
464 | err = -1; | ||
465 | goto out; | ||
466 | } | ||
467 | |||
468 | for (i = 0; g.gl_pathv[i]; i++) { | ||
469 | if (infer_path(g.gl_pathv[i], &tmp)) { | ||
470 | err = -1; | ||
471 | goto out; | ||
472 | } | ||
473 | |||
474 | if (g.gl_matchc == 1 && dst) { | ||
475 | /* If directory specified, append filename */ | ||
476 | if (is_dir(dst)) { | ||
477 | if (infer_path(g.gl_pathv[0], &tmp)) { | ||
478 | err = 1; | ||
479 | goto out; | ||
480 | } | ||
481 | abs_dst = path_append(dst, tmp); | ||
482 | xfree(tmp); | ||
483 | } else | ||
484 | abs_dst = xstrdup(dst); | ||
485 | } else if (dst) { | ||
486 | abs_dst = path_append(dst, tmp); | ||
487 | xfree(tmp); | ||
488 | } else | ||
489 | abs_dst = tmp; | ||
490 | |||
491 | printf("Fetching %s to %s\n", g.gl_pathv[i], abs_dst); | ||
492 | if (do_download(conn, g.gl_pathv[i], abs_dst, pflag) == -1) | ||
493 | err = -1; | ||
494 | xfree(abs_dst); | ||
495 | abs_dst = NULL; | ||
496 | } | ||
497 | |||
498 | out: | ||
499 | xfree(abs_src); | ||
500 | if (abs_dst) | ||
501 | xfree(abs_dst); | ||
502 | globfree(&g); | ||
503 | return(err); | ||
504 | } | ||
505 | |||
506 | static int | ||
507 | process_put(struct sftp_conn *conn, char *src, char *dst, char *pwd, int pflag) | ||
508 | { | ||
509 | char *tmp_dst = NULL; | ||
510 | char *abs_dst = NULL; | ||
511 | char *tmp; | ||
512 | glob_t g; | ||
513 | int err = 0; | ||
514 | int i; | ||
515 | |||
516 | if (dst) { | ||
517 | tmp_dst = xstrdup(dst); | ||
518 | tmp_dst = make_absolute(tmp_dst, pwd); | ||
519 | } | ||
520 | |||
521 | memset(&g, 0, sizeof(g)); | ||
522 | debug3("Looking up %s", src); | ||
523 | if (glob(src, 0, NULL, &g)) { | ||
524 | error("File \"%s\" not found.", src); | ||
525 | err = -1; | ||
526 | goto out; | ||
527 | } | ||
528 | |||
529 | /* If multiple matches, dst may be directory or unspecified */ | ||
530 | if (g.gl_matchc > 1 && tmp_dst && !remote_is_dir(conn, tmp_dst)) { | ||
531 | error("Multiple files match, but \"%s\" is not a directory", | ||
532 | tmp_dst); | ||
533 | err = -1; | ||
534 | goto out; | ||
535 | } | ||
536 | |||
537 | for (i = 0; g.gl_pathv[i]; i++) { | ||
538 | if (!is_reg(g.gl_pathv[i])) { | ||
539 | error("skipping non-regular file %s", | ||
540 | g.gl_pathv[i]); | ||
541 | continue; | ||
542 | } | ||
543 | if (infer_path(g.gl_pathv[i], &tmp)) { | ||
544 | err = -1; | ||
545 | goto out; | ||
546 | } | ||
547 | |||
548 | if (g.gl_matchc == 1 && tmp_dst) { | ||
549 | /* If directory specified, append filename */ | ||
550 | if (remote_is_dir(conn, tmp_dst)) { | ||
551 | if (infer_path(g.gl_pathv[0], &tmp)) { | ||
552 | err = 1; | ||
553 | goto out; | ||
554 | } | ||
555 | abs_dst = path_append(tmp_dst, tmp); | ||
556 | xfree(tmp); | ||
557 | } else | ||
558 | abs_dst = xstrdup(tmp_dst); | ||
559 | |||
560 | } else if (tmp_dst) { | ||
561 | abs_dst = path_append(tmp_dst, tmp); | ||
562 | xfree(tmp); | ||
563 | } else | ||
564 | abs_dst = make_absolute(tmp, pwd); | ||
565 | |||
566 | printf("Uploading %s to %s\n", g.gl_pathv[i], abs_dst); | ||
567 | if (do_upload(conn, g.gl_pathv[i], abs_dst, pflag) == -1) | ||
568 | err = -1; | ||
569 | } | ||
570 | |||
571 | out: | ||
572 | if (abs_dst) | ||
573 | xfree(abs_dst); | ||
574 | if (tmp_dst) | ||
575 | xfree(tmp_dst); | ||
576 | globfree(&g); | ||
577 | return(err); | ||
578 | } | ||
579 | |||
580 | static int | ||
581 | sdirent_comp(const void *aa, const void *bb) | ||
582 | { | ||
583 | SFTP_DIRENT *a = *(SFTP_DIRENT **)aa; | ||
584 | SFTP_DIRENT *b = *(SFTP_DIRENT **)bb; | ||
585 | |||
586 | return (strcmp(a->filename, b->filename)); | ||
587 | } | ||
588 | |||
589 | /* sftp ls.1 replacement for directories */ | ||
590 | static int | ||
591 | do_ls_dir(struct sftp_conn *conn, char *path, char *strip_path, int lflag) | ||
592 | { | ||
593 | int n, c = 1, colspace = 0, columns = 1; | ||
594 | SFTP_DIRENT **d; | ||
595 | |||
596 | if ((n = do_readdir(conn, path, &d)) != 0) | ||
597 | return (n); | ||
598 | |||
599 | if (!(lflag & SHORT_VIEW)) { | ||
600 | int m = 0, width = 80; | ||
601 | struct winsize ws; | ||
602 | char *tmp; | ||
603 | |||
604 | /* Count entries for sort and find longest filename */ | ||
605 | for (n = 0; d[n] != NULL; n++) | ||
606 | m = MAX(m, strlen(d[n]->filename)); | ||
607 | |||
608 | /* Add any subpath that also needs to be counted */ | ||
609 | tmp = path_strip(path, strip_path); | ||
610 | m += strlen(tmp); | ||
611 | xfree(tmp); | ||
612 | |||
613 | if (ioctl(fileno(stdin), TIOCGWINSZ, &ws) != -1) | ||
614 | width = ws.ws_col; | ||
615 | |||
616 | columns = width / (m + 2); | ||
617 | columns = MAX(columns, 1); | ||
618 | colspace = width / columns; | ||
619 | colspace = MIN(colspace, width); | ||
620 | } | ||
621 | |||
622 | qsort(d, n, sizeof(*d), sdirent_comp); | ||
623 | |||
624 | for (n = 0; d[n] != NULL; n++) { | ||
625 | char *tmp, *fname; | ||
626 | |||
627 | tmp = path_append(path, d[n]->filename); | ||
628 | fname = path_strip(tmp, strip_path); | ||
629 | xfree(tmp); | ||
630 | |||
631 | if (lflag & LONG_VIEW) { | ||
632 | char *lname; | ||
633 | struct stat sb; | ||
634 | |||
635 | memset(&sb, 0, sizeof(sb)); | ||
636 | attrib_to_stat(&d[n]->a, &sb); | ||
637 | lname = ls_file(fname, &sb, 1); | ||
638 | printf("%s\n", lname); | ||
639 | xfree(lname); | ||
640 | } else { | ||
641 | printf("%-*s", colspace, fname); | ||
642 | if (c >= columns) { | ||
643 | printf("\n"); | ||
644 | c = 1; | ||
645 | } else | ||
646 | c++; | ||
647 | } | ||
648 | |||
649 | xfree(fname); | ||
650 | } | ||
651 | |||
652 | if (!(lflag & LONG_VIEW) && (c != 1)) | ||
653 | printf("\n"); | ||
654 | |||
655 | free_sftp_dirents(d); | ||
656 | return (0); | ||
657 | } | ||
658 | |||
659 | /* sftp ls.1 replacement which handles path globs */ | ||
660 | static int | ||
661 | do_globbed_ls(struct sftp_conn *conn, char *path, char *strip_path, | ||
662 | int lflag) | ||
663 | { | ||
664 | glob_t g; | ||
665 | int i, c = 1, colspace = 0, columns = 1; | ||
666 | Attrib *a; | ||
667 | |||
668 | memset(&g, 0, sizeof(g)); | ||
669 | |||
670 | if (remote_glob(conn, path, GLOB_MARK|GLOB_NOCHECK|GLOB_BRACE, | ||
671 | NULL, &g)) { | ||
672 | error("Can't ls: \"%s\" not found", path); | ||
673 | return (-1); | ||
674 | } | ||
675 | |||
676 | /* | ||
677 | * If the glob returns a single match, which is the same as the | ||
678 | * input glob, and it is a directory, then just list its contents | ||
679 | */ | ||
680 | if (g.gl_pathc == 1 && | ||
681 | strncmp(path, g.gl_pathv[0], strlen(g.gl_pathv[0]) - 1) == 0) { | ||
682 | if ((a = do_lstat(conn, path, 1)) == NULL) { | ||
683 | globfree(&g); | ||
684 | return (-1); | ||
685 | } | ||
686 | if ((a->flags & SSH2_FILEXFER_ATTR_PERMISSIONS) && | ||
687 | S_ISDIR(a->perm)) { | ||
688 | globfree(&g); | ||
689 | return (do_ls_dir(conn, path, strip_path, lflag)); | ||
690 | } | ||
691 | } | ||
692 | |||
693 | if (!(lflag & SHORT_VIEW)) { | ||
694 | int m = 0, width = 80; | ||
695 | struct winsize ws; | ||
696 | |||
697 | /* Count entries for sort and find longest filename */ | ||
698 | for (i = 0; g.gl_pathv[i]; i++) | ||
699 | m = MAX(m, strlen(g.gl_pathv[i])); | ||
700 | |||
701 | if (ioctl(fileno(stdin), TIOCGWINSZ, &ws) != -1) | ||
702 | width = ws.ws_col; | ||
703 | |||
704 | columns = width / (m + 2); | ||
705 | columns = MAX(columns, 1); | ||
706 | colspace = width / columns; | ||
707 | } | ||
708 | |||
709 | for (i = 0; g.gl_pathv[i]; i++) { | ||
710 | char *fname; | ||
711 | |||
712 | fname = path_strip(g.gl_pathv[i], strip_path); | ||
713 | |||
714 | if (lflag & LONG_VIEW) { | ||
715 | char *lname; | ||
716 | struct stat sb; | ||
717 | |||
718 | /* | ||
719 | * XXX: this is slow - 1 roundtrip per path | ||
720 | * A solution to this is to fork glob() and | ||
721 | * build a sftp specific version which keeps the | ||
722 | * attribs (which currently get thrown away) | ||
723 | * that the server returns as well as the filenames. | ||
724 | */ | ||
725 | memset(&sb, 0, sizeof(sb)); | ||
726 | a = do_lstat(conn, g.gl_pathv[i], 1); | ||
727 | if (a != NULL) | ||
728 | attrib_to_stat(a, &sb); | ||
729 | lname = ls_file(fname, &sb, 1); | ||
730 | printf("%s\n", lname); | ||
731 | xfree(lname); | ||
732 | } else { | ||
733 | printf("%-*s", colspace, fname); | ||
734 | if (c >= columns) { | ||
735 | printf("\n"); | ||
736 | c = 1; | ||
737 | } else | ||
738 | c++; | ||
739 | } | ||
740 | xfree(fname); | ||
741 | } | ||
742 | |||
743 | if (!(lflag & LONG_VIEW) && (c != 1)) | ||
744 | printf("\n"); | ||
745 | |||
746 | if (g.gl_pathc) | ||
747 | globfree(&g); | ||
748 | |||
749 | return (0); | ||
750 | } | ||
751 | |||
752 | static int | ||
753 | parse_args(const char **cpp, int *pflag, int *lflag, int *iflag, | ||
754 | unsigned long *n_arg, char **path1, char **path2) | ||
755 | { | ||
756 | const char *cmd, *cp = *cpp; | ||
757 | char *cp2; | ||
758 | int base = 0; | ||
759 | long l; | ||
760 | int i, cmdnum; | ||
761 | |||
762 | /* Skip leading whitespace */ | ||
763 | cp = cp + strspn(cp, WHITESPACE); | ||
764 | |||
765 | /* Ignore blank lines and lines which begin with comment '#' char */ | ||
766 | if (*cp == '\0' || *cp == '#') | ||
767 | return (0); | ||
768 | |||
769 | /* Check for leading '-' (disable error processing) */ | ||
770 | *iflag = 0; | ||
771 | if (*cp == '-') { | ||
772 | *iflag = 1; | ||
773 | cp++; | ||
774 | } | ||
775 | |||
776 | /* Figure out which command we have */ | ||
777 | for (i = 0; cmds[i].c; i++) { | ||
778 | int cmdlen = strlen(cmds[i].c); | ||
779 | |||
780 | /* Check for command followed by whitespace */ | ||
781 | if (!strncasecmp(cp, cmds[i].c, cmdlen) && | ||
782 | strchr(WHITESPACE, cp[cmdlen])) { | ||
783 | cp += cmdlen; | ||
784 | cp = cp + strspn(cp, WHITESPACE); | ||
785 | break; | ||
786 | } | ||
787 | } | ||
788 | cmdnum = cmds[i].n; | ||
789 | cmd = cmds[i].c; | ||
790 | |||
791 | /* Special case */ | ||
792 | if (*cp == '!') { | ||
793 | cp++; | ||
794 | cmdnum = I_SHELL; | ||
795 | } else if (cmdnum == -1) { | ||
796 | error("Invalid command."); | ||
797 | return (-1); | ||
798 | } | ||
799 | |||
800 | /* Get arguments and parse flags */ | ||
801 | *lflag = *pflag = *n_arg = 0; | ||
802 | *path1 = *path2 = NULL; | ||
803 | switch (cmdnum) { | ||
804 | case I_GET: | ||
805 | case I_PUT: | ||
806 | if (parse_getput_flags(&cp, pflag)) | ||
807 | return(-1); | ||
808 | /* Get first pathname (mandatory) */ | ||
809 | if (get_pathname(&cp, path1)) | ||
810 | return(-1); | ||
811 | if (*path1 == NULL) { | ||
812 | error("You must specify at least one path after a " | ||
813 | "%s command.", cmd); | ||
814 | return(-1); | ||
815 | } | ||
816 | /* Try to get second pathname (optional) */ | ||
817 | if (get_pathname(&cp, path2)) | ||
818 | return(-1); | ||
819 | break; | ||
820 | case I_RENAME: | ||
821 | case I_SYMLINK: | ||
822 | if (get_pathname(&cp, path1)) | ||
823 | return(-1); | ||
824 | if (get_pathname(&cp, path2)) | ||
825 | return(-1); | ||
826 | if (!*path1 || !*path2) { | ||
827 | error("You must specify two paths after a %s " | ||
828 | "command.", cmd); | ||
829 | return(-1); | ||
830 | } | ||
831 | break; | ||
832 | case I_RM: | ||
833 | case I_MKDIR: | ||
834 | case I_RMDIR: | ||
835 | case I_CHDIR: | ||
836 | case I_LCHDIR: | ||
837 | case I_LMKDIR: | ||
838 | /* Get pathname (mandatory) */ | ||
839 | if (get_pathname(&cp, path1)) | ||
840 | return(-1); | ||
841 | if (*path1 == NULL) { | ||
842 | error("You must specify a path after a %s command.", | ||
843 | cmd); | ||
844 | return(-1); | ||
845 | } | ||
846 | break; | ||
847 | case I_LS: | ||
848 | if (parse_ls_flags(&cp, lflag)) | ||
849 | return(-1); | ||
850 | /* Path is optional */ | ||
851 | if (get_pathname(&cp, path1)) | ||
852 | return(-1); | ||
853 | break; | ||
854 | case I_LLS: | ||
855 | case I_SHELL: | ||
856 | /* Uses the rest of the line */ | ||
857 | break; | ||
858 | case I_LUMASK: | ||
859 | base = 8; | ||
860 | case I_CHMOD: | ||
861 | base = 8; | ||
862 | case I_CHOWN: | ||
863 | case I_CHGRP: | ||
864 | /* Get numeric arg (mandatory) */ | ||
865 | l = strtol(cp, &cp2, base); | ||
866 | if (cp2 == cp || ((l == LONG_MIN || l == LONG_MAX) && | ||
867 | errno == ERANGE) || l < 0) { | ||
868 | error("You must supply a numeric argument " | ||
869 | "to the %s command.", cmd); | ||
870 | return(-1); | ||
871 | } | ||
872 | cp = cp2; | ||
873 | *n_arg = l; | ||
874 | if (cmdnum == I_LUMASK && strchr(WHITESPACE, *cp)) | ||
875 | break; | ||
876 | if (cmdnum == I_LUMASK || !strchr(WHITESPACE, *cp)) { | ||
877 | error("You must supply a numeric argument " | ||
878 | "to the %s command.", cmd); | ||
879 | return(-1); | ||
880 | } | ||
881 | cp += strspn(cp, WHITESPACE); | ||
882 | |||
883 | /* Get pathname (mandatory) */ | ||
884 | if (get_pathname(&cp, path1)) | ||
885 | return(-1); | ||
886 | if (*path1 == NULL) { | ||
887 | error("You must specify a path after a %s command.", | ||
888 | cmd); | ||
889 | return(-1); | ||
890 | } | ||
891 | break; | ||
892 | case I_QUIT: | ||
893 | case I_PWD: | ||
894 | case I_LPWD: | ||
895 | case I_HELP: | ||
896 | case I_VERSION: | ||
897 | case I_PROGRESS: | ||
898 | break; | ||
899 | default: | ||
900 | fatal("Command not implemented"); | ||
901 | } | ||
902 | |||
903 | *cpp = cp; | ||
904 | return(cmdnum); | ||
905 | } | ||
906 | |||
907 | static int | ||
908 | parse_dispatch_command(struct sftp_conn *conn, const char *cmd, char **pwd, | ||
909 | int err_abort) | ||
910 | { | ||
911 | char *path1, *path2, *tmp; | ||
912 | int pflag, lflag, iflag, cmdnum, i; | ||
913 | unsigned long n_arg; | ||
914 | Attrib a, *aa; | ||
915 | char path_buf[MAXPATHLEN]; | ||
916 | int err = 0; | ||
917 | glob_t g; | ||
918 | |||
919 | path1 = path2 = NULL; | ||
920 | cmdnum = parse_args(&cmd, &pflag, &lflag, &iflag, &n_arg, | ||
921 | &path1, &path2); | ||
922 | |||
923 | if (iflag != 0) | ||
924 | err_abort = 0; | ||
925 | |||
926 | memset(&g, 0, sizeof(g)); | ||
927 | |||
928 | /* Perform command */ | ||
929 | switch (cmdnum) { | ||
930 | case 0: | ||
931 | /* Blank line */ | ||
932 | break; | ||
933 | case -1: | ||
934 | /* Unrecognized command */ | ||
935 | err = -1; | ||
936 | break; | ||
937 | case I_GET: | ||
938 | err = process_get(conn, path1, path2, *pwd, pflag); | ||
939 | break; | ||
940 | case I_PUT: | ||
941 | err = process_put(conn, path1, path2, *pwd, pflag); | ||
942 | break; | ||
943 | case I_RENAME: | ||
944 | path1 = make_absolute(path1, *pwd); | ||
945 | path2 = make_absolute(path2, *pwd); | ||
946 | err = do_rename(conn, path1, path2); | ||
947 | break; | ||
948 | case I_SYMLINK: | ||
949 | path2 = make_absolute(path2, *pwd); | ||
950 | err = do_symlink(conn, path1, path2); | ||
951 | break; | ||
952 | case I_RM: | ||
953 | path1 = make_absolute(path1, *pwd); | ||
954 | remote_glob(conn, path1, GLOB_NOCHECK, NULL, &g); | ||
955 | for (i = 0; g.gl_pathv[i]; i++) { | ||
956 | printf("Removing %s\n", g.gl_pathv[i]); | ||
957 | err = do_rm(conn, g.gl_pathv[i]); | ||
958 | if (err != 0 && err_abort) | ||
959 | break; | ||
960 | } | ||
961 | break; | ||
962 | case I_MKDIR: | ||
963 | path1 = make_absolute(path1, *pwd); | ||
964 | attrib_clear(&a); | ||
965 | a.flags |= SSH2_FILEXFER_ATTR_PERMISSIONS; | ||
966 | a.perm = 0777; | ||
967 | err = do_mkdir(conn, path1, &a); | ||
968 | break; | ||
969 | case I_RMDIR: | ||
970 | path1 = make_absolute(path1, *pwd); | ||
971 | err = do_rmdir(conn, path1); | ||
972 | break; | ||
973 | case I_CHDIR: | ||
974 | path1 = make_absolute(path1, *pwd); | ||
975 | if ((tmp = do_realpath(conn, path1)) == NULL) { | ||
976 | err = 1; | ||
977 | break; | ||
978 | } | ||
979 | if ((aa = do_stat(conn, tmp, 0)) == NULL) { | ||
980 | xfree(tmp); | ||
981 | err = 1; | ||
982 | break; | ||
983 | } | ||
984 | if (!(aa->flags & SSH2_FILEXFER_ATTR_PERMISSIONS)) { | ||
985 | error("Can't change directory: Can't check target"); | ||
986 | xfree(tmp); | ||
987 | err = 1; | ||
988 | break; | ||
989 | } | ||
990 | if (!S_ISDIR(aa->perm)) { | ||
991 | error("Can't change directory: \"%s\" is not " | ||
992 | "a directory", tmp); | ||
993 | xfree(tmp); | ||
994 | err = 1; | ||
995 | break; | ||
996 | } | ||
997 | xfree(*pwd); | ||
998 | *pwd = tmp; | ||
999 | break; | ||
1000 | case I_LS: | ||
1001 | if (!path1) { | ||
1002 | do_globbed_ls(conn, *pwd, *pwd, lflag); | ||
1003 | break; | ||
1004 | } | ||
1005 | |||
1006 | /* Strip pwd off beginning of non-absolute paths */ | ||
1007 | tmp = NULL; | ||
1008 | if (*path1 != '/') | ||
1009 | tmp = *pwd; | ||
1010 | |||
1011 | path1 = make_absolute(path1, *pwd); | ||
1012 | err = do_globbed_ls(conn, path1, tmp, lflag); | ||
1013 | break; | ||
1014 | case I_LCHDIR: | ||
1015 | if (chdir(path1) == -1) { | ||
1016 | error("Couldn't change local directory to " | ||
1017 | "\"%s\": %s", path1, strerror(errno)); | ||
1018 | err = 1; | ||
1019 | } | ||
1020 | break; | ||
1021 | case I_LMKDIR: | ||
1022 | if (mkdir(path1, 0777) == -1) { | ||
1023 | error("Couldn't create local directory " | ||
1024 | "\"%s\": %s", path1, strerror(errno)); | ||
1025 | err = 1; | ||
1026 | } | ||
1027 | break; | ||
1028 | case I_LLS: | ||
1029 | local_do_ls(cmd); | ||
1030 | break; | ||
1031 | case I_SHELL: | ||
1032 | local_do_shell(cmd); | ||
1033 | break; | ||
1034 | case I_LUMASK: | ||
1035 | umask(n_arg); | ||
1036 | printf("Local umask: %03lo\n", n_arg); | ||
1037 | break; | ||
1038 | case I_CHMOD: | ||
1039 | path1 = make_absolute(path1, *pwd); | ||
1040 | attrib_clear(&a); | ||
1041 | a.flags |= SSH2_FILEXFER_ATTR_PERMISSIONS; | ||
1042 | a.perm = n_arg; | ||
1043 | remote_glob(conn, path1, GLOB_NOCHECK, NULL, &g); | ||
1044 | for (i = 0; g.gl_pathv[i]; i++) { | ||
1045 | printf("Changing mode on %s\n", g.gl_pathv[i]); | ||
1046 | err = do_setstat(conn, g.gl_pathv[i], &a); | ||
1047 | if (err != 0 && err_abort) | ||
1048 | break; | ||
1049 | } | ||
1050 | break; | ||
1051 | case I_CHOWN: | ||
1052 | case I_CHGRP: | ||
1053 | path1 = make_absolute(path1, *pwd); | ||
1054 | remote_glob(conn, path1, GLOB_NOCHECK, NULL, &g); | ||
1055 | for (i = 0; g.gl_pathv[i]; i++) { | ||
1056 | if (!(aa = do_stat(conn, g.gl_pathv[i], 0))) { | ||
1057 | if (err != 0 && err_abort) | ||
1058 | break; | ||
1059 | else | ||
1060 | continue; | ||
1061 | } | ||
1062 | if (!(aa->flags & SSH2_FILEXFER_ATTR_UIDGID)) { | ||
1063 | error("Can't get current ownership of " | ||
1064 | "remote file \"%s\"", g.gl_pathv[i]); | ||
1065 | if (err != 0 && err_abort) | ||
1066 | break; | ||
1067 | else | ||
1068 | continue; | ||
1069 | } | ||
1070 | aa->flags &= SSH2_FILEXFER_ATTR_UIDGID; | ||
1071 | if (cmdnum == I_CHOWN) { | ||
1072 | printf("Changing owner on %s\n", g.gl_pathv[i]); | ||
1073 | aa->uid = n_arg; | ||
1074 | } else { | ||
1075 | printf("Changing group on %s\n", g.gl_pathv[i]); | ||
1076 | aa->gid = n_arg; | ||
1077 | } | ||
1078 | err = do_setstat(conn, g.gl_pathv[i], aa); | ||
1079 | if (err != 0 && err_abort) | ||
1080 | break; | ||
1081 | } | ||
1082 | break; | ||
1083 | case I_PWD: | ||
1084 | printf("Remote working directory: %s\n", *pwd); | ||
1085 | break; | ||
1086 | case I_LPWD: | ||
1087 | if (!getcwd(path_buf, sizeof(path_buf))) { | ||
1088 | error("Couldn't get local cwd: %s", strerror(errno)); | ||
1089 | err = -1; | ||
1090 | break; | ||
1091 | } | ||
1092 | printf("Local working directory: %s\n", path_buf); | ||
1093 | break; | ||
1094 | case I_QUIT: | ||
1095 | /* Processed below */ | ||
1096 | break; | ||
1097 | case I_HELP: | ||
1098 | help(); | ||
1099 | break; | ||
1100 | case I_VERSION: | ||
1101 | printf("SFTP protocol version %u\n", sftp_proto_version(conn)); | ||
1102 | break; | ||
1103 | case I_PROGRESS: | ||
1104 | showprogress = !showprogress; | ||
1105 | if (showprogress) | ||
1106 | printf("Progress meter enabled\n"); | ||
1107 | else | ||
1108 | printf("Progress meter disabled\n"); | ||
1109 | break; | ||
1110 | default: | ||
1111 | fatal("%d is not implemented", cmdnum); | ||
1112 | } | ||
1113 | |||
1114 | if (g.gl_pathc) | ||
1115 | globfree(&g); | ||
1116 | if (path1) | ||
1117 | xfree(path1); | ||
1118 | if (path2) | ||
1119 | xfree(path2); | ||
1120 | |||
1121 | /* If an unignored error occurs in batch mode we should abort. */ | ||
1122 | if (err_abort && err != 0) | ||
1123 | return (-1); | ||
1124 | else if (cmdnum == I_QUIT) | ||
1125 | return (1); | ||
1126 | |||
1127 | return (0); | ||
1128 | } | ||
1129 | |||
1130 | int | ||
1131 | interactive_loop(int fd_in, int fd_out, char *file1, char *file2) | ||
1132 | { | ||
1133 | char *pwd; | ||
1134 | char *dir = NULL; | ||
1135 | char cmd[2048]; | ||
1136 | struct sftp_conn *conn; | ||
1137 | int err; | ||
1138 | |||
1139 | conn = do_init(fd_in, fd_out, copy_buffer_len, num_requests); | ||
1140 | if (conn == NULL) | ||
1141 | fatal("Couldn't initialise connection to server"); | ||
1142 | |||
1143 | pwd = do_realpath(conn, "."); | ||
1144 | if (pwd == NULL) | ||
1145 | fatal("Need cwd"); | ||
1146 | |||
1147 | if (file1 != NULL) { | ||
1148 | dir = xstrdup(file1); | ||
1149 | dir = make_absolute(dir, pwd); | ||
1150 | |||
1151 | if (remote_is_dir(conn, dir) && file2 == NULL) { | ||
1152 | printf("Changing to: %s\n", dir); | ||
1153 | snprintf(cmd, sizeof cmd, "cd \"%s\"", dir); | ||
1154 | if (parse_dispatch_command(conn, cmd, &pwd, 1) != 0) | ||
1155 | return (-1); | ||
1156 | } else { | ||
1157 | if (file2 == NULL) | ||
1158 | snprintf(cmd, sizeof cmd, "get %s", dir); | ||
1159 | else | ||
1160 | snprintf(cmd, sizeof cmd, "get %s %s", dir, | ||
1161 | file2); | ||
1162 | |||
1163 | err = parse_dispatch_command(conn, cmd, &pwd, 1); | ||
1164 | xfree(dir); | ||
1165 | xfree(pwd); | ||
1166 | return (err); | ||
1167 | } | ||
1168 | xfree(dir); | ||
1169 | } | ||
1170 | |||
1171 | #if HAVE_SETVBUF | ||
1172 | setvbuf(stdout, NULL, _IOLBF, 0); | ||
1173 | setvbuf(infile, NULL, _IOLBF, 0); | ||
1174 | #else | ||
1175 | setlinebuf(stdout); | ||
1176 | setlinebuf(infile); | ||
1177 | #endif | ||
1178 | |||
1179 | err = 0; | ||
1180 | for (;;) { | ||
1181 | char *cp; | ||
1182 | |||
1183 | printf("sftp> "); | ||
1184 | |||
1185 | /* XXX: use libedit */ | ||
1186 | if (fgets(cmd, sizeof(cmd), infile) == NULL) { | ||
1187 | printf("\n"); | ||
1188 | break; | ||
1189 | } | ||
1190 | |||
1191 | if (batchmode) /* Echo command */ | ||
1192 | printf("%s", cmd); | ||
1193 | |||
1194 | cp = strrchr(cmd, '\n'); | ||
1195 | if (cp) | ||
1196 | *cp = '\0'; | ||
1197 | |||
1198 | err = parse_dispatch_command(conn, cmd, &pwd, batchmode); | ||
1199 | if (err != 0) | ||
1200 | break; | ||
1201 | } | ||
1202 | xfree(pwd); | ||
1203 | |||
1204 | /* err == 1 signifies normal "quit" exit */ | ||
1205 | return (err >= 0 ? 0 : -1); | ||
1206 | } | ||
52 | 1207 | ||
53 | static void | 1208 | static void |
54 | killchild(int signo) | 1209 | killchild(int signo) |
@@ -112,10 +1267,12 @@ usage(void) | |||
112 | extern char *__progname; | 1267 | extern char *__progname; |
113 | 1268 | ||
114 | fprintf(stderr, | 1269 | fprintf(stderr, |
115 | "usage: %s [-vC1] [-b batchfile] [-o ssh_option] [-s subsystem | sftp_server]\n" | 1270 | "usage: %s [-1Cv] [-B buffer_size] [-b batchfile] [-F ssh_config]\n" |
116 | " [-B buffer_size] [-F ssh_config] [-P sftp_server path]\n" | 1271 | " [-o ssh_option] [-P sftp_server_path] [-R num_requests]\n" |
117 | " [-R num_requests] [-S program]\n" | 1272 | " [-S program] [-s subsystem | sftp_server] host\n" |
118 | " [user@]host[:file [file]]\n", __progname); | 1273 | " %s [[user@]host[:file [file]]]\n" |
1274 | " %s [[user@]host[:dir[/]]]\n" | ||
1275 | " %s -b batchfile [user@]host\n", __progname, __progname, __progname, __progname); | ||
119 | exit(1); | 1276 | exit(1); |
120 | } | 1277 | } |
121 | 1278 | ||
@@ -138,8 +1295,9 @@ main(int argc, char **argv) | |||
138 | addargs(&args, "-oForwardX11 no"); | 1295 | addargs(&args, "-oForwardX11 no"); |
139 | addargs(&args, "-oForwardAgent no"); | 1296 | addargs(&args, "-oForwardAgent no"); |
140 | addargs(&args, "-oClearAllForwardings yes"); | 1297 | addargs(&args, "-oClearAllForwardings yes"); |
1298 | |||
141 | ll = SYSLOG_LEVEL_INFO; | 1299 | ll = SYSLOG_LEVEL_INFO; |
142 | infile = stdin; /* Read from STDIN unless changed by -b */ | 1300 | infile = stdin; |
143 | 1301 | ||
144 | while ((ch = getopt(argc, argv, "1hvCo:s:S:b:B:F:P:R:")) != -1) { | 1302 | while ((ch = getopt(argc, argv, "1hvCo:s:S:b:B:F:P:R:")) != -1) { |
145 | switch (ch) { | 1303 | switch (ch) { |
@@ -169,13 +1327,15 @@ main(int argc, char **argv) | |||
169 | ssh_program = optarg; | 1327 | ssh_program = optarg; |
170 | break; | 1328 | break; |
171 | case 'b': | 1329 | case 'b': |
172 | if (infile == stdin) { | 1330 | if (batchmode) |
173 | infile = fopen(optarg, "r"); | 1331 | fatal("Batch file already specified."); |
174 | if (infile == NULL) | 1332 | |
175 | fatal("%s (%s).", strerror(errno), optarg); | 1333 | /* Allow "-" as stdin */ |
176 | } else | 1334 | if (strcmp(optarg, "-") != 0 && |
177 | fatal("Filename already specified."); | 1335 | (infile = fopen(optarg, "r")) == NULL) |
1336 | fatal("%s (%s).", strerror(errno), optarg); | ||
178 | showprogress = 0; | 1337 | showprogress = 0; |
1338 | batchmode = 1; | ||
179 | break; | 1339 | break; |
180 | case 'P': | 1340 | case 'P': |
181 | sftp_direct = optarg; | 1341 | sftp_direct = optarg; |
@@ -206,11 +1366,6 @@ main(int argc, char **argv) | |||
206 | userhost = xstrdup(argv[optind]); | 1366 | userhost = xstrdup(argv[optind]); |
207 | file2 = argv[optind+1]; | 1367 | file2 = argv[optind+1]; |
208 | 1368 | ||
209 | if ((cp = colon(userhost)) != NULL) { | ||
210 | *cp++ = '\0'; | ||
211 | file1 = cp; | ||
212 | } | ||
213 | |||
214 | if ((host = strrchr(userhost, '@')) == NULL) | 1369 | if ((host = strrchr(userhost, '@')) == NULL) |
215 | host = userhost; | 1370 | host = userhost; |
216 | else { | 1371 | else { |
@@ -222,6 +1377,11 @@ main(int argc, char **argv) | |||
222 | addargs(&args, "-l%s",userhost); | 1377 | addargs(&args, "-l%s",userhost); |
223 | } | 1378 | } |
224 | 1379 | ||
1380 | if ((cp = colon(host)) != NULL) { | ||
1381 | *cp++ = '\0'; | ||
1382 | file1 = cp; | ||
1383 | } | ||
1384 | |||
225 | host = cleanhostname(host); | 1385 | host = cleanhostname(host); |
226 | if (!*host) { | 1386 | if (!*host) { |
227 | fprintf(stderr, "Missing hostname\n"); | 1387 | fprintf(stderr, "Missing hostname\n"); |
@@ -239,26 +1399,28 @@ main(int argc, char **argv) | |||
239 | sftp_server : "sftp")); | 1399 | sftp_server : "sftp")); |
240 | args.list[0] = ssh_program; | 1400 | args.list[0] = ssh_program; |
241 | 1401 | ||
242 | fprintf(stderr, "Connecting to %s...\n", host); | 1402 | if (!batchmode) |
1403 | fprintf(stderr, "Connecting to %s...\n", host); | ||
243 | connect_to_server(ssh_program, args.list, &in, &out); | 1404 | connect_to_server(ssh_program, args.list, &in, &out); |
244 | } else { | 1405 | } else { |
245 | args.list = NULL; | 1406 | args.list = NULL; |
246 | addargs(&args, "sftp-server"); | 1407 | addargs(&args, "sftp-server"); |
247 | 1408 | ||
248 | fprintf(stderr, "Attaching to %s...\n", sftp_direct); | 1409 | if (!batchmode) |
1410 | fprintf(stderr, "Attaching to %s...\n", sftp_direct); | ||
249 | connect_to_server(sftp_direct, args.list, &in, &out); | 1411 | connect_to_server(sftp_direct, args.list, &in, &out); |
250 | } | 1412 | } |
251 | 1413 | ||
252 | err = interactive_loop(in, out, file1, file2); | 1414 | err = interactive_loop(in, out, file1, file2); |
253 | 1415 | ||
254 | #if !defined(USE_PIPES) | 1416 | #if !defined(USE_PIPES) |
255 | shutdown(in, SHUT_RDWR); | 1417 | shutdown(in, SHUT_RDWR); |
256 | shutdown(out, SHUT_RDWR); | 1418 | shutdown(out, SHUT_RDWR); |
257 | #endif | 1419 | #endif |
258 | 1420 | ||
259 | close(in); | 1421 | close(in); |
260 | close(out); | 1422 | close(out); |
261 | if (infile != stdin) | 1423 | if (batchmode) |
262 | fclose(infile); | 1424 | fclose(infile); |
263 | 1425 | ||
264 | while (waitpid(sshpid, NULL, 0) == -1) | 1426 | while (waitpid(sshpid, NULL, 0) == -1) |
@@ -9,16 +9,16 @@ SYNOPSIS | |||
9 | ssh-add -e reader | 9 | ssh-add -e reader |
10 | 10 | ||
11 | DESCRIPTION | 11 | DESCRIPTION |
12 | ssh-add adds RSA or DSA identities to the authentication agent, ssh- | 12 | ssh-add adds RSA or DSA identities to the authentication agent, |
13 | agent(1). When run without arguments, it adds the files | 13 | ssh-agent(1). When run without arguments, it adds the files |
14 | $HOME/.ssh/id_rsa, $HOME/.ssh/id_dsa and $HOME/.ssh/identity. Alterna- | 14 | $HOME/.ssh/id_rsa, $HOME/.ssh/id_dsa and $HOME/.ssh/identity. Alterna- |
15 | tive file names can be given on the command line. If any file requires a | 15 | tive file names can be given on the command line. If any file requires a |
16 | passphrase, ssh-add asks for the passphrase from the user. The | 16 | passphrase, ssh-add asks for the passphrase from the user. The |
17 | passphrase is read from the user's tty. ssh-add retries the last | 17 | passphrase is read from the user's tty. ssh-add retries the last |
18 | passphrase if multiple identity files are given. | 18 | passphrase if multiple identity files are given. |
19 | 19 | ||
20 | The authentication agent must be running and must be an ancestor of the | 20 | The authentication agent must be running and the SSH_AUTH_SOCK environ- |
21 | current process for ssh-add to work. | 21 | ment variable must contain the name of its socket for ssh-add to work. |
22 | 22 | ||
23 | The options are as follows: | 23 | The options are as follows: |
24 | 24 | ||
@@ -1,4 +1,4 @@ | |||
1 | .\" $OpenBSD: ssh-add.1,v 1.39 2003/06/10 09:12:11 jmc Exp $ | 1 | .\" $OpenBSD: ssh-add.1,v 1.40 2003/11/25 23:10:08 matthieu Exp $ |
2 | .\" | 2 | .\" |
3 | .\" -*- nroff -*- | 3 | .\" -*- nroff -*- |
4 | .\" | 4 | .\" |
@@ -69,8 +69,9 @@ The passphrase is read from the user's tty. | |||
69 | .Nm | 69 | .Nm |
70 | retries the last passphrase if multiple identity files are given. | 70 | retries the last passphrase if multiple identity files are given. |
71 | .Pp | 71 | .Pp |
72 | The authentication agent must be running and must be an ancestor of | 72 | The authentication agent must be running and the |
73 | the current process for | 73 | .Ev SSH_AUTH_SOCK |
74 | environment variable must contain the name of its socket for | ||
74 | .Nm | 75 | .Nm |
75 | to work. | 76 | to work. |
76 | .Pp | 77 | .Pp |
@@ -35,7 +35,7 @@ | |||
35 | */ | 35 | */ |
36 | 36 | ||
37 | #include "includes.h" | 37 | #include "includes.h" |
38 | RCSID("$OpenBSD: ssh-add.c,v 1.68 2003/06/16 10:22:45 markus Exp $"); | 38 | RCSID("$OpenBSD: ssh-add.c,v 1.69 2003/11/21 11:57:03 djm Exp $"); |
39 | 39 | ||
40 | #include <openssl/evp.h> | 40 | #include <openssl/evp.h> |
41 | 41 | ||
@@ -169,14 +169,14 @@ add_file(AuthenticationConnection *ac, const char *filename) | |||
169 | } | 169 | } |
170 | } | 170 | } |
171 | 171 | ||
172 | if (ssh_add_identity_constrained(ac, private, comment, lifetime, | 172 | if (ssh_add_identity_constrained(ac, private, comment, lifetime, |
173 | confirm)) { | 173 | confirm)) { |
174 | fprintf(stderr, "Identity added: %s (%s)\n", filename, comment); | 174 | fprintf(stderr, "Identity added: %s (%s)\n", filename, comment); |
175 | ret = 0; | 175 | ret = 0; |
176 | if (lifetime != 0) | 176 | if (lifetime != 0) |
177 | fprintf(stderr, | 177 | fprintf(stderr, |
178 | "Lifetime set to %d seconds\n", lifetime); | 178 | "Lifetime set to %d seconds\n", lifetime); |
179 | if (confirm != 0) | 179 | if (confirm != 0) |
180 | fprintf(stderr, | 180 | fprintf(stderr, |
181 | "The user has to confirm each use of the key\n"); | 181 | "The user has to confirm each use of the key\n"); |
182 | } else if (ssh_add_identity(ac, private, comment)) { | 182 | } else if (ssh_add_identity(ac, private, comment)) { |
diff --git a/ssh-agent.c b/ssh-agent.c index e1e6cae9b..e5232fc9b 100644 --- a/ssh-agent.c +++ b/ssh-agent.c | |||
@@ -35,7 +35,7 @@ | |||
35 | 35 | ||
36 | #include "includes.h" | 36 | #include "includes.h" |
37 | #include "openbsd-compat/sys-queue.h" | 37 | #include "openbsd-compat/sys-queue.h" |
38 | RCSID("$OpenBSD: ssh-agent.c,v 1.112 2003/09/18 08:49:45 markus Exp $"); | 38 | RCSID("$OpenBSD: ssh-agent.c,v 1.117 2003/12/02 17:01:15 markus Exp $"); |
39 | 39 | ||
40 | #include <openssl/evp.h> | 40 | #include <openssl/evp.h> |
41 | #include <openssl/md5.h> | 41 | #include <openssl/md5.h> |
@@ -179,7 +179,7 @@ confirm_key(Identity *id) | |||
179 | p = read_passphrase(prompt, RP_ALLOW_EOF); | 179 | p = read_passphrase(prompt, RP_ALLOW_EOF); |
180 | if (p != NULL) { | 180 | if (p != NULL) { |
181 | /* | 181 | /* |
182 | * Accept empty responses and responses consisting | 182 | * Accept empty responses and responses consisting |
183 | * of the word "yes" as affirmative. | 183 | * of the word "yes" as affirmative. |
184 | */ | 184 | */ |
185 | if (*p == '\0' || *p == '\n' || strcasecmp(p, "yes") == 0) | 185 | if (*p == '\0' || *p == '\n' || strcasecmp(p, "yes") == 0) |
@@ -949,7 +949,7 @@ after_select(fd_set *readset, fd_set *writeset) | |||
949 | } | 949 | } |
950 | 950 | ||
951 | static void | 951 | static void |
952 | cleanup_socket(void *p) | 952 | cleanup_socket(void) |
953 | { | 953 | { |
954 | if (socket_name[0]) | 954 | if (socket_name[0]) |
955 | unlink(socket_name); | 955 | unlink(socket_name); |
@@ -957,17 +957,17 @@ cleanup_socket(void *p) | |||
957 | rmdir(socket_dir); | 957 | rmdir(socket_dir); |
958 | } | 958 | } |
959 | 959 | ||
960 | static void | 960 | void |
961 | cleanup_exit(int i) | 961 | cleanup_exit(int i) |
962 | { | 962 | { |
963 | cleanup_socket(NULL); | 963 | cleanup_socket(); |
964 | exit(i); | 964 | _exit(i); |
965 | } | 965 | } |
966 | 966 | ||
967 | static void | 967 | static void |
968 | cleanup_handler(int sig) | 968 | cleanup_handler(int sig) |
969 | { | 969 | { |
970 | cleanup_socket(NULL); | 970 | cleanup_socket(); |
971 | _exit(2); | 971 | _exit(2); |
972 | } | 972 | } |
973 | 973 | ||
@@ -1100,7 +1100,7 @@ main(int ac, char **av) | |||
1100 | 1100 | ||
1101 | if (agentsocket == NULL) { | 1101 | if (agentsocket == NULL) { |
1102 | /* Create private directory for agent socket */ | 1102 | /* Create private directory for agent socket */ |
1103 | strlcpy(socket_dir, "/tmp/ssh-XXXXXXXX", sizeof socket_dir); | 1103 | strlcpy(socket_dir, "/tmp/ssh-XXXXXXXXXX", sizeof socket_dir); |
1104 | if (mkdtemp(socket_dir) == NULL) { | 1104 | if (mkdtemp(socket_dir) == NULL) { |
1105 | perror("mkdtemp: private socket dir"); | 1105 | perror("mkdtemp: private socket dir"); |
1106 | exit(1); | 1106 | exit(1); |
@@ -1138,7 +1138,7 @@ main(int ac, char **av) | |||
1138 | #ifdef HAVE_CYGWIN | 1138 | #ifdef HAVE_CYGWIN |
1139 | umask(prev_mask); | 1139 | umask(prev_mask); |
1140 | #endif | 1140 | #endif |
1141 | if (listen(sock, 128) < 0) { | 1141 | if (listen(sock, SSH_LISTEN_BACKLOG) < 0) { |
1142 | perror("listen"); | 1142 | perror("listen"); |
1143 | cleanup_exit(1); | 1143 | cleanup_exit(1); |
1144 | } | 1144 | } |
@@ -1209,7 +1209,6 @@ main(int ac, char **av) | |||
1209 | #endif | 1209 | #endif |
1210 | 1210 | ||
1211 | skip: | 1211 | skip: |
1212 | fatal_add_cleanup(cleanup_socket, NULL); | ||
1213 | new_socket(AUTH_SOCKET, sock); | 1212 | new_socket(AUTH_SOCKET, sock); |
1214 | if (ac > 0) { | 1213 | if (ac > 0) { |
1215 | mysignal(SIGALRM, check_parent_exists); | 1214 | mysignal(SIGALRM, check_parent_exists); |
@@ -23,7 +23,7 @@ | |||
23 | */ | 23 | */ |
24 | 24 | ||
25 | #include "includes.h" | 25 | #include "includes.h" |
26 | RCSID("$OpenBSD: ssh-dss.c,v 1.18 2003/02/12 09:33:04 markus Exp $"); | 26 | RCSID("$OpenBSD: ssh-dss.c,v 1.19 2003/11/10 16:23:41 jakob Exp $"); |
27 | 27 | ||
28 | #include <openssl/bn.h> | 28 | #include <openssl/bn.h> |
29 | #include <openssl/evp.h> | 29 | #include <openssl/evp.h> |
@@ -39,8 +39,8 @@ RCSID("$OpenBSD: ssh-dss.c,v 1.18 2003/02/12 09:33:04 markus Exp $"); | |||
39 | #define SIGBLOB_LEN (2*INTBLOB_LEN) | 39 | #define SIGBLOB_LEN (2*INTBLOB_LEN) |
40 | 40 | ||
41 | int | 41 | int |
42 | ssh_dss_sign(Key *key, u_char **sigp, u_int *lenp, | 42 | ssh_dss_sign(const Key *key, u_char **sigp, u_int *lenp, |
43 | u_char *data, u_int datalen) | 43 | const u_char *data, u_int datalen) |
44 | { | 44 | { |
45 | DSA_SIG *sig; | 45 | DSA_SIG *sig; |
46 | const EVP_MD *evp_md = EVP_sha1(); | 46 | const EVP_MD *evp_md = EVP_sha1(); |
@@ -101,8 +101,8 @@ ssh_dss_sign(Key *key, u_char **sigp, u_int *lenp, | |||
101 | return 0; | 101 | return 0; |
102 | } | 102 | } |
103 | int | 103 | int |
104 | ssh_dss_verify(Key *key, u_char *signature, u_int signaturelen, | 104 | ssh_dss_verify(const Key *key, const u_char *signature, u_int signaturelen, |
105 | u_char *data, u_int datalen) | 105 | const u_char *data, u_int datalen) |
106 | { | 106 | { |
107 | DSA_SIG *sig; | 107 | DSA_SIG *sig; |
108 | const EVP_MD *evp_md = EVP_sha1(); | 108 | const EVP_MD *evp_md = EVP_sha1(); |
@@ -119,7 +119,8 @@ ssh_dss_verify(Key *key, u_char *signature, u_int signaturelen, | |||
119 | 119 | ||
120 | /* fetch signature */ | 120 | /* fetch signature */ |
121 | if (datafellows & SSH_BUG_SIGBLOB) { | 121 | if (datafellows & SSH_BUG_SIGBLOB) { |
122 | sigblob = signature; | 122 | sigblob = xmalloc(signaturelen); |
123 | memcpy(sigblob, signature, signaturelen); | ||
123 | len = signaturelen; | 124 | len = signaturelen; |
124 | } else { | 125 | } else { |
125 | /* ietf-drafts */ | 126 | /* ietf-drafts */ |
@@ -159,10 +160,9 @@ ssh_dss_verify(Key *key, u_char *signature, u_int signaturelen, | |||
159 | BN_bin2bn(sigblob, INTBLOB_LEN, sig->r); | 160 | BN_bin2bn(sigblob, INTBLOB_LEN, sig->r); |
160 | BN_bin2bn(sigblob+ INTBLOB_LEN, INTBLOB_LEN, sig->s); | 161 | BN_bin2bn(sigblob+ INTBLOB_LEN, INTBLOB_LEN, sig->s); |
161 | 162 | ||
162 | if (!(datafellows & SSH_BUG_SIGBLOB)) { | 163 | /* clean up */ |
163 | memset(sigblob, 0, len); | 164 | memset(sigblob, 0, len); |
164 | xfree(sigblob); | 165 | xfree(sigblob); |
165 | } | ||
166 | 166 | ||
167 | /* sha1 the data */ | 167 | /* sha1 the data */ |
168 | EVP_DigestInit(&md, evp_md); | 168 | EVP_DigestInit(&md, evp_md); |
@@ -1,3 +1,4 @@ | |||
1 | /* $OpenBSD: ssh-gss.h,v 1.4 2003/11/17 11:06:07 markus Exp $ */ | ||
1 | /* | 2 | /* |
2 | * Copyright (c) 2001-2003 Simon Wilkinson. All rights reserved. | 3 | * Copyright (c) 2001-2003 Simon Wilkinson. All rights reserved. |
3 | * | 4 | * |
@@ -29,11 +30,19 @@ | |||
29 | 30 | ||
30 | #include "buffer.h" | 31 | #include "buffer.h" |
31 | 32 | ||
33 | #ifdef HAVE_GSSAPI_H | ||
32 | #include <gssapi.h> | 34 | #include <gssapi.h> |
35 | #elif defined(HAVE_GSSAPI_GSSAPI_H) | ||
36 | #include <gssapi/gssapi.h> | ||
37 | #endif | ||
33 | 38 | ||
34 | #ifdef KRB5 | 39 | #ifdef KRB5 |
35 | #ifndef HEIMDAL | 40 | # ifndef HEIMDAL |
36 | #include <gssapi_generic.h> | 41 | # ifdef HAVE_GSSAPI_GENERIC_H |
42 | # include <gssapi_generic.h> | ||
43 | # elif defined(HAVE_GSSAPI_GSSAPI_GENERIC_H) | ||
44 | # include <gssapi/gssapi_generic.h> | ||
45 | # endif | ||
37 | 46 | ||
38 | /* MIT Kerberos doesn't seem to define GSS_NT_HOSTBASED_SERVICE */ | 47 | /* MIT Kerberos doesn't seem to define GSS_NT_HOSTBASED_SERVICE */ |
39 | 48 | ||
@@ -49,6 +58,7 @@ | |||
49 | #define SSH2_MSG_USERAUTH_GSSAPI_EXCHANGE_COMPLETE 63 | 58 | #define SSH2_MSG_USERAUTH_GSSAPI_EXCHANGE_COMPLETE 63 |
50 | #define SSH2_MSG_USERAUTH_GSSAPI_ERROR 64 | 59 | #define SSH2_MSG_USERAUTH_GSSAPI_ERROR 64 |
51 | #define SSH2_MSG_USERAUTH_GSSAPI_ERRTOK 65 | 60 | #define SSH2_MSG_USERAUTH_GSSAPI_ERRTOK 65 |
61 | #define SSH2_MSG_USERAUTH_GSSAPI_MIC 66 | ||
52 | 62 | ||
53 | #define SSH_GSS_OIDTYPE 0x06 | 63 | #define SSH_GSS_OIDTYPE 0x06 |
54 | 64 | ||
@@ -107,13 +117,15 @@ void ssh_gssapi_error(Gssctxt *ctx); | |||
107 | char *ssh_gssapi_last_error(Gssctxt *ctxt, OM_uint32 *maj, OM_uint32 *min); | 117 | char *ssh_gssapi_last_error(Gssctxt *ctxt, OM_uint32 *maj, OM_uint32 *min); |
108 | void ssh_gssapi_build_ctx(Gssctxt **ctx); | 118 | void ssh_gssapi_build_ctx(Gssctxt **ctx); |
109 | void ssh_gssapi_delete_ctx(Gssctxt **ctx); | 119 | void ssh_gssapi_delete_ctx(Gssctxt **ctx); |
120 | OM_uint32 ssh_gssapi_sign(Gssctxt *, gss_buffer_t, gss_buffer_t); | ||
110 | OM_uint32 ssh_gssapi_server_ctx(Gssctxt **ctx, gss_OID oid); | 121 | OM_uint32 ssh_gssapi_server_ctx(Gssctxt **ctx, gss_OID oid); |
122 | void ssh_gssapi_buildmic(Buffer *, const char *, const char *, const char *); | ||
111 | 123 | ||
112 | /* In the server */ | 124 | /* In the server */ |
113 | int ssh_gssapi_userok(char *name); | 125 | int ssh_gssapi_userok(char *name); |
114 | 126 | OM_uint32 ssh_gssapi_checkmic(Gssctxt *, gss_buffer_t, gss_buffer_t); | |
115 | void ssh_gssapi_do_child(char ***envp, u_int *envsizep); | 127 | void ssh_gssapi_do_child(char ***envp, u_int *envsizep); |
116 | void ssh_gssapi_cleanup_creds(void *ignored); | 128 | void ssh_gssapi_cleanup_creds(void); |
117 | void ssh_gssapi_storecreds(void); | 129 | void ssh_gssapi_storecreds(void); |
118 | 130 | ||
119 | #endif /* GSSAPI */ | 131 | #endif /* GSSAPI */ |
diff --git a/ssh-keygen.0 b/ssh-keygen.0 index ff3848cfd..d4fcc682b 100644 --- a/ssh-keygen.0 +++ b/ssh-keygen.0 | |||
@@ -16,8 +16,9 @@ SYNOPSIS | |||
16 | ssh-keygen -D reader | 16 | ssh-keygen -D reader |
17 | ssh-keygen -U reader [-f input_keyfile] | 17 | ssh-keygen -U reader [-f input_keyfile] |
18 | ssh-keygen -r hostname [-f input_keyfile] [-g] | 18 | ssh-keygen -r hostname [-f input_keyfile] [-g] |
19 | ssh-keygen -G output_file [-b bits] [-M memory] [-S start_point] | 19 | ssh-keygen -G output_file [-v] [-b bits] [-M memory] [-S start_point] |
20 | ssh-keygen -T output_file -f input_file [-a num_trials] [-W generator] | 20 | ssh-keygen -T output_file -f input_file [-v] [-a num_trials] [-W |
21 | generator] | ||
21 | 22 | ||
22 | DESCRIPTION | 23 | DESCRIPTION |
23 | ssh-keygen generates, manages and converts authentication keys for | 24 | ssh-keygen generates, manages and converts authentication keys for |
@@ -149,6 +150,11 @@ DESCRIPTION | |||
149 | -U reader | 150 | -U reader |
150 | Upload an existing RSA private key into the smartcard in reader. | 151 | Upload an existing RSA private key into the smartcard in reader. |
151 | 152 | ||
153 | -v Verbose mode. Causes ssh-keygen to print debugging messages | ||
154 | about its progress. This is helpful for debugging moduli genera- | ||
155 | tion. Multiple -v options increase the verbosity. The maximum | ||
156 | is 3. | ||
157 | |||
152 | -r hostname | 158 | -r hostname |
153 | Print DNS resource record with the specified hostname. | 159 | Print DNS resource record with the specified hostname. |
154 | 160 | ||
diff --git a/ssh-keygen.1 b/ssh-keygen.1 index dc4bcacd0..6dd615428 100644 --- a/ssh-keygen.1 +++ b/ssh-keygen.1 | |||
@@ -1,4 +1,4 @@ | |||
1 | .\" $OpenBSD: ssh-keygen.1,v 1.60 2003/07/28 09:49:56 djm Exp $ | 1 | .\" $OpenBSD: ssh-keygen.1,v 1.61 2003/12/22 09:16:58 djm Exp $ |
2 | .\" | 2 | .\" |
3 | .\" -*- nroff -*- | 3 | .\" -*- nroff -*- |
4 | .\" | 4 | .\" |
@@ -89,12 +89,14 @@ | |||
89 | .Op Fl g | 89 | .Op Fl g |
90 | .Nm ssh-keygen | 90 | .Nm ssh-keygen |
91 | .Fl G Ar output_file | 91 | .Fl G Ar output_file |
92 | .Op Fl v | ||
92 | .Op Fl b Ar bits | 93 | .Op Fl b Ar bits |
93 | .Op Fl M Ar memory | 94 | .Op Fl M Ar memory |
94 | .Op Fl S Ar start_point | 95 | .Op Fl S Ar start_point |
95 | .Nm ssh-keygen | 96 | .Nm ssh-keygen |
96 | .Fl T Ar output_file | 97 | .Fl T Ar output_file |
97 | .Fl f Ar input_file | 98 | .Fl f Ar input_file |
99 | .Op Fl v | ||
98 | .Op Fl a Ar num_trials | 100 | .Op Fl a Ar num_trials |
99 | .Op Fl W Ar generator | 101 | .Op Fl W Ar generator |
100 | .Sh DESCRIPTION | 102 | .Sh DESCRIPTION |
@@ -263,6 +265,16 @@ Specify desired generator when testing candidate moduli for DH-GEX. | |||
263 | .It Fl U Ar reader | 265 | .It Fl U Ar reader |
264 | Upload an existing RSA private key into the smartcard in | 266 | Upload an existing RSA private key into the smartcard in |
265 | .Ar reader . | 267 | .Ar reader . |
268 | .It Fl v | ||
269 | Verbose mode. | ||
270 | Causes | ||
271 | .Nm | ||
272 | to print debugging messages about its progress. | ||
273 | This is helpful for debugging moduli generation. | ||
274 | Multiple | ||
275 | .Fl v | ||
276 | options increase the verbosity. | ||
277 | The maximum is 3. | ||
266 | .It Fl r Ar hostname | 278 | .It Fl r Ar hostname |
267 | Print DNS resource record with the specified | 279 | Print DNS resource record with the specified |
268 | .Ar hostname . | 280 | .Ar hostname . |
diff --git a/ssh-keygen.c b/ssh-keygen.c index e74d3cd37..1156a010a 100644 --- a/ssh-keygen.c +++ b/ssh-keygen.c | |||
@@ -12,7 +12,7 @@ | |||
12 | */ | 12 | */ |
13 | 13 | ||
14 | #include "includes.h" | 14 | #include "includes.h" |
15 | RCSID("$OpenBSD: ssh-keygen.c,v 1.108 2003/08/14 16:08:58 markus Exp $"); | 15 | RCSID("$OpenBSD: ssh-keygen.c,v 1.113 2003/12/22 09:16:58 djm Exp $"); |
16 | 16 | ||
17 | #include <openssl/evp.h> | 17 | #include <openssl/evp.h> |
18 | #include <openssl/pem.h> | 18 | #include <openssl/pem.h> |
@@ -32,9 +32,7 @@ RCSID("$OpenBSD: ssh-keygen.c,v 1.108 2003/08/14 16:08:58 markus Exp $"); | |||
32 | #ifdef SMARTCARD | 32 | #ifdef SMARTCARD |
33 | #include "scard.h" | 33 | #include "scard.h" |
34 | #endif | 34 | #endif |
35 | #ifdef DNS | ||
36 | #include "dns.h" | 35 | #include "dns.h" |
37 | #endif | ||
38 | 36 | ||
39 | /* Number of bits in the RSA/DSA key. This value can be changed on the command line. */ | 37 | /* Number of bits in the RSA/DSA key. This value can be changed on the command line. */ |
40 | int bits = 1024; | 38 | int bits = 1024; |
@@ -191,8 +189,8 @@ do_convert_to_ssh2(struct passwd *pw) | |||
191 | static void | 189 | static void |
192 | buffer_get_bignum_bits(Buffer *b, BIGNUM *value) | 190 | buffer_get_bignum_bits(Buffer *b, BIGNUM *value) |
193 | { | 191 | { |
194 | int bits = buffer_get_int(b); | 192 | u_int bits = buffer_get_int(b); |
195 | int bytes = (bits + 7) / 8; | 193 | u_int bytes = (bits + 7) / 8; |
196 | 194 | ||
197 | if (buffer_len(b) < bytes) | 195 | if (buffer_len(b) < bytes) |
198 | fatal("buffer_get_bignum_bits: input buffer too small: " | 196 | fatal("buffer_get_bignum_bits: input buffer too small: " |
@@ -625,7 +623,6 @@ do_change_passphrase(struct passwd *pw) | |||
625 | exit(0); | 623 | exit(0); |
626 | } | 624 | } |
627 | 625 | ||
628 | #ifdef DNS | ||
629 | /* | 626 | /* |
630 | * Print the SSHFP RR. | 627 | * Print the SSHFP RR. |
631 | */ | 628 | */ |
@@ -655,7 +652,6 @@ do_print_resource_record(struct passwd *pw, char *hostname) | |||
655 | printf("failed to read v2 public key from %s.\n", identity_file); | 652 | printf("failed to read v2 public key from %s.\n", identity_file); |
656 | exit(1); | 653 | exit(1); |
657 | } | 654 | } |
658 | #endif /* DNS */ | ||
659 | 655 | ||
660 | /* | 656 | /* |
661 | * Change the comment of a private key file. | 657 | * Change the comment of a private key file. |
@@ -774,9 +770,7 @@ usage(void) | |||
774 | fprintf(stderr, " -C comment Provide new comment.\n"); | 770 | fprintf(stderr, " -C comment Provide new comment.\n"); |
775 | fprintf(stderr, " -N phrase Provide new passphrase.\n"); | 771 | fprintf(stderr, " -N phrase Provide new passphrase.\n"); |
776 | fprintf(stderr, " -P phrase Provide old passphrase.\n"); | 772 | fprintf(stderr, " -P phrase Provide old passphrase.\n"); |
777 | #ifdef DNS | ||
778 | fprintf(stderr, " -r hostname Print DNS resource record.\n"); | 773 | fprintf(stderr, " -r hostname Print DNS resource record.\n"); |
779 | #endif /* DNS */ | ||
780 | #ifdef SMARTCARD | 774 | #ifdef SMARTCARD |
781 | fprintf(stderr, " -D reader Download public key from smartcard.\n"); | 775 | fprintf(stderr, " -D reader Download public key from smartcard.\n"); |
782 | fprintf(stderr, " -U reader Upload private key to smartcard.\n"); | 776 | fprintf(stderr, " -U reader Upload private key to smartcard.\n"); |
@@ -803,6 +797,7 @@ main(int ac, char **av) | |||
803 | int opt, type, fd, download = 0, memory = 0; | 797 | int opt, type, fd, download = 0, memory = 0; |
804 | int generator_wanted = 0, trials = 100; | 798 | int generator_wanted = 0, trials = 100; |
805 | int do_gen_candidates = 0, do_screen_candidates = 0; | 799 | int do_gen_candidates = 0, do_screen_candidates = 0; |
800 | int log_level = SYSLOG_LEVEL_INFO; | ||
806 | BIGNUM *start = NULL; | 801 | BIGNUM *start = NULL; |
807 | FILE *f; | 802 | FILE *f; |
808 | 803 | ||
@@ -829,7 +824,7 @@ main(int ac, char **av) | |||
829 | } | 824 | } |
830 | 825 | ||
831 | while ((opt = getopt(ac, av, | 826 | while ((opt = getopt(ac, av, |
832 | "degiqpclBRxXyb:f:t:U:D:P:N:C:r:g:T:G:M:S:a:W:")) != -1) { | 827 | "degiqpclBRvxXyb:f:t:U:D:P:N:C:r:g:T:G:M:S:a:W:")) != -1) { |
833 | switch (opt) { | 828 | switch (opt) { |
834 | case 'b': | 829 | case 'b': |
835 | bits = atoi(optarg); | 830 | bits = atoi(optarg); |
@@ -897,6 +892,15 @@ main(int ac, char **av) | |||
897 | case 'U': | 892 | case 'U': |
898 | reader_id = optarg; | 893 | reader_id = optarg; |
899 | break; | 894 | break; |
895 | case 'v': | ||
896 | if (log_level == SYSLOG_LEVEL_INFO) | ||
897 | log_level = SYSLOG_LEVEL_DEBUG1; | ||
898 | else { | ||
899 | if (log_level >= SYSLOG_LEVEL_DEBUG1 && | ||
900 | log_level < SYSLOG_LEVEL_DEBUG3) | ||
901 | log_level++; | ||
902 | } | ||
903 | break; | ||
900 | case 'r': | 904 | case 'r': |
901 | resource_record_hostname = optarg; | 905 | resource_record_hostname = optarg; |
902 | break; | 906 | break; |
@@ -908,13 +912,13 @@ main(int ac, char **av) | |||
908 | case 'a': | 912 | case 'a': |
909 | trials = atoi(optarg); | 913 | trials = atoi(optarg); |
910 | if (trials < TRIAL_MINIMUM) { | 914 | if (trials < TRIAL_MINIMUM) { |
911 | fatal("Minimum primality trials is %d", | 915 | fatal("Minimum primality trials is %d", |
912 | TRIAL_MINIMUM); | 916 | TRIAL_MINIMUM); |
913 | } | 917 | } |
914 | break; | 918 | break; |
915 | case 'M': | 919 | case 'M': |
916 | memory = atoi(optarg); | 920 | memory = atoi(optarg); |
917 | if (memory != 0 && | 921 | if (memory != 0 && |
918 | (memory < LARGE_MINIMUM || memory > LARGE_MAXIMUM)) { | 922 | (memory < LARGE_MINIMUM || memory > LARGE_MAXIMUM)) { |
919 | fatal("Invalid memory amount (min %ld, max %ld)", | 923 | fatal("Invalid memory amount (min %ld, max %ld)", |
920 | LARGE_MINIMUM, LARGE_MAXIMUM); | 924 | LARGE_MINIMUM, LARGE_MAXIMUM); |
@@ -938,6 +942,10 @@ main(int ac, char **av) | |||
938 | usage(); | 942 | usage(); |
939 | } | 943 | } |
940 | } | 944 | } |
945 | |||
946 | /* reinit */ | ||
947 | log_init(av[0], log_level, SYSLOG_FACILITY_USER, 1); | ||
948 | |||
941 | if (optind < ac) { | 949 | if (optind < ac) { |
942 | printf("Too many arguments.\n"); | 950 | printf("Too many arguments.\n"); |
943 | usage(); | 951 | usage(); |
@@ -959,11 +967,7 @@ main(int ac, char **av) | |||
959 | if (print_public) | 967 | if (print_public) |
960 | do_print_public(pw); | 968 | do_print_public(pw); |
961 | if (resource_record_hostname != NULL) { | 969 | if (resource_record_hostname != NULL) { |
962 | #ifdef DNS | ||
963 | do_print_resource_record(pw, resource_record_hostname); | 970 | do_print_resource_record(pw, resource_record_hostname); |
964 | #else /* DNS */ | ||
965 | fatal("no DNS support."); | ||
966 | #endif /* DNS */ | ||
967 | } | 971 | } |
968 | if (reader_id != NULL) { | 972 | if (reader_id != NULL) { |
969 | #ifdef SMARTCARD | 973 | #ifdef SMARTCARD |
@@ -978,7 +982,7 @@ main(int ac, char **av) | |||
978 | 982 | ||
979 | if (do_gen_candidates) { | 983 | if (do_gen_candidates) { |
980 | FILE *out = fopen(out_file, "w"); | 984 | FILE *out = fopen(out_file, "w"); |
981 | 985 | ||
982 | if (out == NULL) { | 986 | if (out == NULL) { |
983 | error("Couldn't open modulus candidate file \"%s\": %s", | 987 | error("Couldn't open modulus candidate file \"%s\": %s", |
984 | out_file, strerror(errno)); | 988 | out_file, strerror(errno)); |
@@ -997,7 +1001,7 @@ main(int ac, char **av) | |||
997 | if (have_identity && strcmp(identity_file, "-") != 0) { | 1001 | if (have_identity && strcmp(identity_file, "-") != 0) { |
998 | if ((in = fopen(identity_file, "r")) == NULL) { | 1002 | if ((in = fopen(identity_file, "r")) == NULL) { |
999 | fatal("Couldn't open modulus candidate " | 1003 | fatal("Couldn't open modulus candidate " |
1000 | "file \"%s\": %s", identity_file, | 1004 | "file \"%s\": %s", identity_file, |
1001 | strerror(errno)); | 1005 | strerror(errno)); |
1002 | } | 1006 | } |
1003 | } else | 1007 | } else |
diff --git a/ssh-keyscan.c b/ssh-keyscan.c index 9fa8aaebc..68b6a0ad1 100644 --- a/ssh-keyscan.c +++ b/ssh-keyscan.c | |||
@@ -7,7 +7,7 @@ | |||
7 | */ | 7 | */ |
8 | 8 | ||
9 | #include "includes.h" | 9 | #include "includes.h" |
10 | RCSID("$OpenBSD: ssh-keyscan.c,v 1.44 2003/06/28 16:23:06 deraadt Exp $"); | 10 | RCSID("$OpenBSD: ssh-keyscan.c,v 1.46 2003/11/23 23:17:34 djm Exp $"); |
11 | 11 | ||
12 | #include "openbsd-compat/sys-queue.h" | 12 | #include "openbsd-compat/sys-queue.h" |
13 | 13 | ||
@@ -214,13 +214,11 @@ fdlim_get(int hard) | |||
214 | if (getrlimit(RLIMIT_NOFILE, &rlfd) < 0) | 214 | if (getrlimit(RLIMIT_NOFILE, &rlfd) < 0) |
215 | return (-1); | 215 | return (-1); |
216 | if ((hard ? rlfd.rlim_max : rlfd.rlim_cur) == RLIM_INFINITY) | 216 | if ((hard ? rlfd.rlim_max : rlfd.rlim_cur) == RLIM_INFINITY) |
217 | return 10000; | 217 | return SSH_SYSFDMAX; |
218 | else | 218 | else |
219 | return hard ? rlfd.rlim_max : rlfd.rlim_cur; | 219 | return hard ? rlfd.rlim_max : rlfd.rlim_cur; |
220 | #elif defined (HAVE_SYSCONF) | ||
221 | return sysconf (_SC_OPEN_MAX); | ||
222 | #else | 220 | #else |
223 | return 10000; | 221 | return SSH_SYSFDMAX; |
224 | #endif | 222 | #endif |
225 | } | 223 | } |
226 | 224 | ||
@@ -675,7 +673,7 @@ fatal(const char *fmt,...) | |||
675 | if (nonfatal_fatal) | 673 | if (nonfatal_fatal) |
676 | longjmp(kexjmp, -1); | 674 | longjmp(kexjmp, -1); |
677 | else | 675 | else |
678 | fatal_cleanup(); | 676 | exit(255); |
679 | } | 677 | } |
680 | 678 | ||
681 | static void | 679 | static void |
diff --git a/ssh-keysign.c b/ssh-keysign.c index c7ca5c4e4..9e9ebe2f1 100644 --- a/ssh-keysign.c +++ b/ssh-keysign.c | |||
@@ -22,7 +22,7 @@ | |||
22 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 22 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
23 | */ | 23 | */ |
24 | #include "includes.h" | 24 | #include "includes.h" |
25 | RCSID("$OpenBSD: ssh-keysign.c,v 1.13 2003/07/03 08:09:06 djm Exp $"); | 25 | RCSID("$OpenBSD: ssh-keysign.c,v 1.15 2004/01/19 21:25:15 markus Exp $"); |
26 | 26 | ||
27 | #include <openssl/evp.h> | 27 | #include <openssl/evp.h> |
28 | #include <openssl/rand.h> | 28 | #include <openssl/rand.h> |
@@ -126,6 +126,7 @@ valid_request(struct passwd *pw, char *host, Key **ret, u_char *data, | |||
126 | /* end of message */ | 126 | /* end of message */ |
127 | if (buffer_len(&b) != 0) | 127 | if (buffer_len(&b) != 0) |
128 | fail++; | 128 | fail++; |
129 | buffer_free(&b); | ||
129 | 130 | ||
130 | debug3("valid_request: fail %d", fail); | 131 | debug3("valid_request: fail %d", fail); |
131 | 132 | ||
@@ -233,7 +234,8 @@ main(int argc, char **argv) | |||
233 | /* send reply */ | 234 | /* send reply */ |
234 | buffer_clear(&b); | 235 | buffer_clear(&b); |
235 | buffer_put_string(&b, signature, slen); | 236 | buffer_put_string(&b, signature, slen); |
236 | ssh_msg_send(STDOUT_FILENO, version, &b); | 237 | if (ssh_msg_send(STDOUT_FILENO, version, &b) == -1) |
238 | fatal("ssh_msg_send failed"); | ||
237 | 239 | ||
238 | return (0); | 240 | return (0); |
239 | } | 241 | } |
diff --git a/ssh-rand-helper.8 b/ssh-rand-helper.8 index a89185c0a..df559d332 100644 --- a/ssh-rand-helper.8 +++ b/ssh-rand-helper.8 | |||
@@ -1,4 +1,4 @@ | |||
1 | .\" $Id: ssh-rand-helper.8,v 1.1 2002/04/14 09:27:13 djm Exp $ | 1 | .\" $Id: ssh-rand-helper.8,v 1.2 2003/11/21 12:48:56 djm Exp $ |
2 | .\" | 2 | .\" |
3 | .\" Copyright (c) 2002 Damien Miller. All rights reserved. | 3 | .\" Copyright (c) 2002 Damien Miller. All rights reserved. |
4 | .\" | 4 | .\" |
@@ -34,22 +34,22 @@ | |||
34 | .Op Fl b Ar bytes | 34 | .Op Fl b Ar bytes |
35 | .Sh DESCRIPTION | 35 | .Sh DESCRIPTION |
36 | .Nm | 36 | .Nm |
37 | is a small helper program used by | 37 | is a small helper program used by |
38 | .Xr ssh 1 , | 38 | .Xr ssh 1 , |
39 | .Xr ssh-add 1 , | 39 | .Xr ssh-add 1 , |
40 | .Xr ssh-agent 1 , | 40 | .Xr ssh-agent 1 , |
41 | .Xr ssh-keygen 1 , | 41 | .Xr ssh-keygen 1 , |
42 | .Xr ssh-keyscan 1 | 42 | .Xr ssh-keyscan 1 |
43 | and | 43 | and |
44 | .Xr sshd 8 | 44 | .Xr sshd 8 |
45 | to gather random numbers of cryptographic quality if the | 45 | to gather random numbers of cryptographic quality if the |
46 | .Xr openssl 4 | 46 | .Xr openssl 4 |
47 | library has not been configured to provide them itself. | 47 | library has not been configured to provide them itself. |
48 | .Pp | 48 | .Pp |
49 | Normally | 49 | Normally |
50 | .Nm | 50 | .Nm |
51 | will generate a strong random seed and provide it to the calling | 51 | will generate a strong random seed and provide it to the calling |
52 | program via standard output. If standard output is a tty, | 52 | program via standard output. If standard output is a tty, |
53 | .Nm | 53 | .Nm |
54 | will instead print the seed in hexidecimal format unless told otherwise. | 54 | will instead print the seed in hexidecimal format unless told otherwise. |
55 | .Pp | 55 | .Pp |
@@ -57,19 +57,19 @@ will instead print the seed in hexidecimal format unless told otherwise. | |||
57 | will by default gather random numbers from the system commands listed | 57 | will by default gather random numbers from the system commands listed |
58 | in | 58 | in |
59 | .Pa /etc/ssh/ssh_prng_cmds . | 59 | .Pa /etc/ssh/ssh_prng_cmds . |
60 | The output of each of the commands listed will be hashed and used to | 60 | The output of each of the commands listed will be hashed and used to |
61 | generate a random seed for the calling program. | 61 | generate a random seed for the calling program. |
62 | .Nm | 62 | .Nm |
63 | will also store seed files in | 63 | will also store seed files in |
64 | .Pa ~/.ssh/prng_seed | 64 | .Pa ~/.ssh/prng_seed |
65 | between executions. | 65 | between executions. |
66 | .Pp | 66 | .Pp |
67 | Alternately, | 67 | Alternately, |
68 | .Nm | 68 | .Nm |
69 | may be configured at build time to collect random numbers from a | 69 | may be configured at build time to collect random numbers from a |
70 | EGD/PRNGd server via a unix domain or localhost tcp socket. | 70 | EGD/PRNGd server via a unix domain or localhost tcp socket. |
71 | .Pp | 71 | .Pp |
72 | This program is not intended to be run by the end-user, so the few | 72 | This program is not intended to be run by the end-user, so the few |
73 | commandline options are for debugging purposes only. | 73 | commandline options are for debugging purposes only. |
74 | .Bl -tag -width Ds | 74 | .Bl -tag -width Ds |
75 | .It Fl b Ar bytes | 75 | .It Fl b Ar bytes |
diff --git a/ssh-rand-helper.c b/ssh-rand-helper.c index 7e65e4569..8a320a71e 100644 --- a/ssh-rand-helper.c +++ b/ssh-rand-helper.c | |||
@@ -39,7 +39,7 @@ | |||
39 | #include "pathnames.h" | 39 | #include "pathnames.h" |
40 | #include "log.h" | 40 | #include "log.h" |
41 | 41 | ||
42 | RCSID("$Id: ssh-rand-helper.c,v 1.13 2003/08/21 23:34:41 djm Exp $"); | 42 | RCSID("$Id: ssh-rand-helper.c,v 1.16 2003/11/21 12:56:47 djm Exp $"); |
43 | 43 | ||
44 | /* Number of bytes we write out */ | 44 | /* Number of bytes we write out */ |
45 | #define OUTPUT_SEED_SIZE 48 | 45 | #define OUTPUT_SEED_SIZE 48 |
@@ -115,19 +115,19 @@ double stir_gettimeofday(double entropy_estimate); | |||
115 | double stir_clock(double entropy_estimate); | 115 | double stir_clock(double entropy_estimate); |
116 | double stir_rusage(int who, double entropy_estimate); | 116 | double stir_rusage(int who, double entropy_estimate); |
117 | double hash_command_output(entropy_cmd_t *src, unsigned char *hash); | 117 | double hash_command_output(entropy_cmd_t *src, unsigned char *hash); |
118 | int get_random_bytes_prngd(unsigned char *buf, int len, | 118 | int get_random_bytes_prngd(unsigned char *buf, int len, |
119 | unsigned short tcp_port, char *socket_path); | 119 | unsigned short tcp_port, char *socket_path); |
120 | 120 | ||
121 | /* | 121 | /* |
122 | * Collect 'len' bytes of entropy into 'buf' from PRNGD/EGD daemon | 122 | * Collect 'len' bytes of entropy into 'buf' from PRNGD/EGD daemon |
123 | * listening either on 'tcp_port', or via Unix domain socket at * | 123 | * listening either on 'tcp_port', or via Unix domain socket at * |
124 | * 'socket_path'. | 124 | * 'socket_path'. |
125 | * Either a non-zero tcp_port or a non-null socket_path must be | 125 | * Either a non-zero tcp_port or a non-null socket_path must be |
126 | * supplied. | 126 | * supplied. |
127 | * Returns 0 on success, -1 on error | 127 | * Returns 0 on success, -1 on error |
128 | */ | 128 | */ |
129 | int | 129 | int |
130 | get_random_bytes_prngd(unsigned char *buf, int len, | 130 | get_random_bytes_prngd(unsigned char *buf, int len, |
131 | unsigned short tcp_port, char *socket_path) | 131 | unsigned short tcp_port, char *socket_path) |
132 | { | 132 | { |
133 | int fd, addr_len, rval, errors; | 133 | int fd, addr_len, rval, errors; |
@@ -289,7 +289,7 @@ hash_command_output(entropy_cmd_t *src, unsigned char *hash) | |||
289 | if (devnull == -1) { | 289 | if (devnull == -1) { |
290 | devnull = open("/dev/null", O_RDWR); | 290 | devnull = open("/dev/null", O_RDWR); |
291 | if (devnull == -1) | 291 | if (devnull == -1) |
292 | fatal("Couldn't open /dev/null: %s", | 292 | fatal("Couldn't open /dev/null: %s", |
293 | strerror(errno)); | 293 | strerror(errno)); |
294 | } | 294 | } |
295 | 295 | ||
@@ -314,7 +314,7 @@ hash_command_output(entropy_cmd_t *src, unsigned char *hash) | |||
314 | 314 | ||
315 | execv(src->path, (char**)(src->args)); | 315 | execv(src->path, (char**)(src->args)); |
316 | 316 | ||
317 | debug("(child) Couldn't exec '%s': %s", | 317 | debug("(child) Couldn't exec '%s': %s", |
318 | src->cmdstring, strerror(errno)); | 318 | src->cmdstring, strerror(errno)); |
319 | _exit(-1); | 319 | _exit(-1); |
320 | default: /* Parent */ | 320 | default: /* Parent */ |
@@ -376,7 +376,7 @@ hash_command_output(entropy_cmd_t *src, unsigned char *hash) | |||
376 | case -1: | 376 | case -1: |
377 | default: | 377 | default: |
378 | /* error */ | 378 | /* error */ |
379 | debug("Command '%s': select() failed: %s", | 379 | debug("Command '%s': select() failed: %s", |
380 | src->cmdstring, strerror(errno)); | 380 | src->cmdstring, strerror(errno)); |
381 | error_abort = 1; | 381 | error_abort = 1; |
382 | break; | 382 | break; |
@@ -400,8 +400,8 @@ hash_command_output(entropy_cmd_t *src, unsigned char *hash) | |||
400 | if (error_abort) { | 400 | if (error_abort) { |
401 | /* | 401 | /* |
402 | * Closing p[0] on timeout causes the entropy command to | 402 | * Closing p[0] on timeout causes the entropy command to |
403 | * SIGPIPE. Take whatever output we got, and mark this | 403 | * SIGPIPE. Take whatever output we got, and mark this |
404 | * command as slow | 404 | * command as slow |
405 | */ | 405 | */ |
406 | debug2("Command '%s' timed out", src->cmdstring); | 406 | debug2("Command '%s' timed out", src->cmdstring); |
407 | src->sticky_badness *= 2; | 407 | src->sticky_badness *= 2; |
@@ -479,7 +479,7 @@ stir_from_programs(void) | |||
479 | /* Stir it in */ | 479 | /* Stir it in */ |
480 | RAND_add(hash, sizeof(hash), entropy); | 480 | RAND_add(hash, sizeof(hash), entropy); |
481 | 481 | ||
482 | debug3("Got %0.2f bytes of entropy from '%s'", | 482 | debug3("Got %0.2f bytes of entropy from '%s'", |
483 | entropy, entropy_cmds[c].cmdstring); | 483 | entropy, entropy_cmds[c].cmdstring); |
484 | 484 | ||
485 | total_entropy += entropy; | 485 | total_entropy += entropy; |
@@ -491,7 +491,7 @@ stir_from_programs(void) | |||
491 | total_entropy += stir_rusage(RUSAGE_CHILDREN, 0.1); | 491 | total_entropy += stir_rusage(RUSAGE_CHILDREN, 0.1); |
492 | } else { | 492 | } else { |
493 | debug2("Command '%s' disabled (badness %d)", | 493 | debug2("Command '%s' disabled (badness %d)", |
494 | entropy_cmds[c].cmdstring, | 494 | entropy_cmds[c].cmdstring, |
495 | entropy_cmds[c].badness); | 495 | entropy_cmds[c].badness); |
496 | 496 | ||
497 | if (entropy_cmds[c].badness > 0) | 497 | if (entropy_cmds[c].badness > 0) |
@@ -511,8 +511,8 @@ prng_check_seedfile(char *filename) | |||
511 | struct stat st; | 511 | struct stat st; |
512 | 512 | ||
513 | /* | 513 | /* |
514 | * XXX raceable: eg replace seed between this stat and subsequent | 514 | * XXX raceable: eg replace seed between this stat and subsequent |
515 | * open. Not such a problem because we don't really trust the | 515 | * open. Not such a problem because we don't really trust the |
516 | * seed file anyway. | 516 | * seed file anyway. |
517 | * XXX: use secure path checking as elsewhere in OpenSSH | 517 | * XXX: use secure path checking as elsewhere in OpenSSH |
518 | */ | 518 | */ |
@@ -563,7 +563,7 @@ prng_write_seedfile(void) | |||
563 | debug("writing PRNG seed to file %.100s", filename); | 563 | debug("writing PRNG seed to file %.100s", filename); |
564 | 564 | ||
565 | if (RAND_bytes(seed, sizeof(seed)) <= 0) | 565 | if (RAND_bytes(seed, sizeof(seed)) <= 0) |
566 | fatal("PRNG seed extration failed"); | 566 | fatal("PRNG seed extraction failed"); |
567 | 567 | ||
568 | /* Don't care if the seed doesn't exist */ | 568 | /* Don't care if the seed doesn't exist */ |
569 | prng_check_seedfile(filename); | 569 | prng_check_seedfile(filename); |
@@ -651,7 +651,7 @@ prng_read_commands(char *cmdfilename) | |||
651 | continue; /* done with this line */ | 651 | continue; /* done with this line */ |
652 | 652 | ||
653 | /* | 653 | /* |
654 | * The first non-whitespace char should be a double quote | 654 | * The first non-whitespace char should be a double quote |
655 | * delimiting the commandline | 655 | * delimiting the commandline |
656 | */ | 656 | */ |
657 | if (*cp != '"') { | 657 | if (*cp != '"') { |
@@ -726,7 +726,7 @@ prng_read_commands(char *cmdfilename) | |||
726 | 726 | ||
727 | /* | 727 | /* |
728 | * If we've filled the array, reallocate it twice the size | 728 | * If we've filled the array, reallocate it twice the size |
729 | * Do this now because even if this we're on the last | 729 | * Do this now because even if this we're on the last |
730 | * command we need another slot to mark the last entry | 730 | * command we need another slot to mark the last entry |
731 | */ | 731 | */ |
732 | if (cur_cmd == num_cmds) { | 732 | if (cur_cmd == num_cmds) { |
@@ -761,7 +761,7 @@ usage(void) | |||
761 | OUTPUT_SEED_SIZE); | 761 | OUTPUT_SEED_SIZE); |
762 | } | 762 | } |
763 | 763 | ||
764 | int | 764 | int |
765 | main(int argc, char **argv) | 765 | main(int argc, char **argv) |
766 | { | 766 | { |
767 | unsigned char *buf; | 767 | unsigned char *buf; |
@@ -779,7 +779,7 @@ main(int argc, char **argv) | |||
779 | /* Don't write binary data to a tty, unless we are forced to */ | 779 | /* Don't write binary data to a tty, unless we are forced to */ |
780 | if (isatty(STDOUT_FILENO)) | 780 | if (isatty(STDOUT_FILENO)) |
781 | output_hex = 1; | 781 | output_hex = 1; |
782 | 782 | ||
783 | while ((ch = getopt(argc, argv, "vxXhb:")) != -1) { | 783 | while ((ch = getopt(argc, argv, "vxXhb:")) != -1) { |
784 | switch (ch) { | 784 | switch (ch) { |
785 | case 'v': | 785 | case 'v': |
@@ -806,7 +806,7 @@ main(int argc, char **argv) | |||
806 | } | 806 | } |
807 | 807 | ||
808 | log_init(argv[0], ll, SYSLOG_FACILITY_USER, 1); | 808 | log_init(argv[0], ll, SYSLOG_FACILITY_USER, 1); |
809 | 809 | ||
810 | #ifdef USE_SEED_FILES | 810 | #ifdef USE_SEED_FILES |
811 | prng_read_seedfile(); | 811 | prng_read_seedfile(); |
812 | #endif | 812 | #endif |
@@ -816,11 +816,11 @@ main(int argc, char **argv) | |||
816 | /* | 816 | /* |
817 | * Seed the RNG from wherever we can | 817 | * Seed the RNG from wherever we can |
818 | */ | 818 | */ |
819 | 819 | ||
820 | /* Take whatever is on the stack, but don't credit it */ | 820 | /* Take whatever is on the stack, but don't credit it */ |
821 | RAND_add(buf, bytes, 0); | 821 | RAND_add(buf, bytes, 0); |
822 | 822 | ||
823 | debug("Seeded RNG with %i bytes from system calls", | 823 | debug("Seeded RNG with %i bytes from system calls", |
824 | (int)stir_from_system()); | 824 | (int)stir_from_system()); |
825 | 825 | ||
826 | #ifdef PRNGD_PORT | 826 | #ifdef PRNGD_PORT |
@@ -835,7 +835,7 @@ main(int argc, char **argv) | |||
835 | /* Read in collection commands */ | 835 | /* Read in collection commands */ |
836 | if (prng_read_commands(SSH_PRNG_COMMAND_FILE) == -1) | 836 | if (prng_read_commands(SSH_PRNG_COMMAND_FILE) == -1) |
837 | fatal("PRNG initialisation failed -- exiting."); | 837 | fatal("PRNG initialisation failed -- exiting."); |
838 | debug("Seeded RNG with %i bytes from programs", | 838 | debug("Seeded RNG with %i bytes from programs", |
839 | (int)stir_from_programs()); | 839 | (int)stir_from_programs()); |
840 | #endif | 840 | #endif |
841 | 841 | ||
@@ -859,9 +859,9 @@ main(int argc, char **argv) | |||
859 | printf("\n"); | 859 | printf("\n"); |
860 | } else | 860 | } else |
861 | ret = atomicio(vwrite, STDOUT_FILENO, buf, bytes); | 861 | ret = atomicio(vwrite, STDOUT_FILENO, buf, bytes); |
862 | 862 | ||
863 | memset(buf, '\0', bytes); | 863 | memset(buf, '\0', bytes); |
864 | xfree(buf); | 864 | xfree(buf); |
865 | 865 | ||
866 | return ret == bytes ? 0 : 1; | 866 | return ret == bytes ? 0 : 1; |
867 | } | 867 | } |
@@ -14,7 +14,7 @@ | |||
14 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | 14 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
15 | */ | 15 | */ |
16 | #include "includes.h" | 16 | #include "includes.h" |
17 | RCSID("$OpenBSD: ssh-rsa.c,v 1.30 2003/06/18 11:28:11 markus Exp $"); | 17 | RCSID("$OpenBSD: ssh-rsa.c,v 1.31 2003/11/10 16:23:41 jakob Exp $"); |
18 | 18 | ||
19 | #include <openssl/evp.h> | 19 | #include <openssl/evp.h> |
20 | #include <openssl/err.h> | 20 | #include <openssl/err.h> |
@@ -31,8 +31,8 @@ static int openssh_RSA_verify(int, u_char *, u_int, u_char *, u_int, RSA *); | |||
31 | 31 | ||
32 | /* RSASSA-PKCS1-v1_5 (PKCS #1 v2.0 signature) with SHA1 */ | 32 | /* RSASSA-PKCS1-v1_5 (PKCS #1 v2.0 signature) with SHA1 */ |
33 | int | 33 | int |
34 | ssh_rsa_sign(Key *key, u_char **sigp, u_int *lenp, | 34 | ssh_rsa_sign(const Key *key, u_char **sigp, u_int *lenp, |
35 | u_char *data, u_int datalen) | 35 | const u_char *data, u_int datalen) |
36 | { | 36 | { |
37 | const EVP_MD *evp_md; | 37 | const EVP_MD *evp_md; |
38 | EVP_MD_CTX md; | 38 | EVP_MD_CTX md; |
@@ -96,8 +96,8 @@ ssh_rsa_sign(Key *key, u_char **sigp, u_int *lenp, | |||
96 | } | 96 | } |
97 | 97 | ||
98 | int | 98 | int |
99 | ssh_rsa_verify(Key *key, u_char *signature, u_int signaturelen, | 99 | ssh_rsa_verify(const Key *key, const u_char *signature, u_int signaturelen, |
100 | u_char *data, u_int datalen) | 100 | const u_char *data, u_int datalen) |
101 | { | 101 | { |
102 | Buffer b; | 102 | Buffer b; |
103 | const EVP_MD *evp_md; | 103 | const EVP_MD *evp_md; |
@@ -4,12 +4,10 @@ NAME | |||
4 | ssh - OpenSSH SSH client (remote login program) | 4 | ssh - OpenSSH SSH client (remote login program) |
5 | 5 | ||
6 | SYNOPSIS | 6 | SYNOPSIS |
7 | ssh [-l login_name] hostname | user@hostname [command] | 7 | ssh [-1246AaCfgkNnqsTtVvXxY] [-b bind_address] [-c cipher_spec] [-D port] |
8 | 8 | [-e escape_char] [-F configfile] [-i identity_file] | |
9 | ssh [-afgknqstvxACNTVX1246] [-b bind_address] [-c cipher_spec] | 9 | [-L port:host:hostport] [-l login_name] [-m mac_spec] [-o option] |
10 | [-e escape_char] [-i identity_file] [-l login_name] [-m mac_spec] | 10 | [-p port] [-R port:host:hostport] [user@]hostname [command] |
11 | [-o option] [-p port] [-F configfile] [-L port:host:hostport] | ||
12 | [-R port:host:hostport] [-D port] hostname | user@hostname [command] | ||
13 | 11 | ||
14 | DESCRIPTION | 12 | DESCRIPTION |
15 | ssh (SSH client) is a program for logging into a remote machine and for | 13 | ssh (SSH client) is a program for logging into a remote machine and for |
@@ -18,12 +16,14 @@ DESCRIPTION | |||
18 | ed hosts over an insecure network. X11 connections and arbitrary TCP/IP | 16 | ed hosts over an insecure network. X11 connections and arbitrary TCP/IP |
19 | ports can also be forwarded over the secure channel. | 17 | ports can also be forwarded over the secure channel. |
20 | 18 | ||
21 | ssh connects and logs into the specified hostname. The user must prove | 19 | ssh connects and logs into the specified hostname (with optional user |
22 | his/her identity to the remote machine using one of several methods de- | 20 | name). The user must prove his/her identity to the remote machine using |
23 | pending on the protocol version used: | 21 | one of several methods depending on the protocol version used. |
24 | 22 | ||
25 | SSH protocol version 1 | 23 | If command is specified, command is executed on the remote host instead |
24 | of a login shell. | ||
26 | 25 | ||
26 | SSH protocol version 1 | ||
27 | First, if the machine the user logs in from is listed in /etc/hosts.equiv | 27 | First, if the machine the user logs in from is listed in /etc/hosts.equiv |
28 | or /etc/shosts.equiv on the remote machine, and the user names are the | 28 | or /etc/shosts.equiv on the remote machine, and the user names are the |
29 | same on both sides, the user is immediately permitted to log in. Second, | 29 | same on both sides, the user is immediately permitted to log in. Second, |
@@ -38,7 +38,7 @@ DESCRIPTION | |||
38 | would be permitted by $HOME/.rhosts, $HOME/.shosts, /etc/hosts.equiv, or | 38 | would be permitted by $HOME/.rhosts, $HOME/.shosts, /etc/hosts.equiv, or |
39 | /etc/shosts.equiv, and if additionally the server can verify the client's | 39 | /etc/shosts.equiv, and if additionally the server can verify the client's |
40 | host key (see /etc/ssh/ssh_known_hosts and $HOME/.ssh/known_hosts in the | 40 | host key (see /etc/ssh/ssh_known_hosts and $HOME/.ssh/known_hosts in the |
41 | FILES section), only then login is permitted. This authentication method | 41 | FILES section), only then is login permitted. This authentication method |
42 | closes security holes due to IP spoofing, DNS spoofing and routing spoof- | 42 | closes security holes due to IP spoofing, DNS spoofing and routing spoof- |
43 | ing. [Note to the administrator: /etc/hosts.equiv, $HOME/.rhosts, and | 43 | ing. [Note to the administrator: /etc/hosts.equiv, $HOME/.rhosts, and |
44 | the rlogin/rsh protocol in general, are inherently insecure and should be | 44 | the rlogin/rsh protocol in general, are inherently insecure and should be |
@@ -50,20 +50,21 @@ DESCRIPTION | |||
50 | not possible to derive the decryption key from the encryption key. RSA | 50 | not possible to derive the decryption key from the encryption key. RSA |
51 | is one such system. The idea is that each user creates a public/private | 51 | is one such system. The idea is that each user creates a public/private |
52 | key pair for authentication purposes. The server knows the public key, | 52 | key pair for authentication purposes. The server knows the public key, |
53 | and only the user knows the private key. The file | 53 | and only the user knows the private key. |
54 | $HOME/.ssh/authorized_keys lists the public keys that are permitted for | 54 | |
55 | logging in. When the user logs in, the ssh program tells the server | 55 | The file $HOME/.ssh/authorized_keys lists the public keys that are per- |
56 | which key pair it would like to use for authentication. The server | 56 | mitted for logging in. When the user logs in, the ssh program tells the |
57 | checks if this key is permitted, and if so, sends the user (actually the | 57 | server which key pair it would like to use for authentication. The serv- |
58 | ssh program running on behalf of the user) a challenge, a random number, | 58 | er checks if this key is permitted, and if so, sends the user (actually |
59 | encrypted by the user's public key. The challenge can only be decrypted | 59 | the ssh program running on behalf of the user) a challenge, a random num- |
60 | using the proper private key. The user's client then decrypts the chal- | 60 | ber, encrypted by the user's public key. The challenge can only be de- |
61 | lenge using the private key, proving that he/she knows the private key | 61 | crypted using the proper private key. The user's client then decrypts |
62 | but without disclosing it to the server. | 62 | the challenge using the private key, proving that he/she knows the pri- |
63 | vate key but without disclosing it to the server. | ||
63 | 64 | ||
64 | ssh implements the RSA authentication protocol automatically. The user | 65 | ssh implements the RSA authentication protocol automatically. The user |
65 | creates his/her RSA key pair by running ssh-keygen(1). This stores the | 66 | creates his/her RSA key pair by running ssh-keygen(1). This stores the |
66 | private key in $HOME/.ssh/identity and the public key in | 67 | private key in $HOME/.ssh/identity and stores the public key in |
67 | $HOME/.ssh/identity.pub in the user's home directory. The user should | 68 | $HOME/.ssh/identity.pub in the user's home directory. The user should |
68 | then copy the identity.pub to $HOME/.ssh/authorized_keys in his/her home | 69 | then copy the identity.pub to $HOME/.ssh/authorized_keys in his/her home |
69 | directory on the remote machine (the authorized_keys file corresponds to | 70 | directory on the remote machine (the authorized_keys file corresponds to |
@@ -81,12 +82,11 @@ DESCRIPTION | |||
81 | someone listening on the network. | 82 | someone listening on the network. |
82 | 83 | ||
83 | SSH protocol version 2 | 84 | SSH protocol version 2 |
84 | 85 | When a user connects using protocol version 2, similar authentication | |
85 | When a user connects using protocol version 2 similar authentication | ||
86 | methods are available. Using the default values for | 86 | methods are available. Using the default values for |
87 | PreferredAuthentications, the client will try to authenticate first using | 87 | PreferredAuthentications, the client will try to authenticate first using |
88 | the hostbased method; if this method fails public key authentication is | 88 | the hostbased method; if this method fails, public key authentication is |
89 | attempted, and finally if this method fails keyboard-interactive and | 89 | attempted, and finally if this method fails, keyboard-interactive and |
90 | password authentication are tried. | 90 | password authentication are tried. |
91 | 91 | ||
92 | The public key method is similar to RSA authentication described in the | 92 | The public key method is similar to RSA authentication described in the |
@@ -99,8 +99,8 @@ DESCRIPTION | |||
99 | shared Diffie-Hellman value and is only known to the client and the serv- | 99 | shared Diffie-Hellman value and is only known to the client and the serv- |
100 | er. | 100 | er. |
101 | 101 | ||
102 | If public key authentication fails or is not available a password can be | 102 | If public key authentication fails or is not available, a password can be |
103 | sent encrypted to the remote host for proving the user's identity. | 103 | sent encrypted to the remote host to prove the user's identity. |
104 | 104 | ||
105 | Additionally, ssh supports hostbased or challenge response authentica- | 105 | Additionally, ssh supports hostbased or challenge response authentica- |
106 | tion. | 106 | tion. |
@@ -111,7 +111,6 @@ DESCRIPTION | |||
111 | ensuring the integrity of the connection. | 111 | ensuring the integrity of the connection. |
112 | 112 | ||
113 | Login session and remote execution | 113 | Login session and remote execution |
114 | |||
115 | When the user's identity has been accepted by the server, the server ei- | 114 | When the user's identity has been accepted by the server, the server ei- |
116 | ther executes the given command, or logs into the machine and gives the | 115 | ther executes the given command, or logs into the machine and gives the |
117 | user a normal shell on the remote machine. All communication with the | 116 | user a normal shell on the remote machine. All communication with the |
@@ -120,7 +119,7 @@ DESCRIPTION | |||
120 | If a pseudo-terminal has been allocated (normal login session), the user | 119 | If a pseudo-terminal has been allocated (normal login session), the user |
121 | may use the escape characters noted below. | 120 | may use the escape characters noted below. |
122 | 121 | ||
123 | If no pseudo tty has been allocated, the session is transparent and can | 122 | If no pseudo-tty has been allocated, the session is transparent and can |
124 | be used to reliably transfer binary data. On most systems, setting the | 123 | be used to reliably transfer binary data. On most systems, setting the |
125 | escape character to ``none'' will also make the session transparent even | 124 | escape character to ``none'' will also make the session transparent even |
126 | if a tty is used. | 125 | if a tty is used. |
@@ -130,8 +129,7 @@ DESCRIPTION | |||
130 | tus of the remote program is returned as the exit status of ssh. | 129 | tus of the remote program is returned as the exit status of ssh. |
131 | 130 | ||
132 | Escape Characters | 131 | Escape Characters |
133 | 132 | When a pseudo-terminal has been requested, ssh supports a number of func- | |
134 | When a pseudo terminal has been requested, ssh supports a number of func- | ||
135 | tions through the use of an escape character. | 133 | tions through the use of an escape character. |
136 | 134 | ||
137 | A single tilde character can be sent as ~~ or by following the tilde by a | 135 | A single tilde character can be sent as ~~ or by following the tilde by a |
@@ -142,29 +140,28 @@ DESCRIPTION | |||
142 | 140 | ||
143 | The supported escapes (assuming the default `~') are: | 141 | The supported escapes (assuming the default `~') are: |
144 | 142 | ||
145 | ~. Disconnect | 143 | ~. Disconnect. |
146 | 144 | ||
147 | ~^Z Background ssh | 145 | ~^Z Background ssh. |
148 | 146 | ||
149 | ~# List forwarded connections | 147 | ~# List forwarded connections. |
150 | 148 | ||
151 | ~& Background ssh at logout when waiting for forwarded connection / | 149 | ~& Background ssh at logout when waiting for forwarded connection / |
152 | X11 sessions to terminate | 150 | X11 sessions to terminate. |
153 | 151 | ||
154 | ~? Display a list of escape characters | 152 | ~? Display a list of escape characters. |
155 | 153 | ||
156 | ~B Send a BREAK to the remote system (only useful for SSH protocol | 154 | ~B Send a BREAK to the remote system (only useful for SSH protocol |
157 | version 2 and if the peer supports it) | 155 | version 2 and if the peer supports it). |
158 | 156 | ||
159 | ~C Open command line (only useful for adding port forwardings using | 157 | ~C Open command line (only useful for adding port forwardings using |
160 | the -L and -R options) | 158 | the -L and -R options). |
161 | 159 | ||
162 | ~R Request rekeying of the connection (only useful for SSH protocol | 160 | ~R Request rekeying of the connection (only useful for SSH protocol |
163 | version 2 and if the peer supports it) | 161 | version 2 and if the peer supports it). |
164 | 162 | ||
165 | X11 and TCP forwarding | 163 | X11 and TCP forwarding |
166 | 164 | If the ForwardX11 variable is set to ``yes'' (or see the description of | |
167 | If the ForwardX11 variable is set to ``yes'' (or, see the description of | ||
168 | the -X and -x options described later) and the user is using X11 (the | 165 | the -X and -x options described later) and the user is using X11 (the |
169 | DISPLAY environment variable is set), the connection to the X11 display | 166 | DISPLAY environment variable is set), the connection to the X11 display |
170 | is automatically forwarded to the remote side in such a way that any X11 | 167 | is automatically forwarded to the remote side in such a way that any X11 |
@@ -186,10 +183,10 @@ DESCRIPTION | |||
186 | is opened. The real authentication cookie is never sent to the server | 183 | is opened. The real authentication cookie is never sent to the server |
187 | machine (and no cookies are sent in the plain). | 184 | machine (and no cookies are sent in the plain). |
188 | 185 | ||
189 | If the ForwardAgent variable is set to ``yes'' (or, see the description | 186 | If the ForwardAgent variable is set to ``yes'' (or see the description of |
190 | of the -A and -a options described later) and the user is using an au- | 187 | the -A and -a options described later) and the user is using an authenti- |
191 | thentication agent, the connection to the agent is automatically forward- | 188 | cation agent, the connection to the agent is automatically forwarded to |
192 | ed to the remote side. | 189 | the remote side. |
193 | 190 | ||
194 | Forwarding of arbitrary TCP/IP connections over the secure channel can be | 191 | Forwarding of arbitrary TCP/IP connections over the secure channel can be |
195 | specified either on the command line or in a configuration file. One | 192 | specified either on the command line or in a configuration file. One |
@@ -197,7 +194,6 @@ DESCRIPTION | |||
197 | electronic purse; another is going through firewalls. | 194 | electronic purse; another is going through firewalls. |
198 | 195 | ||
199 | Server authentication | 196 | Server authentication |
200 | |||
201 | ssh automatically maintains and checks a database containing identifica- | 197 | ssh automatically maintains and checks a database containing identifica- |
202 | tions for all hosts it has ever been used with. Host keys are stored in | 198 | tions for all hosts it has ever been used with. Host keys are stored in |
203 | $HOME/.ssh/known_hosts in the user's home directory. Additionally, the | 199 | $HOME/.ssh/known_hosts in the user's home directory. Additionally, the |
@@ -212,7 +208,13 @@ DESCRIPTION | |||
212 | 208 | ||
213 | The options are as follows: | 209 | The options are as follows: |
214 | 210 | ||
215 | -a Disables forwarding of the authentication agent connection. | 211 | -1 Forces ssh to try protocol version 1 only. |
212 | |||
213 | -2 Forces ssh to try protocol version 2 only. | ||
214 | |||
215 | -4 Forces ssh to use IPv4 addresses only. | ||
216 | |||
217 | -6 Forces ssh to use IPv6 addresses only. | ||
216 | 218 | ||
217 | -A Enables forwarding of the authentication agent connection. This | 219 | -A Enables forwarding of the authentication agent connection. This |
218 | can also be specified on a per-host basis in a configuration | 220 | can also be specified on a per-host basis in a configuration |
@@ -226,15 +228,26 @@ DESCRIPTION | |||
226 | that enable them to authenticate using the identities loaded into | 228 | that enable them to authenticate using the identities loaded into |
227 | the agent. | 229 | the agent. |
228 | 230 | ||
231 | -a Disables forwarding of the authentication agent connection. | ||
232 | |||
229 | -b bind_address | 233 | -b bind_address |
230 | Specify the interface to transmit from on machines with multiple | 234 | Specify the interface to transmit from on machines with multiple |
231 | interfaces or aliased addresses. | 235 | interfaces or aliased addresses. |
232 | 236 | ||
233 | -c blowfish|3des|des | 237 | -C Requests compression of all data (including stdin, stdout, |
238 | stderr, and data for forwarded X11 and TCP/IP connections). The | ||
239 | compression algorithm is the same used by gzip(1), and the | ||
240 | ``level'' can be controlled by the CompressionLevel option for | ||
241 | protocol version 1. Compression is desirable on modem lines and | ||
242 | other slow connections, but will only slow down things on fast | ||
243 | networks. The default value can be set on a host-by-host basis | ||
244 | in the configuration files; see the Compression option. | ||
245 | |||
246 | -c blowfish | 3des | des | ||
234 | Selects the cipher to use for encrypting the session. 3des is | 247 | Selects the cipher to use for encrypting the session. 3des is |
235 | used by default. It is believed to be secure. 3des (triple-des) | 248 | used by default. It is believed to be secure. 3des (triple-des) |
236 | is an encrypt-decrypt-encrypt triple with three different keys. | 249 | is an encrypt-decrypt-encrypt triple with three different keys. |
237 | blowfish is a fast block cipher, it appears very secure and is | 250 | blowfish is a fast block cipher; it appears very secure and is |
238 | much faster than 3des. des is only supported in the ssh client | 251 | much faster than 3des. des is only supported in the ssh client |
239 | for interoperability with legacy protocol 1 implementations that | 252 | for interoperability with legacy protocol 1 implementations that |
240 | do not support the 3des cipher. Its use is strongly discouraged | 253 | do not support the 3des cipher. Its use is strongly discouraged |
@@ -245,15 +258,32 @@ DESCRIPTION | |||
245 | ciphers can be specified in order of preference. See Ciphers for | 258 | ciphers can be specified in order of preference. See Ciphers for |
246 | more information. | 259 | more information. |
247 | 260 | ||
248 | -e ch|^ch|none | 261 | -D port |
262 | Specifies a local ``dynamic'' application-level port forwarding. | ||
263 | This works by allocating a socket to listen to port on the local | ||
264 | side, and whenever a connection is made to this port, the connec- | ||
265 | tion is forwarded over the secure channel, and the application | ||
266 | protocol is then used to determine where to connect to from the | ||
267 | remote machine. Currently the SOCKS4 and SOCKS5 protocols are | ||
268 | supported, and ssh will act as a SOCKS server. Only root can | ||
269 | forward privileged ports. Dynamic port forwardings can also be | ||
270 | specified in the configuration file. | ||
271 | |||
272 | -e ch | ^ch | none | ||
249 | Sets the escape character for sessions with a pty (default: `~'). | 273 | Sets the escape character for sessions with a pty (default: `~'). |
250 | The escape character is only recognized at the beginning of a | 274 | The escape character is only recognized at the beginning of a |
251 | line. The escape character followed by a dot (`.') closes the | 275 | line. The escape character followed by a dot (`.') closes the |
252 | connection, followed by control-Z suspends the connection, and | 276 | connection; followed by control-Z suspends the connection; and |
253 | followed by itself sends the escape character once. Setting the | 277 | followed by itself sends the escape character once. Setting the |
254 | character to ``none'' disables any escapes and makes the session | 278 | character to ``none'' disables any escapes and makes the session |
255 | fully transparent. | 279 | fully transparent. |
256 | 280 | ||
281 | -F configfile | ||
282 | Specifies an alternative per-user configuration file. If a con- | ||
283 | figuration file is given on the command line, the system-wide | ||
284 | configuration file (/etc/ssh/ssh_config) will be ignored. The | ||
285 | default for the per-user configuration file is $HOME/.ssh/config. | ||
286 | |||
257 | -f Requests ssh to go to background just before command execution. | 287 | -f Requests ssh to go to background just before command execution. |
258 | This is useful if ssh is going to ask for passwords or passphras- | 288 | This is useful if ssh is going to ask for passwords or passphras- |
259 | es, but the user wants it in the background. This implies -n. | 289 | es, but the user wants it in the background. This implies -n. |
@@ -262,6 +292,11 @@ DESCRIPTION | |||
262 | 292 | ||
263 | -g Allows remote hosts to connect to local forwarded ports. | 293 | -g Allows remote hosts to connect to local forwarded ports. |
264 | 294 | ||
295 | -I smartcard_device | ||
296 | Specifies which smartcard device to use. The argument is the de- | ||
297 | vice ssh should use to communicate with a smartcard used for | ||
298 | storing the user's private RSA key. | ||
299 | |||
265 | -i identity_file | 300 | -i identity_file |
266 | Selects a file from which the identity (private key) for RSA or | 301 | Selects a file from which the identity (private key) for RSA or |
267 | DSA authentication is read. The default is $HOME/.ssh/identity | 302 | DSA authentication is read. The default is $HOME/.ssh/identity |
@@ -271,13 +306,19 @@ DESCRIPTION | |||
271 | It is possible to have multiple -i options (and multiple identi- | 306 | It is possible to have multiple -i options (and multiple identi- |
272 | ties specified in configuration files). | 307 | ties specified in configuration files). |
273 | 308 | ||
274 | -I smartcard_device | 309 | -k Disables forwarding (delegation) of GSSAPI credentials to the |
275 | Specifies which smartcard device to use. The argument is the de- | 310 | server. |
276 | vice ssh should use to communicate with a smartcard used for | ||
277 | storing the user's private RSA key. | ||
278 | 311 | ||
279 | -k Disables forwarding of Kerberos tickets. This may also be speci- | 312 | -L port:host:hostport |
280 | fied on a per-host basis in the configuration file. | 313 | Specifies that the given port on the local (client) host is to be |
314 | forwarded to the given host and port on the remote side. This | ||
315 | works by allocating a socket to listen to port on the local side, | ||
316 | and whenever a connection is made to this port, the connection is | ||
317 | forwarded over the secure channel, and a connection is made to | ||
318 | host port hostport from the remote machine. Port forwardings can | ||
319 | also be specified in the configuration file. Only root can for- | ||
320 | ward privileged ports. IPv6 addresses can be specified with an | ||
321 | alternative syntax: port/host/hostport. | ||
281 | 322 | ||
282 | -l login_name | 323 | -l login_name |
283 | Specifies the user to log in as on the remote machine. This also | 324 | Specifies the user to log in as on the remote machine. This also |
@@ -288,6 +329,9 @@ DESCRIPTION | |||
288 | MAC (message authentication code) algorithms can be specified in | 329 | MAC (message authentication code) algorithms can be specified in |
289 | order of preference. See the MACs keyword for more information. | 330 | order of preference. See the MACs keyword for more information. |
290 | 331 | ||
332 | -N Do not execute a remote command. This is useful for just for- | ||
333 | warding ports (protocol version 2 only). | ||
334 | |||
291 | -n Redirects stdin from /dev/null (actually, prevents reading from | 335 | -n Redirects stdin from /dev/null (actually, prevents reading from |
292 | stdin). This must be used when ssh is run in the background. A | 336 | stdin). This must be used when ssh is run in the background. A |
293 | common trick is to use this to run X11 programs on a remote ma- | 337 | common trick is to use this to run X11 programs on a remote ma- |
@@ -297,13 +341,63 @@ DESCRIPTION | |||
297 | will be put in the background. (This does not work if ssh needs | 341 | will be put in the background. (This does not work if ssh needs |
298 | to ask for a password or passphrase; see also the -f option.) | 342 | to ask for a password or passphrase; see also the -f option.) |
299 | 343 | ||
300 | -N Do not execute a remote command. This is useful for just for- | ||
301 | warding ports (protocol version 2 only). | ||
302 | |||
303 | -o option | 344 | -o option |
304 | Can be used to give options in the format used in the configura- | 345 | Can be used to give options in the format used in the configura- |
305 | tion file. This is useful for specifying options for which there | 346 | tion file. This is useful for specifying options for which there |
306 | is no separate command-line flag. | 347 | is no separate command-line flag. For full details of the op- |
348 | tions listed below, and their possible values, see ssh_config(5). | ||
349 | |||
350 | AddressFamily | ||
351 | BatchMode | ||
352 | BindAddress | ||
353 | ChallengeResponseAuthentication | ||
354 | CheckHostIP | ||
355 | Cipher | ||
356 | Ciphers | ||
357 | ClearAllForwardings | ||
358 | Compression | ||
359 | CompressionLevel | ||
360 | ConnectionAttempts | ||
361 | ConnectionTimeout | ||
362 | DynamicForward | ||
363 | EscapeChar | ||
364 | ForwardAgent | ||
365 | ForwardX11 | ||
366 | ForwardX11Trusted | ||
367 | GatewayPorts | ||
368 | GlobalKnownHostsFile | ||
369 | GSSAPIAuthentication | ||
370 | GSSAPIDelegateCredentials | ||
371 | Host | ||
372 | HostbasedAuthentication | ||
373 | HostKeyAlgorithms | ||
374 | HostKeyAlias | ||
375 | HostName | ||
376 | IdentityFile | ||
377 | LocalForward | ||
378 | LogLevel | ||
379 | MACs | ||
380 | NoHostAuthenticationForLocalhost | ||
381 | NumberOfPasswordPrompts | ||
382 | PasswordAuthentication | ||
383 | Port | ||
384 | PreferredAuthentications | ||
385 | Protocol | ||
386 | ProxyCommand | ||
387 | PubkeyAuthentication | ||
388 | RemoteForward | ||
389 | RhostsRSAAuthentication | ||
390 | RSAAuthentication | ||
391 | ServerAliveInterval | ||
392 | ServerAliveCountMax | ||
393 | SmartcardDevice | ||
394 | StrictHostKeyChecking | ||
395 | TCPKeepAlive | ||
396 | UsePrivilegedPort | ||
397 | User | ||
398 | UserKnownHostsFile | ||
399 | VerifyHostKeyDNS | ||
400 | XAuthLocation | ||
307 | 401 | ||
308 | -p port | 402 | -p port |
309 | Port to connect to on the remote host. This can be specified on | 403 | Port to connect to on the remote host. This can be specified on |
@@ -312,28 +406,38 @@ DESCRIPTION | |||
312 | -q Quiet mode. Causes all warning and diagnostic messages to be | 406 | -q Quiet mode. Causes all warning and diagnostic messages to be |
313 | suppressed. | 407 | suppressed. |
314 | 408 | ||
409 | -R port:host:hostport | ||
410 | Specifies that the given port on the remote (server) host is to | ||
411 | be forwarded to the given host and port on the local side. This | ||
412 | works by allocating a socket to listen to port on the remote | ||
413 | side, and whenever a connection is made to this port, the connec- | ||
414 | tion is forwarded over the secure channel, and a connection is | ||
415 | made to host port hostport from the local machine. Port forward- | ||
416 | ings can also be specified in the configuration file. Privileged | ||
417 | ports can be forwarded only when logging in as root on the remote | ||
418 | machine. IPv6 addresses can be specified with an alternative | ||
419 | syntax: port/host/hostport. | ||
420 | |||
315 | -s May be used to request invocation of a subsystem on the remote | 421 | -s May be used to request invocation of a subsystem on the remote |
316 | system. Subsystems are a feature of the SSH2 protocol which fa- | 422 | system. Subsystems are a feature of the SSH2 protocol which fa- |
317 | cilitate the use of SSH as a secure transport for other applica- | 423 | cilitate the use of SSH as a secure transport for other applica- |
318 | tions (eg. sftp). The subsystem is specified as the remote com- | 424 | tions (eg. sftp(1)). The subsystem is specified as the remote |
319 | mand. | 425 | command. |
426 | |||
427 | -T Disable pseudo-tty allocation. | ||
320 | 428 | ||
321 | -t Force pseudo-tty allocation. This can be used to execute arbi- | 429 | -t Force pseudo-tty allocation. This can be used to execute arbi- |
322 | trary screen-based programs on a remote machine, which can be | 430 | trary screen-based programs on a remote machine, which can be |
323 | very useful, e.g., when implementing menu services. Multiple -t | 431 | very useful, e.g., when implementing menu services. Multiple -t |
324 | options force tty allocation, even if ssh has no local tty. | 432 | options force tty allocation, even if ssh has no local tty. |
325 | 433 | ||
326 | -T Disable pseudo-tty allocation. | 434 | -V Display the version number and exit. |
327 | 435 | ||
328 | -v Verbose mode. Causes ssh to print debugging messages about its | 436 | -v Verbose mode. Causes ssh to print debugging messages about its |
329 | progress. This is helpful in debugging connection, authentica- | 437 | progress. This is helpful in debugging connection, authentica- |
330 | tion, and configuration problems. Multiple -v options increase | 438 | tion, and configuration problems. Multiple -v options increase |
331 | the verbosity. The maximum is 3. | 439 | the verbosity. The maximum is 3. |
332 | 440 | ||
333 | -V Display the version number and exit. | ||
334 | |||
335 | -x Disables X11 forwarding. | ||
336 | |||
337 | -X Enables X11 forwarding. This can also be specified on a per-host | 441 | -X Enables X11 forwarding. This can also be specified on a per-host |
338 | basis in a configuration file. | 442 | basis in a configuration file. |
339 | 443 | ||
@@ -343,62 +447,9 @@ DESCRIPTION | |||
343 | through the forwarded connection. An attacker may then be able | 447 | through the forwarded connection. An attacker may then be able |
344 | to perform activities such as keystroke monitoring. | 448 | to perform activities such as keystroke monitoring. |
345 | 449 | ||
346 | -C Requests compression of all data (including stdin, stdout, | 450 | -x Disables X11 forwarding. |
347 | stderr, and data for forwarded X11 and TCP/IP connections). The | ||
348 | compression algorithm is the same used by gzip(1), and the | ||
349 | ``level'' can be controlled by the CompressionLevel option for | ||
350 | protocol version 1. Compression is desirable on modem lines and | ||
351 | other slow connections, but will only slow down things on fast | ||
352 | networks. The default value can be set on a host-by-host basis | ||
353 | in the configuration files; see the Compression option. | ||
354 | |||
355 | -F configfile | ||
356 | Specifies an alternative per-user configuration file. If a con- | ||
357 | figuration file is given on the command line, the system-wide | ||
358 | configuration file (/etc/ssh/ssh_config) will be ignored. The | ||
359 | default for the per-user configuration file is $HOME/.ssh/config. | ||
360 | |||
361 | -L port:host:hostport | ||
362 | Specifies that the given port on the local (client) host is to be | ||
363 | forwarded to the given host and port on the remote side. This | ||
364 | works by allocating a socket to listen to port on the local side, | ||
365 | and whenever a connection is made to this port, the connection is | ||
366 | forwarded over the secure channel, and a connection is made to | ||
367 | host port hostport from the remote machine. Port forwardings can | ||
368 | also be specified in the configuration file. Only root can for- | ||
369 | ward privileged ports. IPv6 addresses can be specified with an | ||
370 | alternative syntax: port/host/hostport | ||
371 | |||
372 | -R port:host:hostport | ||
373 | Specifies that the given port on the remote (server) host is to | ||
374 | be forwarded to the given host and port on the local side. This | ||
375 | works by allocating a socket to listen to port on the remote | ||
376 | side, and whenever a connection is made to this port, the connec- | ||
377 | tion is forwarded over the secure channel, and a connection is | ||
378 | made to host port hostport from the local machine. Port forward- | ||
379 | ings can also be specified in the configuration file. Privileged | ||
380 | ports can be forwarded only when logging in as root on the remote | ||
381 | machine. IPv6 addresses can be specified with an alternative | ||
382 | syntax: port/host/hostport | ||
383 | |||
384 | -D port | ||
385 | Specifies a local ``dynamic'' application-level port forwarding. | ||
386 | This works by allocating a socket to listen to port on the local | ||
387 | side, and whenever a connection is made to this port, the connec- | ||
388 | tion is forwarded over the secure channel, and the application | ||
389 | protocol is then used to determine where to connect to from the | ||
390 | remote machine. Currently the SOCKS4 and SOCKS5 protocols are | ||
391 | supported, and ssh will act as a SOCKS server. Only root can | ||
392 | forward privileged ports. Dynamic port forwardings can also be | ||
393 | specified in the configuration file. | ||
394 | |||
395 | -1 Forces ssh to try protocol version 1 only. | ||
396 | |||
397 | -2 Forces ssh to try protocol version 2 only. | ||
398 | |||
399 | -4 Forces ssh to use IPv4 addresses only. | ||
400 | 451 | ||
401 | -6 Forces ssh to use IPv6 addresses only. | 452 | -Y Enables trusted X11 forwarding. |
402 | 453 | ||
403 | CONFIGURATION FILES | 454 | CONFIGURATION FILES |
404 | ssh may additionally obtain configuration data from a per-user configura- | 455 | ssh may additionally obtain configuration data from a per-user configura- |
@@ -408,65 +459,63 @@ CONFIGURATION FILES | |||
408 | ENVIRONMENT | 459 | ENVIRONMENT |
409 | ssh will normally set the following environment variables: | 460 | ssh will normally set the following environment variables: |
410 | 461 | ||
411 | DISPLAY | 462 | DISPLAY The DISPLAY variable indicates the location of the X11 server. |
412 | The DISPLAY variable indicates the location of the X11 server. | 463 | It is automatically set by ssh to point to a value of the form |
413 | It is automatically set by ssh to point to a value of the form | 464 | ``hostname:n'' where hostname indicates the host where the shell |
414 | ``hostname:n'' where hostname indicates the host where the shell | 465 | runs, and n is an integer >= 1. ssh uses this special value to |
415 | runs, and n is an integer >= 1. ssh uses this special value to | 466 | forward X11 connections over the secure channel. The user |
416 | forward X11 connections over the secure channel. The user should | 467 | should normally not set DISPLAY explicitly, as that will render |
417 | normally not set DISPLAY explicitly, as that will render the X11 | 468 | the X11 connection insecure (and will require the user to manu- |
418 | connection insecure (and will require the user to manually copy | 469 | ally copy any required authorization cookies). |
419 | any required authorization cookies). | ||
420 | 470 | ||
421 | HOME Set to the path of the user's home directory. | 471 | HOME Set to the path of the user's home directory. |
422 | 472 | ||
423 | LOGNAME | 473 | LOGNAME Synonym for USER; set for compatibility with systems that use |
424 | Synonym for USER; set for compatibility with systems that use | 474 | this variable. |
425 | this variable. | ||
426 | 475 | ||
427 | MAIL Set to the path of the user's mailbox. | 476 | MAIL Set to the path of the user's mailbox. |
428 | 477 | ||
429 | PATH Set to the default PATH, as specified when compiling ssh. | 478 | PATH Set to the default PATH, as specified when compiling ssh. |
430 | 479 | ||
431 | SSH_ASKPASS | 480 | SSH_ASKPASS |
432 | If ssh needs a passphrase, it will read the passphrase from the | 481 | If ssh needs a passphrase, it will read the passphrase from the |
433 | current terminal if it was run from a terminal. If ssh does not | 482 | current terminal if it was run from a terminal. If ssh does not |
434 | have a terminal associated with it but DISPLAY and SSH_ASKPASS | 483 | have a terminal associated with it but DISPLAY and SSH_ASKPASS |
435 | are set, it will execute the program specified by SSH_ASKPASS and | 484 | are set, it will execute the program specified by SSH_ASKPASS |
436 | open an X11 window to read the passphrase. This is particularly | 485 | and open an X11 window to read the passphrase. This is particu- |
437 | useful when calling ssh from a .Xsession or related script. | 486 | larly useful when calling ssh from a .Xsession or related |
438 | (Note that on some machines it may be necessary to redirect the | 487 | script. (Note that on some machines it may be necessary to |
439 | input from /dev/null to make this work.) | 488 | redirect the input from /dev/null to make this work.) |
440 | 489 | ||
441 | SSH_AUTH_SOCK | 490 | SSH_AUTH_SOCK |
442 | Identifies the path of a unix-domain socket used to communicate | 491 | Identifies the path of a unix-domain socket used to communicate |
443 | with the agent. | 492 | with the agent. |
444 | 493 | ||
445 | SSH_CONNECTION | 494 | SSH_CONNECTION |
446 | Identifies the client and server ends of the connection. The | 495 | Identifies the client and server ends of the connection. The |
447 | variable contains four space-separated values: client ip-address, | 496 | variable contains four space-separated values: client ip-ad- |
448 | client port number, server ip-address and server port number. | 497 | dress, client port number, server ip-address and server port |
498 | number. | ||
449 | 499 | ||
450 | SSH_ORIGINAL_COMMAND | 500 | SSH_ORIGINAL_COMMAND |
451 | The variable contains the original command line if a forced com- | 501 | The variable contains the original command line if a forced com- |
452 | mand is executed. It can be used to extract the original argu- | 502 | mand is executed. It can be used to extract the original argu- |
453 | ments. | 503 | ments. |
454 | 504 | ||
455 | SSH_TTY | 505 | SSH_TTY This is set to the name of the tty (path to the device) associ- |
456 | This is set to the name of the tty (path to the device) associat- | 506 | ated with the current shell or command. If the current session |
457 | ed with the current shell or command. If the current session has | 507 | has no tty, this variable is not set. |
458 | no tty, this variable is not set. | ||
459 | 508 | ||
460 | TZ The timezone variable is set to indicate the present timezone if | 509 | TZ The timezone variable is set to indicate the present timezone if |
461 | it was set when the daemon was started (i.e., the daemon passes | 510 | it was set when the daemon was started (i.e., the daemon passes |
462 | the value on to new connections). | 511 | the value on to new connections). |
463 | 512 | ||
464 | USER Set to the name of the user logging in. | 513 | USER Set to the name of the user logging in. |
465 | 514 | ||
466 | Additionally, ssh reads $HOME/.ssh/environment, and adds lines of the | 515 | Additionally, ssh reads $HOME/.ssh/environment, and adds lines of the |
467 | format ``VARNAME=value'' to the environment if the file exists and if | 516 | format ``VARNAME=value'' to the environment if the file exists and if |
468 | users are allowed to change their environment. See the | 517 | users are allowed to change their environment. For more information, see |
469 | PermitUserEnvironment option in sshd_config(5). | 518 | the PermitUserEnvironment option in sshd_config(5). |
470 | 519 | ||
471 | FILES | 520 | FILES |
472 | $HOME/.ssh/known_hosts | 521 | $HOME/.ssh/known_hosts |
@@ -486,7 +535,7 @@ FILES | |||
486 | $HOME/.ssh/identity.pub, $HOME/.ssh/id_dsa.pub, $HOME/.ssh/id_rsa.pub | 535 | $HOME/.ssh/identity.pub, $HOME/.ssh/id_dsa.pub, $HOME/.ssh/id_rsa.pub |
487 | Contains the public key for authentication (public part of the | 536 | Contains the public key for authentication (public part of the |
488 | identity file in human-readable form). The contents of the | 537 | identity file in human-readable form). The contents of the |
489 | $HOME/.ssh/identity.pub file should be added to | 538 | $HOME/.ssh/identity.pub file should be added to the file |
490 | $HOME/.ssh/authorized_keys on all machines where the user wishes | 539 | $HOME/.ssh/authorized_keys on all machines where the user wishes |
491 | to log in using protocol version 1 RSA authentication. The con- | 540 | to log in using protocol version 1 RSA authentication. The con- |
492 | tents of the $HOME/.ssh/id_dsa.pub and $HOME/.ssh/id_rsa.pub file | 541 | tents of the $HOME/.ssh/id_dsa.pub and $HOME/.ssh/id_rsa.pub file |
@@ -517,7 +566,7 @@ FILES | |||
517 | following format (fields separated by spaces): system name, pub- | 566 | following format (fields separated by spaces): system name, pub- |
518 | lic key and optional comment field. When different names are | 567 | lic key and optional comment field. When different names are |
519 | used for the same machine, all such names should be listed, sepa- | 568 | used for the same machine, all such names should be listed, sepa- |
520 | rated by commas. The format is described on the sshd(8) manual | 569 | rated by commas. The format is described in the sshd(8) manual |
521 | page. | 570 | page. |
522 | 571 | ||
523 | The canonical system name (as returned by name servers) is used | 572 | The canonical system name (as returned by name servers) is used |
@@ -543,7 +592,7 @@ FILES | |||
543 | method is used. By default ssh is not setuid root. | 592 | method is used. By default ssh is not setuid root. |
544 | 593 | ||
545 | $HOME/.rhosts | 594 | $HOME/.rhosts |
546 | This file is used in .rhosts authentication to list the host/user | 595 | This file is used in rhosts authentication to list the host/user |
547 | pairs that are permitted to log in. (Note that this file is also | 596 | pairs that are permitted to log in. (Note that this file is also |
548 | used by rlogin and rsh, which makes using this file insecure.) | 597 | used by rlogin and rsh, which makes using this file insecure.) |
549 | Each line of the file contains a host name (in the canonical form | 598 | Each line of the file contains a host name (in the canonical form |
@@ -557,7 +606,7 @@ FILES | |||
557 | 606 | ||
558 | Note that by default sshd(8) will be installed so that it re- | 607 | Note that by default sshd(8) will be installed so that it re- |
559 | quires successful RSA host authentication before permitting | 608 | quires successful RSA host authentication before permitting |
560 | .rhosts authentication. If the server machine does not have the | 609 | rhosts authentication. If the server machine does not have the |
561 | client's host key in /etc/ssh/ssh_known_hosts, it can be stored | 610 | client's host key in /etc/ssh/ssh_known_hosts, it can be stored |
562 | in $HOME/.ssh/known_hosts. The easiest way to do this is to con- | 611 | in $HOME/.ssh/known_hosts. The easiest way to do this is to con- |
563 | nect back to the client from the server machine using ssh; this | 612 | nect back to the client from the server machine using ssh; this |
@@ -569,9 +618,9 @@ FILES | |||
569 | with ssh without permitting login with rlogin or rsh(1). | 618 | with ssh without permitting login with rlogin or rsh(1). |
570 | 619 | ||
571 | /etc/hosts.equiv | 620 | /etc/hosts.equiv |
572 | This file is used during .rhosts authentication. It contains | 621 | This file is used during rhosts authentication. It contains |
573 | canonical hosts names, one per line (the full format is described | 622 | canonical hosts names, one per line (the full format is described |
574 | on the sshd(8) manual page). If the client host is found in this | 623 | in the sshd(8) manual page). If the client host is found in this |
575 | file, login is automatically permitted provided client and server | 624 | file, login is automatically permitted provided client and server |
576 | user names are the same. Additionally, successful RSA host au- | 625 | user names are the same. Additionally, successful RSA host au- |
577 | thentication is normally required. This file should only be | 626 | thentication is normally required. This file should only be |
@@ -601,8 +650,9 @@ DIAGNOSTICS | |||
601 | error occurred. | 650 | error occurred. |
602 | 651 | ||
603 | SEE ALSO | 652 | SEE ALSO |
604 | rsh(1), scp(1), sftp(1), ssh-add(1), ssh-agent(1), ssh-keygen(1), | 653 | gzip(1), rsh(1), scp(1), sftp(1), ssh-add(1), ssh-agent(1), |
605 | telnet(1), ssh_config(5), ssh-keysign(8), sshd(8) | 654 | ssh-keygen(1), telnet(1), hosts.equiv(5), ssh_config(5), ssh-keysign(8), |
655 | sshd(8) | ||
606 | 656 | ||
607 | T. Ylonen, T. Kivinen, M. Saarinen, T. Rinne, and S. Lehtinen, SSH | 657 | T. Ylonen, T. Kivinen, M. Saarinen, T. Rinne, and S. Lehtinen, SSH |
608 | Protocol Architecture, draft-ietf-secsh-architecture-12.txt, January | 658 | Protocol Architecture, draft-ietf-secsh-architecture-12.txt, January |
@@ -615,4 +665,4 @@ AUTHORS | |||
615 | created OpenSSH. Markus Friedl contributed the support for SSH protocol | 665 | created OpenSSH. Markus Friedl contributed the support for SSH protocol |
616 | versions 1.5 and 2.0. | 666 | versions 1.5 and 2.0. |
617 | 667 | ||
618 | OpenBSD 3.4 September 25, 1999 10 | 668 | OpenBSD 3.4 September 25, 1999 11 |
@@ -34,7 +34,7 @@ | |||
34 | .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | 34 | .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
35 | .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 35 | .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
36 | .\" | 36 | .\" |
37 | .\" $OpenBSD: ssh.1,v 1.175 2003/07/22 13:35:22 markus Exp $ | 37 | .\" $OpenBSD: ssh.1,v 1.181 2003/12/16 15:49:51 markus Exp $ |
38 | .Dd September 25, 1999 | 38 | .Dd September 25, 1999 |
39 | .Dt SSH 1 | 39 | .Dt SSH 1 |
40 | .Os | 40 | .Os |
@@ -43,22 +43,14 @@ | |||
43 | .Nd OpenSSH SSH client (remote login program) | 43 | .Nd OpenSSH SSH client (remote login program) |
44 | .Sh SYNOPSIS | 44 | .Sh SYNOPSIS |
45 | .Nm ssh | 45 | .Nm ssh |
46 | .Op Fl l Ar login_name | 46 | .Op Fl 1246AaCfgkNnqsTtVvXxY |
47 | .Ar hostname | user@hostname | ||
48 | .Op Ar command | ||
49 | .Pp | ||
50 | .Nm ssh | ||
51 | .Bk -words | ||
52 | .Op Fl afgknqstvxACNTVX1246 | ||
53 | .Op Fl b Ar bind_address | 47 | .Op Fl b Ar bind_address |
54 | .Op Fl c Ar cipher_spec | 48 | .Op Fl c Ar cipher_spec |
49 | .Op Fl D Ar port | ||
55 | .Op Fl e Ar escape_char | 50 | .Op Fl e Ar escape_char |
56 | .Op Fl i Ar identity_file | ||
57 | .Op Fl l Ar login_name | ||
58 | .Op Fl m Ar mac_spec | ||
59 | .Op Fl o Ar option | ||
60 | .Op Fl p Ar port | ||
61 | .Op Fl F Ar configfile | 51 | .Op Fl F Ar configfile |
52 | .Op Fl i Ar identity_file | ||
53 | .Bk -words | ||
62 | .Oo Fl L Xo | 54 | .Oo Fl L Xo |
63 | .Sm off | 55 | .Sm off |
64 | .Ar port : | 56 | .Ar port : |
@@ -68,7 +60,12 @@ | |||
68 | .Xc | 60 | .Xc |
69 | .Oc | 61 | .Oc |
70 | .Ek | 62 | .Ek |
63 | .Op Fl l Ar login_name | ||
64 | .Op Fl m Ar mac_spec | ||
65 | .Op Fl o Ar option | ||
71 | .Bk -words | 66 | .Bk -words |
67 | .Op Fl p Ar port | ||
68 | .Ek | ||
72 | .Oo Fl R Xo | 69 | .Oo Fl R Xo |
73 | .Sm off | 70 | .Sm off |
74 | .Ar port : | 71 | .Ar port : |
@@ -77,29 +74,34 @@ | |||
77 | .Sm on | 74 | .Sm on |
78 | .Xc | 75 | .Xc |
79 | .Oc | 76 | .Oc |
80 | .Op Fl D Ar port | 77 | .Oo Ar user Ns @ Oc Ns Ar hostname |
81 | .Ar hostname | user@hostname | ||
82 | .Op Ar command | 78 | .Op Ar command |
83 | .Ek | ||
84 | .Sh DESCRIPTION | 79 | .Sh DESCRIPTION |
85 | .Nm | 80 | .Nm |
86 | (SSH client) is a program for logging into a remote machine and for | 81 | (SSH client) is a program for logging into a remote machine and for |
87 | executing commands on a remote machine. | 82 | executing commands on a remote machine. |
88 | It is intended to replace | 83 | It is intended to replace rlogin and rsh, |
89 | rlogin and rsh, and provide secure encrypted communications between | 84 | and provide secure encrypted communications between |
90 | two untrusted hosts over an insecure network. | 85 | two untrusted hosts over an insecure network. |
91 | X11 connections and | 86 | X11 connections and arbitrary TCP/IP ports |
92 | arbitrary TCP/IP ports can also be forwarded over the secure channel. | 87 | can also be forwarded over the secure channel. |
93 | .Pp | 88 | .Pp |
94 | .Nm | 89 | .Nm |
95 | connects and logs into the specified | 90 | connects and logs into the specified |
96 | .Ar hostname . | 91 | .Ar hostname |
92 | (with optional | ||
93 | .Ar user | ||
94 | name). | ||
97 | The user must prove | 95 | The user must prove |
98 | his/her identity to the remote machine using one of several methods | 96 | his/her identity to the remote machine using one of several methods |
99 | depending on the protocol version used: | 97 | depending on the protocol version used. |
100 | .Pp | 98 | .Pp |
99 | If | ||
100 | .Ar command | ||
101 | is specified, | ||
102 | .Ar command | ||
103 | is executed on the remote host instead of a login shell. | ||
101 | .Ss SSH protocol version 1 | 104 | .Ss SSH protocol version 1 |
102 | .Pp | ||
103 | First, if the machine the user logs in from is listed in | 105 | First, if the machine the user logs in from is listed in |
104 | .Pa /etc/hosts.equiv | 106 | .Pa /etc/hosts.equiv |
105 | or | 107 | or |
@@ -107,9 +109,9 @@ or | |||
107 | on the remote machine, and the user names are | 109 | on the remote machine, and the user names are |
108 | the same on both sides, the user is immediately permitted to log in. | 110 | the same on both sides, the user is immediately permitted to log in. |
109 | Second, if | 111 | Second, if |
110 | .Pa \&.rhosts | 112 | .Pa .rhosts |
111 | or | 113 | or |
112 | .Pa \&.shosts | 114 | .Pa .shosts |
113 | exists in the user's home directory on the | 115 | exists in the user's home directory on the |
114 | remote machine and contains a line containing the name of the client | 116 | remote machine and contains a line containing the name of the client |
115 | machine and the name of the user on that machine, the user is | 117 | machine and the name of the user on that machine, the user is |
@@ -118,9 +120,9 @@ This form of authentication alone is normally not | |||
118 | allowed by the server because it is not secure. | 120 | allowed by the server because it is not secure. |
119 | .Pp | 121 | .Pp |
120 | The second authentication method is the | 122 | The second authentication method is the |
121 | .Pa rhosts | 123 | .Em rhosts |
122 | or | 124 | or |
123 | .Pa hosts.equiv | 125 | .Em hosts.equiv |
124 | method combined with RSA-based host authentication. | 126 | method combined with RSA-based host authentication. |
125 | It means that if the login would be permitted by | 127 | It means that if the login would be permitted by |
126 | .Pa $HOME/.rhosts , | 128 | .Pa $HOME/.rhosts , |
@@ -135,7 +137,7 @@ and | |||
135 | .Pa $HOME/.ssh/known_hosts | 137 | .Pa $HOME/.ssh/known_hosts |
136 | in the | 138 | in the |
137 | .Sx FILES | 139 | .Sx FILES |
138 | section), only then login is permitted. | 140 | section), only then is login permitted. |
139 | This authentication method closes security holes due to IP | 141 | This authentication method closes security holes due to IP |
140 | spoofing, DNS spoofing and routing spoofing. | 142 | spoofing, DNS spoofing and routing spoofing. |
141 | [Note to the administrator: | 143 | [Note to the administrator: |
@@ -154,24 +156,23 @@ RSA is one such system. | |||
154 | The idea is that each user creates a public/private | 156 | The idea is that each user creates a public/private |
155 | key pair for authentication purposes. | 157 | key pair for authentication purposes. |
156 | The server knows the public key, and only the user knows the private key. | 158 | The server knows the public key, and only the user knows the private key. |
159 | .Pp | ||
157 | The file | 160 | The file |
158 | .Pa $HOME/.ssh/authorized_keys | 161 | .Pa $HOME/.ssh/authorized_keys |
159 | lists the public keys that are permitted for logging | 162 | lists the public keys that are permitted for logging in. |
160 | in. | ||
161 | When the user logs in, the | 163 | When the user logs in, the |
162 | .Nm | 164 | .Nm |
163 | program tells the server which key pair it would like to use for | 165 | program tells the server which key pair it would like to use for |
164 | authentication. | 166 | authentication. |
165 | The server checks if this key is permitted, and if | 167 | The server checks if this key is permitted, and if so, |
166 | so, sends the user (actually the | 168 | sends the user (actually the |
167 | .Nm | 169 | .Nm |
168 | program running on behalf of the user) a challenge, a random number, | 170 | program running on behalf of the user) a challenge, a random number, |
169 | encrypted by the user's public key. | 171 | encrypted by the user's public key. |
170 | The challenge can only be | 172 | The challenge can only be decrypted using the proper private key. |
171 | decrypted using the proper private key. | 173 | The user's client then decrypts the challenge using the private key, |
172 | The user's client then decrypts the | 174 | proving that he/she knows the private key |
173 | challenge using the private key, proving that he/she knows the private | 175 | but without disclosing it to the server. |
174 | key but without disclosing it to the server. | ||
175 | .Pp | 176 | .Pp |
176 | .Nm | 177 | .Nm |
177 | implements the RSA authentication protocol automatically. | 178 | implements the RSA authentication protocol automatically. |
@@ -179,7 +180,7 @@ The user creates his/her RSA key pair by running | |||
179 | .Xr ssh-keygen 1 . | 180 | .Xr ssh-keygen 1 . |
180 | This stores the private key in | 181 | This stores the private key in |
181 | .Pa $HOME/.ssh/identity | 182 | .Pa $HOME/.ssh/identity |
182 | and the public key in | 183 | and stores the public key in |
183 | .Pa $HOME/.ssh/identity.pub | 184 | .Pa $HOME/.ssh/identity.pub |
184 | in the user's home directory. | 185 | in the user's home directory. |
185 | The user should then copy the | 186 | The user should then copy the |
@@ -193,8 +194,9 @@ file corresponds to the conventional | |||
193 | file, and has one key | 194 | file, and has one key |
194 | per line, though the lines can be very long). | 195 | per line, though the lines can be very long). |
195 | After this, the user can log in without giving the password. | 196 | After this, the user can log in without giving the password. |
196 | RSA authentication is much | 197 | RSA authentication is much more secure than |
197 | more secure than rhosts authentication. | 198 | .Em rhosts |
199 | authentication. | ||
198 | .Pp | 200 | .Pp |
199 | The most convenient way to use RSA authentication may be with an | 201 | The most convenient way to use RSA authentication may be with an |
200 | authentication agent. | 202 | authentication agent. |
@@ -208,16 +210,14 @@ prompts the user for a password. | |||
208 | The password is sent to the remote | 210 | The password is sent to the remote |
209 | host for checking; however, since all communications are encrypted, | 211 | host for checking; however, since all communications are encrypted, |
210 | the password cannot be seen by someone listening on the network. | 212 | the password cannot be seen by someone listening on the network. |
211 | .Pp | ||
212 | .Ss SSH protocol version 2 | 213 | .Ss SSH protocol version 2 |
213 | .Pp | 214 | When a user connects using protocol version 2, |
214 | When a user connects using protocol version 2 | ||
215 | similar authentication methods are available. | 215 | similar authentication methods are available. |
216 | Using the default values for | 216 | Using the default values for |
217 | .Cm PreferredAuthentications , | 217 | .Cm PreferredAuthentications , |
218 | the client will try to authenticate first using the hostbased method; | 218 | the client will try to authenticate first using the hostbased method; |
219 | if this method fails public key authentication is attempted, | 219 | if this method fails, public key authentication is attempted, |
220 | and finally if this method fails keyboard-interactive and | 220 | and finally if this method fails, keyboard-interactive and |
221 | password authentication are tried. | 221 | password authentication are tried. |
222 | .Pp | 222 | .Pp |
223 | The public key method is similar to RSA authentication described | 223 | The public key method is similar to RSA authentication described |
@@ -233,8 +233,8 @@ and grants access if both the key is found and the signature is correct. | |||
233 | The session identifier is derived from a shared Diffie-Hellman value | 233 | The session identifier is derived from a shared Diffie-Hellman value |
234 | and is only known to the client and the server. | 234 | and is only known to the client and the server. |
235 | .Pp | 235 | .Pp |
236 | If public key authentication fails or is not available a password | 236 | If public key authentication fails or is not available, a password |
237 | can be sent encrypted to the remote host for proving the user's identity. | 237 | can be sent encrypted to the remote host to prove the user's identity. |
238 | .Pp | 238 | .Pp |
239 | Additionally, | 239 | Additionally, |
240 | .Nm | 240 | .Nm |
@@ -245,9 +245,7 @@ Protocol 2 provides additional mechanisms for confidentiality | |||
245 | and integrity (hmac-md5, hmac-sha1). | 245 | and integrity (hmac-md5, hmac-sha1). |
246 | Note that protocol 1 lacks a strong mechanism for ensuring the | 246 | Note that protocol 1 lacks a strong mechanism for ensuring the |
247 | integrity of the connection. | 247 | integrity of the connection. |
248 | .Pp | ||
249 | .Ss Login session and remote execution | 248 | .Ss Login session and remote execution |
250 | .Pp | ||
251 | When the user's identity has been accepted by the server, the server | 249 | When the user's identity has been accepted by the server, the server |
252 | either executes the given command, or logs into the machine and gives | 250 | either executes the given command, or logs into the machine and gives |
253 | the user a normal shell on the remote machine. | 251 | the user a normal shell on the remote machine. |
@@ -257,23 +255,20 @@ the remote command or shell will be automatically encrypted. | |||
257 | If a pseudo-terminal has been allocated (normal login session), the | 255 | If a pseudo-terminal has been allocated (normal login session), the |
258 | user may use the escape characters noted below. | 256 | user may use the escape characters noted below. |
259 | .Pp | 257 | .Pp |
260 | If no pseudo tty has been allocated, the | 258 | If no pseudo-tty has been allocated, |
261 | session is transparent and can be used to reliably transfer binary | 259 | the session is transparent and can be used to reliably transfer binary data. |
262 | data. | ||
263 | On most systems, setting the escape character to | 260 | On most systems, setting the escape character to |
264 | .Dq none | 261 | .Dq none |
265 | will also make the session transparent even if a tty is used. | 262 | will also make the session transparent even if a tty is used. |
266 | .Pp | 263 | .Pp |
267 | The session terminates when the command or shell on the remote | 264 | The session terminates when the command or shell on the remote |
268 | machine exits and all X11 and TCP/IP connections have been closed. | 265 | machine exits and all X11 and TCP/IP connections have been closed. |
269 | The exit status of the remote program is returned as the exit status | 266 | The exit status of the remote program is returned as the exit status of |
270 | of | ||
271 | .Nm ssh . | 267 | .Nm ssh . |
272 | .Pp | ||
273 | .Ss Escape Characters | 268 | .Ss Escape Characters |
274 | .Pp | 269 | When a pseudo-terminal has been requested, |
275 | When a pseudo terminal has been requested, ssh supports a number of functions | 270 | .Nm |
276 | through the use of an escape character. | 271 | supports a number of functions through the use of an escape character. |
277 | .Pp | 272 | .Pp |
278 | A single tilde character can be sent as | 273 | A single tilde character can be sent as |
279 | .Ic ~~ | 274 | .Ic ~~ |
@@ -291,37 +286,37 @@ The supported escapes (assuming the default | |||
291 | are: | 286 | are: |
292 | .Bl -tag -width Ds | 287 | .Bl -tag -width Ds |
293 | .It Cm ~. | 288 | .It Cm ~. |
294 | Disconnect | 289 | Disconnect. |
295 | .It Cm ~^Z | 290 | .It Cm ~^Z |
296 | Background ssh | 291 | Background |
292 | .Nm ssh . | ||
297 | .It Cm ~# | 293 | .It Cm ~# |
298 | List forwarded connections | 294 | List forwarded connections. |
299 | .It Cm ~& | 295 | .It Cm ~& |
300 | Background ssh at logout when waiting for forwarded connection / X11 sessions | 296 | Background |
301 | to terminate | 297 | .Nm |
298 | at logout when waiting for forwarded connection / X11 sessions to terminate. | ||
302 | .It Cm ~? | 299 | .It Cm ~? |
303 | Display a list of escape characters | 300 | Display a list of escape characters. |
304 | .It Cm ~B | 301 | .It Cm ~B |
305 | Send a BREAK to the remote system (only useful for SSH protocol version 2 | 302 | Send a BREAK to the remote system |
306 | and if the peer supports it) | 303 | (only useful for SSH protocol version 2 and if the peer supports it). |
307 | .It Cm ~C | 304 | .It Cm ~C |
308 | Open command line (only useful for adding port forwardings using the | 305 | Open command line (only useful for adding port forwardings using the |
309 | .Fl L | 306 | .Fl L |
310 | and | 307 | and |
311 | .Fl R | 308 | .Fl R |
312 | options) | 309 | options). |
313 | .It Cm ~R | 310 | .It Cm ~R |
314 | Request rekeying of the connection (only useful for SSH protocol version 2 | 311 | Request rekeying of the connection |
315 | and if the peer supports it) | 312 | (only useful for SSH protocol version 2 and if the peer supports it). |
316 | .El | 313 | .El |
317 | .Pp | ||
318 | .Ss X11 and TCP forwarding | 314 | .Ss X11 and TCP forwarding |
319 | .Pp | ||
320 | If the | 315 | If the |
321 | .Cm ForwardX11 | 316 | .Cm ForwardX11 |
322 | variable is set to | 317 | variable is set to |
323 | .Dq yes | 318 | .Dq yes |
324 | (or, see the description of the | 319 | (or see the description of the |
325 | .Fl X | 320 | .Fl X |
326 | and | 321 | and |
327 | .Fl x | 322 | .Fl x |
@@ -342,8 +337,7 @@ The | |||
342 | .Ev DISPLAY | 337 | .Ev DISPLAY |
343 | value set by | 338 | value set by |
344 | .Nm | 339 | .Nm |
345 | will point to the server machine, but with a display number greater | 340 | will point to the server machine, but with a display number greater than zero. |
346 | than zero. | ||
347 | This is normal, and happens because | 341 | This is normal, and happens because |
348 | .Nm | 342 | .Nm |
349 | creates a | 343 | creates a |
@@ -364,7 +358,7 @@ If the | |||
364 | .Cm ForwardAgent | 358 | .Cm ForwardAgent |
365 | variable is set to | 359 | variable is set to |
366 | .Dq yes | 360 | .Dq yes |
367 | (or, see the description of the | 361 | (or see the description of the |
368 | .Fl A | 362 | .Fl A |
369 | and | 363 | and |
370 | .Fl a | 364 | .Fl a |
@@ -376,9 +370,7 @@ Forwarding of arbitrary TCP/IP connections over the secure channel can | |||
376 | be specified either on the command line or in a configuration file. | 370 | be specified either on the command line or in a configuration file. |
377 | One possible application of TCP/IP forwarding is a secure connection to an | 371 | One possible application of TCP/IP forwarding is a secure connection to an |
378 | electronic purse; another is going through firewalls. | 372 | electronic purse; another is going through firewalls. |
379 | .Pp | ||
380 | .Ss Server authentication | 373 | .Ss Server authentication |
381 | .Pp | ||
382 | .Nm | 374 | .Nm |
383 | automatically maintains and checks a database containing | 375 | automatically maintains and checks a database containing |
384 | identifications for all hosts it has ever been used with. | 376 | identifications for all hosts it has ever been used with. |
@@ -389,14 +381,12 @@ Additionally, the file | |||
389 | .Pa /etc/ssh/ssh_known_hosts | 381 | .Pa /etc/ssh/ssh_known_hosts |
390 | is automatically checked for known hosts. | 382 | is automatically checked for known hosts. |
391 | Any new hosts are automatically added to the user's file. | 383 | Any new hosts are automatically added to the user's file. |
392 | If a host's identification | 384 | If a host's identification ever changes, |
393 | ever changes, | ||
394 | .Nm | 385 | .Nm |
395 | warns about this and disables password authentication to prevent a | 386 | warns about this and disables password authentication to prevent a |
396 | trojan horse from getting the user's password. | 387 | trojan horse from getting the user's password. |
397 | Another purpose of | 388 | Another purpose of this mechanism is to prevent man-in-the-middle attacks |
398 | this mechanism is to prevent man-in-the-middle attacks which could | 389 | which could otherwise be used to circumvent the encryption. |
399 | otherwise be used to circumvent the encryption. | ||
400 | The | 390 | The |
401 | .Cm StrictHostKeyChecking | 391 | .Cm StrictHostKeyChecking |
402 | option can be used to prevent logins to machines whose | 392 | option can be used to prevent logins to machines whose |
@@ -404,8 +394,22 @@ host key is not known or has changed. | |||
404 | .Pp | 394 | .Pp |
405 | The options are as follows: | 395 | The options are as follows: |
406 | .Bl -tag -width Ds | 396 | .Bl -tag -width Ds |
407 | .It Fl a | 397 | .It Fl 1 |
408 | Disables forwarding of the authentication agent connection. | 398 | Forces |
399 | .Nm | ||
400 | to try protocol version 1 only. | ||
401 | .It Fl 2 | ||
402 | Forces | ||
403 | .Nm | ||
404 | to try protocol version 2 only. | ||
405 | .It Fl 4 | ||
406 | Forces | ||
407 | .Nm | ||
408 | to use IPv4 addresses only. | ||
409 | .It Fl 6 | ||
410 | Forces | ||
411 | .Nm | ||
412 | to use IPv6 addresses only. | ||
409 | .It Fl A | 413 | .It Fl A |
410 | Enables forwarding of the authentication agent connection. | 414 | Enables forwarding of the authentication agent connection. |
411 | This can also be specified on a per-host basis in a configuration file. | 415 | This can also be specified on a per-host basis in a configuration file. |
@@ -417,10 +421,28 @@ can access the local agent through the forwarded connection. | |||
417 | An attacker cannot obtain key material from the agent, | 421 | An attacker cannot obtain key material from the agent, |
418 | however they can perform operations on the keys that enable them to | 422 | however they can perform operations on the keys that enable them to |
419 | authenticate using the identities loaded into the agent. | 423 | authenticate using the identities loaded into the agent. |
424 | .It Fl a | ||
425 | Disables forwarding of the authentication agent connection. | ||
420 | .It Fl b Ar bind_address | 426 | .It Fl b Ar bind_address |
421 | Specify the interface to transmit from on machines with multiple | 427 | Specify the interface to transmit from on machines with multiple |
422 | interfaces or aliased addresses. | 428 | interfaces or aliased addresses. |
423 | .It Fl c Ar blowfish|3des|des | 429 | .It Fl C |
430 | Requests compression of all data (including stdin, stdout, stderr, and | ||
431 | data for forwarded X11 and TCP/IP connections). | ||
432 | The compression algorithm is the same used by | ||
433 | .Xr gzip 1 , | ||
434 | and the | ||
435 | .Dq level | ||
436 | can be controlled by the | ||
437 | .Cm CompressionLevel | ||
438 | option for protocol version 1. | ||
439 | Compression is desirable on modem lines and other | ||
440 | slow connections, but will only slow down things on fast networks. | ||
441 | The default value can be set on a host-by-host basis in the | ||
442 | configuration files; see the | ||
443 | .Cm Compression | ||
444 | option. | ||
445 | .It Fl c Ar blowfish | 3des | des | ||
424 | Selects the cipher to use for encrypting the session. | 446 | Selects the cipher to use for encrypting the session. |
425 | .Ar 3des | 447 | .Ar 3des |
426 | is used by default. | 448 | is used by default. |
@@ -428,7 +450,7 @@ It is believed to be secure. | |||
428 | .Ar 3des | 450 | .Ar 3des |
429 | (triple-des) is an encrypt-decrypt-encrypt triple with three different keys. | 451 | (triple-des) is an encrypt-decrypt-encrypt triple with three different keys. |
430 | .Ar blowfish | 452 | .Ar blowfish |
431 | is a fast block cipher, it appears very secure and is much faster than | 453 | is a fast block cipher; it appears very secure and is much faster than |
432 | .Ar 3des . | 454 | .Ar 3des . |
433 | .Ar des | 455 | .Ar des |
434 | is only supported in the | 456 | is only supported in the |
@@ -444,18 +466,41 @@ be specified in order of preference. | |||
444 | See | 466 | See |
445 | .Cm Ciphers | 467 | .Cm Ciphers |
446 | for more information. | 468 | for more information. |
447 | .It Fl e Ar ch|^ch|none | 469 | .It Fl D Ar port |
470 | Specifies a local | ||
471 | .Dq dynamic | ||
472 | application-level port forwarding. | ||
473 | This works by allocating a socket to listen to | ||
474 | .Ar port | ||
475 | on the local side, and whenever a connection is made to this port, the | ||
476 | connection is forwarded over the secure channel, and the application | ||
477 | protocol is then used to determine where to connect to from the | ||
478 | remote machine. | ||
479 | Currently the SOCKS4 and SOCKS5 protocols are supported, and | ||
480 | .Nm | ||
481 | will act as a SOCKS server. | ||
482 | Only root can forward privileged ports. | ||
483 | Dynamic port forwardings can also be specified in the configuration file. | ||
484 | .It Fl e Ar ch | ^ch | none | ||
448 | Sets the escape character for sessions with a pty (default: | 485 | Sets the escape character for sessions with a pty (default: |
449 | .Ql ~ ) . | 486 | .Ql ~ ) . |
450 | The escape character is only recognized at the beginning of a line. | 487 | The escape character is only recognized at the beginning of a line. |
451 | The escape character followed by a dot | 488 | The escape character followed by a dot |
452 | .Pq Ql \&. | 489 | .Pq Ql \&. |
453 | closes the connection, followed | 490 | closes the connection; |
454 | by control-Z suspends the connection, and followed by itself sends the | 491 | followed by control-Z suspends the connection; |
455 | escape character once. | 492 | and followed by itself sends the escape character once. |
456 | Setting the character to | 493 | Setting the character to |
457 | .Dq none | 494 | .Dq none |
458 | disables any escapes and makes the session fully transparent. | 495 | disables any escapes and makes the session fully transparent. |
496 | .It Fl F Ar configfile | ||
497 | Specifies an alternative per-user configuration file. | ||
498 | If a configuration file is given on the command line, | ||
499 | the system-wide configuration file | ||
500 | .Pq Pa /etc/ssh/ssh_config | ||
501 | will be ignored. | ||
502 | The default for the per-user configuration file is | ||
503 | .Pa $HOME/.ssh/config . | ||
459 | .It Fl f | 504 | .It Fl f |
460 | Requests | 505 | Requests |
461 | .Nm | 506 | .Nm |
@@ -471,6 +516,12 @@ something like | |||
471 | .Ic ssh -f host xterm . | 516 | .Ic ssh -f host xterm . |
472 | .It Fl g | 517 | .It Fl g |
473 | Allows remote hosts to connect to local forwarded ports. | 518 | Allows remote hosts to connect to local forwarded ports. |
519 | .It Fl I Ar smartcard_device | ||
520 | Specifies which smartcard device to use. | ||
521 | The argument is the device | ||
522 | .Nm | ||
523 | should use to communicate with a smartcard used for storing the user's | ||
524 | private RSA key. | ||
474 | .It Fl i Ar identity_file | 525 | .It Fl i Ar identity_file |
475 | Selects a file from which the identity (private key) for | 526 | Selects a file from which the identity (private key) for |
476 | RSA or DSA authentication is read. | 527 | RSA or DSA authentication is read. |
@@ -487,15 +538,33 @@ It is possible to have multiple | |||
487 | .Fl i | 538 | .Fl i |
488 | options (and multiple identities specified in | 539 | options (and multiple identities specified in |
489 | configuration files). | 540 | configuration files). |
490 | .It Fl I Ar smartcard_device | ||
491 | Specifies which smartcard device to use. | ||
492 | The argument is the device | ||
493 | .Nm | ||
494 | should use to communicate with a smartcard used for storing the user's | ||
495 | private RSA key. | ||
496 | .It Fl k | 541 | .It Fl k |
497 | Disables forwarding of Kerberos tickets. | 542 | Disables forwarding (delegation) of GSSAPI credentials to the server. |
498 | This may also be specified on a per-host basis in the configuration file. | 543 | .It Fl L Xo |
544 | .Sm off | ||
545 | .Ar port : host : hostport | ||
546 | .Sm on | ||
547 | .Xc | ||
548 | Specifies that the given port on the local (client) host is to be | ||
549 | forwarded to the given host and port on the remote side. | ||
550 | This works by allocating a socket to listen to | ||
551 | .Ar port | ||
552 | on the local side, and whenever a connection is made to this port, the | ||
553 | connection is forwarded over the secure channel, and a connection is | ||
554 | made to | ||
555 | .Ar host | ||
556 | port | ||
557 | .Ar hostport | ||
558 | from the remote machine. | ||
559 | Port forwardings can also be specified in the configuration file. | ||
560 | Only root can forward privileged ports. | ||
561 | IPv6 addresses can be specified with an alternative syntax: | ||
562 | .Sm off | ||
563 | .Xo | ||
564 | .Ar port No / Ar host No / | ||
565 | .Ar hostport . | ||
566 | .Xc | ||
567 | .Sm on | ||
499 | .It Fl l Ar login_name | 568 | .It Fl l Ar login_name |
500 | Specifies the user to log in as on the remote machine. | 569 | Specifies the user to log in as on the remote machine. |
501 | This also may be specified on a per-host basis in the configuration file. | 570 | This also may be specified on a per-host basis in the configuration file. |
@@ -506,6 +575,10 @@ be specified in order of preference. | |||
506 | See the | 575 | See the |
507 | .Cm MACs | 576 | .Cm MACs |
508 | keyword for more information. | 577 | keyword for more information. |
578 | .It Fl N | ||
579 | Do not execute a remote command. | ||
580 | This is useful for just forwarding ports | ||
581 | (protocol version 2 only). | ||
509 | .It Fl n | 582 | .It Fl n |
510 | Redirects stdin from | 583 | Redirects stdin from |
511 | .Pa /dev/null | 584 | .Pa /dev/null |
@@ -526,14 +599,66 @@ program will be put in the background. | |||
526 | needs to ask for a password or passphrase; see also the | 599 | needs to ask for a password or passphrase; see also the |
527 | .Fl f | 600 | .Fl f |
528 | option.) | 601 | option.) |
529 | .It Fl N | ||
530 | Do not execute a remote command. | ||
531 | This is useful for just forwarding ports | ||
532 | (protocol version 2 only). | ||
533 | .It Fl o Ar option | 602 | .It Fl o Ar option |
534 | Can be used to give options in the format used in the configuration file. | 603 | Can be used to give options in the format used in the configuration file. |
535 | This is useful for specifying options for which there is no separate | 604 | This is useful for specifying options for which there is no separate |
536 | command-line flag. | 605 | command-line flag. |
606 | For full details of the options listed below, and their possible values, see | ||
607 | .Xr ssh_config 5 . | ||
608 | .Pp | ||
609 | .Bl -tag -width Ds -offset indent -compact | ||
610 | .It AddressFamily | ||
611 | .It BatchMode | ||
612 | .It BindAddress | ||
613 | .It ChallengeResponseAuthentication | ||
614 | .It CheckHostIP | ||
615 | .It Cipher | ||
616 | .It Ciphers | ||
617 | .It ClearAllForwardings | ||
618 | .It Compression | ||
619 | .It CompressionLevel | ||
620 | .It ConnectionAttempts | ||
621 | .It ConnectionTimeout | ||
622 | .It DynamicForward | ||
623 | .It EscapeChar | ||
624 | .It ForwardAgent | ||
625 | .It ForwardX11 | ||
626 | .It ForwardX11Trusted | ||
627 | .It GatewayPorts | ||
628 | .It GlobalKnownHostsFile | ||
629 | .It GSSAPIAuthentication | ||
630 | .It GSSAPIDelegateCredentials | ||
631 | .It Host | ||
632 | .It HostbasedAuthentication | ||
633 | .It HostKeyAlgorithms | ||
634 | .It HostKeyAlias | ||
635 | .It HostName | ||
636 | .It IdentityFile | ||
637 | .It LocalForward | ||
638 | .It LogLevel | ||
639 | .It MACs | ||
640 | .It NoHostAuthenticationForLocalhost | ||
641 | .It NumberOfPasswordPrompts | ||
642 | .It PasswordAuthentication | ||
643 | .It Port | ||
644 | .It PreferredAuthentications | ||
645 | .It Protocol | ||
646 | .It ProxyCommand | ||
647 | .It PubkeyAuthentication | ||
648 | .It RemoteForward | ||
649 | .It RhostsRSAAuthentication | ||
650 | .It RSAAuthentication | ||
651 | .It ServerAliveInterval | ||
652 | .It ServerAliveCountMax | ||
653 | .It SmartcardDevice | ||
654 | .It StrictHostKeyChecking | ||
655 | .It TCPKeepAlive | ||
656 | .It UsePrivilegedPort | ||
657 | .It User | ||
658 | .It UserKnownHostsFile | ||
659 | .It VerifyHostKeyDNS | ||
660 | .It XAuthLocation | ||
661 | .El | ||
537 | .It Fl p Ar port | 662 | .It Fl p Ar port |
538 | Port to connect to on the remote host. | 663 | Port to connect to on the remote host. |
539 | This can be specified on a | 664 | This can be specified on a |
@@ -541,11 +666,40 @@ per-host basis in the configuration file. | |||
541 | .It Fl q | 666 | .It Fl q |
542 | Quiet mode. | 667 | Quiet mode. |
543 | Causes all warning and diagnostic messages to be suppressed. | 668 | Causes all warning and diagnostic messages to be suppressed. |
669 | .It Fl R Xo | ||
670 | .Sm off | ||
671 | .Ar port : host : hostport | ||
672 | .Sm on | ||
673 | .Xc | ||
674 | Specifies that the given port on the remote (server) host is to be | ||
675 | forwarded to the given host and port on the local side. | ||
676 | This works by allocating a socket to listen to | ||
677 | .Ar port | ||
678 | on the remote side, and whenever a connection is made to this port, the | ||
679 | connection is forwarded over the secure channel, and a connection is | ||
680 | made to | ||
681 | .Ar host | ||
682 | port | ||
683 | .Ar hostport | ||
684 | from the local machine. | ||
685 | Port forwardings can also be specified in the configuration file. | ||
686 | Privileged ports can be forwarded only when | ||
687 | logging in as root on the remote machine. | ||
688 | IPv6 addresses can be specified with an alternative syntax: | ||
689 | .Sm off | ||
690 | .Xo | ||
691 | .Ar port No / Ar host No / | ||
692 | .Ar hostport . | ||
693 | .Xc | ||
694 | .Sm on | ||
544 | .It Fl s | 695 | .It Fl s |
545 | May be used to request invocation of a subsystem on the remote system. | 696 | May be used to request invocation of a subsystem on the remote system. |
546 | Subsystems are a feature of the SSH2 protocol which facilitate the use | 697 | Subsystems are a feature of the SSH2 protocol which facilitate the use |
547 | of SSH as a secure transport for other applications (eg. sftp). | 698 | of SSH as a secure transport for other applications (eg.\& |
699 | .Xr sftp 1 ) . | ||
548 | The subsystem is specified as the remote command. | 700 | The subsystem is specified as the remote command. |
701 | .It Fl T | ||
702 | Disable pseudo-tty allocation. | ||
549 | .It Fl t | 703 | .It Fl t |
550 | Force pseudo-tty allocation. | 704 | Force pseudo-tty allocation. |
551 | This can be used to execute arbitrary | 705 | This can be used to execute arbitrary |
@@ -556,8 +710,8 @@ Multiple | |||
556 | options force tty allocation, even if | 710 | options force tty allocation, even if |
557 | .Nm | 711 | .Nm |
558 | has no local tty. | 712 | has no local tty. |
559 | .It Fl T | 713 | .It Fl V |
560 | Disable pseudo-tty allocation. | 714 | Display the version number and exit. |
561 | .It Fl v | 715 | .It Fl v |
562 | Verbose mode. | 716 | Verbose mode. |
563 | Causes | 717 | Causes |
@@ -569,10 +723,6 @@ Multiple | |||
569 | .Fl v | 723 | .Fl v |
570 | options increase the verbosity. | 724 | options increase the verbosity. |
571 | The maximum is 3. | 725 | The maximum is 3. |
572 | .It Fl V | ||
573 | Display the version number and exit. | ||
574 | .It Fl x | ||
575 | Disables X11 forwarding. | ||
576 | .It Fl X | 726 | .It Fl X |
577 | Enables X11 forwarding. | 727 | Enables X11 forwarding. |
578 | This can also be specified on a per-host basis in a configuration file. | 728 | This can also be specified on a per-host basis in a configuration file. |
@@ -582,94 +732,10 @@ Users with the ability to bypass file permissions on the remote host | |||
582 | (for the user's X authorization database) | 732 | (for the user's X authorization database) |
583 | can access the local X11 display through the forwarded connection. | 733 | can access the local X11 display through the forwarded connection. |
584 | An attacker may then be able to perform activities such as keystroke monitoring. | 734 | An attacker may then be able to perform activities such as keystroke monitoring. |
585 | .It Fl C | 735 | .It Fl x |
586 | Requests compression of all data (including stdin, stdout, stderr, and | 736 | Disables X11 forwarding. |
587 | data for forwarded X11 and TCP/IP connections). | 737 | .It Fl Y |
588 | The compression algorithm is the same used by | 738 | Enables trusted X11 forwarding. |
589 | .Xr gzip 1 , | ||
590 | and the | ||
591 | .Dq level | ||
592 | can be controlled by the | ||
593 | .Cm CompressionLevel | ||
594 | option for protocol version 1. | ||
595 | Compression is desirable on modem lines and other | ||
596 | slow connections, but will only slow down things on fast networks. | ||
597 | The default value can be set on a host-by-host basis in the | ||
598 | configuration files; see the | ||
599 | .Cm Compression | ||
600 | option. | ||
601 | .It Fl F Ar configfile | ||
602 | Specifies an alternative per-user configuration file. | ||
603 | If a configuration file is given on the command line, | ||
604 | the system-wide configuration file | ||
605 | .Pq Pa /etc/ssh/ssh_config | ||
606 | will be ignored. | ||
607 | The default for the per-user configuration file is | ||
608 | .Pa $HOME/.ssh/config . | ||
609 | .It Fl L Ar port:host:hostport | ||
610 | Specifies that the given port on the local (client) host is to be | ||
611 | forwarded to the given host and port on the remote side. | ||
612 | This works by allocating a socket to listen to | ||
613 | .Ar port | ||
614 | on the local side, and whenever a connection is made to this port, the | ||
615 | connection is forwarded over the secure channel, and a connection is | ||
616 | made to | ||
617 | .Ar host | ||
618 | port | ||
619 | .Ar hostport | ||
620 | from the remote machine. | ||
621 | Port forwardings can also be specified in the configuration file. | ||
622 | Only root can forward privileged ports. | ||
623 | IPv6 addresses can be specified with an alternative syntax: | ||
624 | .Ar port/host/hostport | ||
625 | .It Fl R Ar port:host:hostport | ||
626 | Specifies that the given port on the remote (server) host is to be | ||
627 | forwarded to the given host and port on the local side. | ||
628 | This works by allocating a socket to listen to | ||
629 | .Ar port | ||
630 | on the remote side, and whenever a connection is made to this port, the | ||
631 | connection is forwarded over the secure channel, and a connection is | ||
632 | made to | ||
633 | .Ar host | ||
634 | port | ||
635 | .Ar hostport | ||
636 | from the local machine. | ||
637 | Port forwardings can also be specified in the configuration file. | ||
638 | Privileged ports can be forwarded only when | ||
639 | logging in as root on the remote machine. | ||
640 | IPv6 addresses can be specified with an alternative syntax: | ||
641 | .Ar port/host/hostport | ||
642 | .It Fl D Ar port | ||
643 | Specifies a local | ||
644 | .Dq dynamic | ||
645 | application-level port forwarding. | ||
646 | This works by allocating a socket to listen to | ||
647 | .Ar port | ||
648 | on the local side, and whenever a connection is made to this port, the | ||
649 | connection is forwarded over the secure channel, and the application | ||
650 | protocol is then used to determine where to connect to from the | ||
651 | remote machine. | ||
652 | Currently the SOCKS4 and SOCKS5 protocols are supported, and | ||
653 | .Nm | ||
654 | will act as a SOCKS server. | ||
655 | Only root can forward privileged ports. | ||
656 | Dynamic port forwardings can also be specified in the configuration file. | ||
657 | .It Fl 1 | ||
658 | Forces | ||
659 | .Nm | ||
660 | to try protocol version 1 only. | ||
661 | .It Fl 2 | ||
662 | Forces | ||
663 | .Nm | ||
664 | to try protocol version 2 only. | ||
665 | .It Fl 4 | ||
666 | Forces | ||
667 | .Nm | ||
668 | to use IPv4 addresses only. | ||
669 | .It Fl 6 | ||
670 | Forces | ||
671 | .Nm | ||
672 | to use IPv6 addresses only. | ||
673 | .El | 739 | .El |
674 | .Sh CONFIGURATION FILES | 740 | .Sh CONFIGURATION FILES |
675 | .Nm | 741 | .Nm |
@@ -680,7 +746,7 @@ The file format and configuration options are described in | |||
680 | .Sh ENVIRONMENT | 746 | .Sh ENVIRONMENT |
681 | .Nm | 747 | .Nm |
682 | will normally set the following environment variables: | 748 | will normally set the following environment variables: |
683 | .Bl -tag -width Ds | 749 | .Bl -tag -width LOGNAME |
684 | .It Ev DISPLAY | 750 | .It Ev DISPLAY |
685 | The | 751 | The |
686 | .Ev DISPLAY | 752 | .Ev DISPLAY |
@@ -690,7 +756,7 @@ It is automatically set by | |||
690 | to point to a value of the form | 756 | to point to a value of the form |
691 | .Dq hostname:n | 757 | .Dq hostname:n |
692 | where hostname indicates | 758 | where hostname indicates |
693 | the host where the shell runs, and n is an integer >= 1. | 759 | the host where the shell runs, and n is an integer \*(Ge 1. |
694 | .Nm | 760 | .Nm |
695 | uses this special value to forward X11 connections over the secure | 761 | uses this special value to forward X11 connections over the secure |
696 | channel. | 762 | channel. |
@@ -768,7 +834,7 @@ and adds lines of the format | |||
768 | .Dq VARNAME=value | 834 | .Dq VARNAME=value |
769 | to the environment if the file exists and if users are allowed to | 835 | to the environment if the file exists and if users are allowed to |
770 | change their environment. | 836 | change their environment. |
771 | See the | 837 | For more information, see the |
772 | .Cm PermitUserEnvironment | 838 | .Cm PermitUserEnvironment |
773 | option in | 839 | option in |
774 | .Xr sshd_config 5 . | 840 | .Xr sshd_config 5 . |
@@ -797,7 +863,7 @@ Contains the public key for authentication (public part of the | |||
797 | identity file in human-readable form). | 863 | identity file in human-readable form). |
798 | The contents of the | 864 | The contents of the |
799 | .Pa $HOME/.ssh/identity.pub | 865 | .Pa $HOME/.ssh/identity.pub |
800 | file should be added to | 866 | file should be added to the file |
801 | .Pa $HOME/.ssh/authorized_keys | 867 | .Pa $HOME/.ssh/authorized_keys |
802 | on all machines | 868 | on all machines |
803 | where the user wishes to log in using protocol version 1 RSA authentication. | 869 | where the user wishes to log in using protocol version 1 RSA authentication. |
@@ -823,7 +889,8 @@ Lists the public keys (RSA/DSA) that can be used for logging in as this user. | |||
823 | The format of this file is described in the | 889 | The format of this file is described in the |
824 | .Xr sshd 8 | 890 | .Xr sshd 8 |
825 | manual page. | 891 | manual page. |
826 | In the simplest form the format is the same as the .pub | 892 | In the simplest form the format is the same as the |
893 | .Pa .pub | ||
827 | identity files. | 894 | identity files. |
828 | This file is not highly sensitive, but the recommended | 895 | This file is not highly sensitive, but the recommended |
829 | permissions are read/write for the user, and not accessible by others. | 896 | permissions are read/write for the user, and not accessible by others. |
@@ -839,7 +906,7 @@ by spaces): system name, public key and optional comment field. | |||
839 | When different names are used | 906 | When different names are used |
840 | for the same machine, all such names should be listed, separated by | 907 | for the same machine, all such names should be listed, separated by |
841 | commas. | 908 | commas. |
842 | The format is described on the | 909 | The format is described in the |
843 | .Xr sshd 8 | 910 | .Xr sshd 8 |
844 | manual page. | 911 | manual page. |
845 | .Pp | 912 | .Pp |
@@ -879,7 +946,7 @@ By default | |||
879 | is not setuid root. | 946 | is not setuid root. |
880 | .It Pa $HOME/.rhosts | 947 | .It Pa $HOME/.rhosts |
881 | This file is used in | 948 | This file is used in |
882 | .Pa \&.rhosts | 949 | .Em rhosts |
883 | authentication to list the | 950 | authentication to list the |
884 | host/user pairs that are permitted to log in. | 951 | host/user pairs that are permitted to log in. |
885 | (Note that this file is | 952 | (Note that this file is |
@@ -901,7 +968,9 @@ accessible by others. | |||
901 | Note that by default | 968 | Note that by default |
902 | .Xr sshd 8 | 969 | .Xr sshd 8 |
903 | will be installed so that it requires successful RSA host | 970 | will be installed so that it requires successful RSA host |
904 | authentication before permitting \s+2.\s0rhosts authentication. | 971 | authentication before permitting |
972 | .Em rhosts | ||
973 | authentication. | ||
905 | If the server machine does not have the client's host key in | 974 | If the server machine does not have the client's host key in |
906 | .Pa /etc/ssh/ssh_known_hosts , | 975 | .Pa /etc/ssh/ssh_known_hosts , |
907 | it can be stored in | 976 | it can be stored in |
@@ -912,21 +981,20 @@ will automatically add the host key to | |||
912 | .Pa $HOME/.ssh/known_hosts . | 981 | .Pa $HOME/.ssh/known_hosts . |
913 | .It Pa $HOME/.shosts | 982 | .It Pa $HOME/.shosts |
914 | This file is used exactly the same way as | 983 | This file is used exactly the same way as |
915 | .Pa \&.rhosts . | 984 | .Pa .rhosts . |
916 | The purpose for | 985 | The purpose for |
917 | having this file is to be able to use rhosts authentication with | 986 | having this file is to be able to use rhosts authentication with |
918 | .Nm | 987 | .Nm |
919 | without permitting login with | 988 | without permitting login with |
920 | .Nm rlogin | 989 | .Xr rlogin |
921 | or | 990 | or |
922 | .Xr rsh 1 . | 991 | .Xr rsh 1 . |
923 | .It Pa /etc/hosts.equiv | 992 | .It Pa /etc/hosts.equiv |
924 | This file is used during | 993 | This file is used during |
925 | .Pa \&.rhosts | 994 | .Em rhosts |
926 | authentication. | 995 | authentication. |
927 | It contains | 996 | It contains |
928 | canonical hosts names, one per line (the full format is described on | 997 | canonical hosts names, one per line (the full format is described in the |
929 | the | ||
930 | .Xr sshd 8 | 998 | .Xr sshd 8 |
931 | manual page). | 999 | manual page). |
932 | If the client host is found in this file, login is | 1000 | If the client host is found in this file, login is |
@@ -966,6 +1034,7 @@ above. | |||
966 | exits with the exit status of the remote command or with 255 | 1034 | exits with the exit status of the remote command or with 255 |
967 | if an error occurred. | 1035 | if an error occurred. |
968 | .Sh SEE ALSO | 1036 | .Sh SEE ALSO |
1037 | .Xr gzip 1 , | ||
969 | .Xr rsh 1 , | 1038 | .Xr rsh 1 , |
970 | .Xr scp 1 , | 1039 | .Xr scp 1 , |
971 | .Xr sftp 1 , | 1040 | .Xr sftp 1 , |
@@ -973,6 +1042,7 @@ if an error occurred. | |||
973 | .Xr ssh-agent 1 , | 1042 | .Xr ssh-agent 1 , |
974 | .Xr ssh-keygen 1 , | 1043 | .Xr ssh-keygen 1 , |
975 | .Xr telnet 1 , | 1044 | .Xr telnet 1 , |
1045 | .Xr hosts.equiv 5 , | ||
976 | .Xr ssh_config 5 , | 1046 | .Xr ssh_config 5 , |
977 | .Xr ssh-keysign 8 , | 1047 | .Xr ssh-keysign 8 , |
978 | .Xr sshd 8 | 1048 | .Xr sshd 8 |
@@ -13,7 +13,7 @@ | |||
13 | * called by a name other than "ssh" or "Secure Shell". | 13 | * called by a name other than "ssh" or "Secure Shell". |
14 | * | 14 | * |
15 | * Copyright (c) 1999 Niels Provos. All rights reserved. | 15 | * Copyright (c) 1999 Niels Provos. All rights reserved. |
16 | * Copyright (c) 2000, 2001, 2002 Markus Friedl. All rights reserved. | 16 | * Copyright (c) 2000, 2001, 2002, 2003 Markus Friedl. All rights reserved. |
17 | * | 17 | * |
18 | * Modified to work with SSL by Niels Provos <provos@citi.umich.edu> | 18 | * Modified to work with SSL by Niels Provos <provos@citi.umich.edu> |
19 | * in Canada (German citizen). | 19 | * in Canada (German citizen). |
@@ -40,7 +40,7 @@ | |||
40 | */ | 40 | */ |
41 | 41 | ||
42 | #include "includes.h" | 42 | #include "includes.h" |
43 | RCSID("$OpenBSD: ssh.c,v 1.201 2003/09/01 18:15:50 markus Exp $"); | 43 | RCSID("$OpenBSD: ssh.c,v 1.206 2003/12/16 15:49:51 markus Exp $"); |
44 | 44 | ||
45 | #include <openssl/evp.h> | 45 | #include <openssl/evp.h> |
46 | #include <openssl/err.h> | 46 | #include <openssl/err.h> |
@@ -155,6 +155,7 @@ usage(void) | |||
155 | fprintf(stderr, " -A Enable authentication agent forwarding.\n"); | 155 | fprintf(stderr, " -A Enable authentication agent forwarding.\n"); |
156 | fprintf(stderr, " -a Disable authentication agent forwarding (default).\n"); | 156 | fprintf(stderr, " -a Disable authentication agent forwarding (default).\n"); |
157 | fprintf(stderr, " -X Enable X11 connection forwarding.\n"); | 157 | fprintf(stderr, " -X Enable X11 connection forwarding.\n"); |
158 | fprintf(stderr, " -Y Enable trusted X11 connection forwarding.\n"); | ||
158 | fprintf(stderr, " -x Disable X11 connection forwarding (default).\n"); | 159 | fprintf(stderr, " -x Disable X11 connection forwarding (default).\n"); |
159 | fprintf(stderr, " -i file Identity for public key authentication " | 160 | fprintf(stderr, " -i file Identity for public key authentication " |
160 | "(default: ~/.ssh/identity)\n"); | 161 | "(default: ~/.ssh/identity)\n"); |
@@ -204,7 +205,7 @@ main(int ac, char **av) | |||
204 | int i, opt, exit_status; | 205 | int i, opt, exit_status; |
205 | u_short fwd_port, fwd_host_port; | 206 | u_short fwd_port, fwd_host_port; |
206 | char sfwd_port[6], sfwd_host_port[6]; | 207 | char sfwd_port[6], sfwd_host_port[6]; |
207 | char *p, *cp, buf[256]; | 208 | char *p, *cp, *line, buf[256]; |
208 | struct stat st; | 209 | struct stat st; |
209 | struct passwd *pw; | 210 | struct passwd *pw; |
210 | int dummy; | 211 | int dummy; |
@@ -220,7 +221,7 @@ main(int ac, char **av) | |||
220 | */ | 221 | */ |
221 | original_real_uid = getuid(); | 222 | original_real_uid = getuid(); |
222 | original_effective_uid = geteuid(); | 223 | original_effective_uid = geteuid(); |
223 | 224 | ||
224 | /* | 225 | /* |
225 | * Use uid-swapping to give up root privileges for the duration of | 226 | * Use uid-swapping to give up root privileges for the duration of |
226 | * option processing. We will re-instantiate the rights when we are | 227 | * option processing. We will re-instantiate the rights when we are |
@@ -264,7 +265,7 @@ main(int ac, char **av) | |||
264 | 265 | ||
265 | again: | 266 | again: |
266 | while ((opt = getopt(ac, av, | 267 | while ((opt = getopt(ac, av, |
267 | "1246ab:c:e:fgi:kl:m:no:p:qstvxACD:F:I:L:NPR:TVX")) != -1) { | 268 | "1246ab:c:e:fgi:kl:m:no:p:qstvxACD:F:I:L:NPR:TVXY")) != -1) { |
268 | switch (opt) { | 269 | switch (opt) { |
269 | case '1': | 270 | case '1': |
270 | options.protocol = SSH_PROTO_1; | 271 | options.protocol = SSH_PROTO_1; |
@@ -291,6 +292,10 @@ again: | |||
291 | case 'X': | 292 | case 'X': |
292 | options.forward_x11 = 1; | 293 | options.forward_x11 = 1; |
293 | break; | 294 | break; |
295 | case 'Y': | ||
296 | options.forward_x11 = 1; | ||
297 | options.forward_x11_trusted = 1; | ||
298 | break; | ||
294 | case 'g': | 299 | case 'g': |
295 | options.gateway_ports = 1; | 300 | options.gateway_ports = 1; |
296 | break; | 301 | break; |
@@ -304,7 +309,7 @@ again: | |||
304 | options.forward_agent = 1; | 309 | options.forward_agent = 1; |
305 | break; | 310 | break; |
306 | case 'k': | 311 | case 'k': |
307 | /* ignored for backward compatibility */ | 312 | options.gss_deleg_creds = 0; |
308 | break; | 313 | break; |
309 | case 'i': | 314 | case 'i': |
310 | if (stat(optarg, &st) < 0) { | 315 | if (stat(optarg, &st) < 0) { |
@@ -459,9 +464,11 @@ again: | |||
459 | break; | 464 | break; |
460 | case 'o': | 465 | case 'o': |
461 | dummy = 1; | 466 | dummy = 1; |
467 | line = xstrdup(optarg); | ||
462 | if (process_config_line(&options, host ? host : "", | 468 | if (process_config_line(&options, host ? host : "", |
463 | optarg, "command-line", 0, &dummy) != 0) | 469 | line, "command-line", 0, &dummy) != 0) |
464 | exit(1); | 470 | exit(1); |
471 | xfree(line); | ||
465 | break; | 472 | break; |
466 | case 's': | 473 | case 's': |
467 | subsystem_flag = 1; | 474 | subsystem_flag = 1; |
@@ -712,7 +719,7 @@ again: | |||
712 | packet_close(); | 719 | packet_close(); |
713 | 720 | ||
714 | /* | 721 | /* |
715 | * Send SIGHUP to proxy command if used. We don't wait() in | 722 | * Send SIGHUP to proxy command if used. We don't wait() in |
716 | * case it hangs and instead rely on init to reap the child | 723 | * case it hangs and instead rely on init to reap the child |
717 | */ | 724 | */ |
718 | if (proxy_command_pid > 1) | 725 | if (proxy_command_pid > 1) |
@@ -721,19 +728,25 @@ again: | |||
721 | return exit_status; | 728 | return exit_status; |
722 | } | 729 | } |
723 | 730 | ||
731 | #define SSH_X11_PROTO "MIT-MAGIC-COOKIE-1" | ||
732 | |||
724 | static void | 733 | static void |
725 | x11_get_proto(char **_proto, char **_data) | 734 | x11_get_proto(char **_proto, char **_data) |
726 | { | 735 | { |
736 | char cmd[1024]; | ||
727 | char line[512]; | 737 | char line[512]; |
738 | char xdisplay[512]; | ||
728 | static char proto[512], data[512]; | 739 | static char proto[512], data[512]; |
729 | FILE *f; | 740 | FILE *f; |
730 | int got_data = 0, i; | 741 | int got_data = 0, generated = 0, do_unlink = 0, i; |
731 | char *display; | 742 | char *display, *xauthdir, *xauthfile; |
732 | struct stat st; | 743 | struct stat st; |
733 | 744 | ||
745 | xauthdir = xauthfile = NULL; | ||
734 | *_proto = proto; | 746 | *_proto = proto; |
735 | *_data = data; | 747 | *_data = data; |
736 | proto[0] = data[0] = '\0'; | 748 | proto[0] = data[0] = '\0'; |
749 | |||
737 | if (!options.xauth_location || | 750 | if (!options.xauth_location || |
738 | (stat(options.xauth_location, &st) == -1)) { | 751 | (stat(options.xauth_location, &st) == -1)) { |
739 | debug("No xauth program."); | 752 | debug("No xauth program."); |
@@ -742,28 +755,59 @@ x11_get_proto(char **_proto, char **_data) | |||
742 | debug("x11_get_proto: DISPLAY not set"); | 755 | debug("x11_get_proto: DISPLAY not set"); |
743 | return; | 756 | return; |
744 | } | 757 | } |
745 | /* Try to get Xauthority information for the display. */ | 758 | /* |
746 | if (strncmp(display, "localhost:", 10) == 0) | 759 | * Handle FamilyLocal case where $DISPLAY does |
747 | /* | 760 | * not match an authorization entry. For this we |
748 | * Handle FamilyLocal case where $DISPLAY does | 761 | * just try "xauth list unix:displaynum.screennum". |
749 | * not match an authorization entry. For this we | 762 | * XXX: "localhost" match to determine FamilyLocal |
750 | * just try "xauth list unix:displaynum.screennum". | 763 | * is not perfect. |
751 | * XXX: "localhost" match to determine FamilyLocal | 764 | */ |
752 | * is not perfect. | 765 | if (strncmp(display, "localhost:", 10) == 0) { |
753 | */ | 766 | snprintf(xdisplay, sizeof(xdisplay), "unix:%s", |
754 | snprintf(line, sizeof line, "%s list unix:%s 2>" | 767 | display + 10); |
755 | _PATH_DEVNULL, options.xauth_location, display+10); | 768 | display = xdisplay; |
756 | else | 769 | } |
757 | snprintf(line, sizeof line, "%s list %.200s 2>" | 770 | if (options.forward_x11_trusted == 0) { |
758 | _PATH_DEVNULL, options.xauth_location, display); | 771 | xauthdir = xmalloc(MAXPATHLEN); |
759 | debug2("x11_get_proto: %s", line); | 772 | xauthfile = xmalloc(MAXPATHLEN); |
760 | f = popen(line, "r"); | 773 | strlcpy(xauthdir, "/tmp/ssh-XXXXXXXXXX", MAXPATHLEN); |
774 | if (mkdtemp(xauthdir) != NULL) { | ||
775 | do_unlink = 1; | ||
776 | snprintf(xauthfile, MAXPATHLEN, "%s/xauthfile", | ||
777 | xauthdir); | ||
778 | snprintf(cmd, sizeof(cmd), | ||
779 | "%s -f %s generate %s " SSH_X11_PROTO | ||
780 | " untrusted timeout 120 2>" _PATH_DEVNULL, | ||
781 | options.xauth_location, xauthfile, display); | ||
782 | debug2("x11_get_proto: %s", cmd); | ||
783 | if (system(cmd) == 0) | ||
784 | generated = 1; | ||
785 | } | ||
786 | } | ||
787 | snprintf(cmd, sizeof(cmd), | ||
788 | "%s %s%s list %s . 2>" _PATH_DEVNULL, | ||
789 | options.xauth_location, | ||
790 | generated ? "-f " : "" , | ||
791 | generated ? xauthfile : "", | ||
792 | display); | ||
793 | debug2("x11_get_proto: %s", cmd); | ||
794 | f = popen(cmd, "r"); | ||
761 | if (f && fgets(line, sizeof(line), f) && | 795 | if (f && fgets(line, sizeof(line), f) && |
762 | sscanf(line, "%*s %511s %511s", proto, data) == 2) | 796 | sscanf(line, "%*s %511s %511s", proto, data) == 2) |
763 | got_data = 1; | 797 | got_data = 1; |
764 | if (f) | 798 | if (f) |
765 | pclose(f); | 799 | pclose(f); |
766 | } | 800 | } |
801 | |||
802 | if (do_unlink) { | ||
803 | unlink(xauthfile); | ||
804 | rmdir(xauthdir); | ||
805 | } | ||
806 | if (xauthdir) | ||
807 | xfree(xauthdir); | ||
808 | if (xauthfile) | ||
809 | xfree(xauthfile); | ||
810 | |||
767 | /* | 811 | /* |
768 | * If we didn't get authentication data, just make up some | 812 | * If we didn't get authentication data, just make up some |
769 | * data. The forwarding code will check the validity of the | 813 | * data. The forwarding code will check the validity of the |
@@ -775,12 +819,14 @@ x11_get_proto(char **_proto, char **_data) | |||
775 | if (!got_data) { | 819 | if (!got_data) { |
776 | u_int32_t rand = 0; | 820 | u_int32_t rand = 0; |
777 | 821 | ||
778 | logit("Warning: No xauth data; using fake authentication data for X11 forwarding."); | 822 | logit("Warning: No xauth data; " |
779 | strlcpy(proto, "MIT-MAGIC-COOKIE-1", sizeof proto); | 823 | "using fake authentication data for X11 forwarding."); |
824 | strlcpy(proto, SSH_X11_PROTO, sizeof proto); | ||
780 | for (i = 0; i < 16; i++) { | 825 | for (i = 0; i < 16; i++) { |
781 | if (i % 4 == 0) | 826 | if (i % 4 == 0) |
782 | rand = arc4random(); | 827 | rand = arc4random(); |
783 | snprintf(data + 2 * i, sizeof data - 2 * i, "%02x", rand & 0xff); | 828 | snprintf(data + 2 * i, sizeof data - 2 * i, "%02x", |
829 | rand & 0xff); | ||
784 | rand >>= 8; | 830 | rand >>= 8; |
785 | } | 831 | } |
786 | } | 832 | } |
@@ -983,16 +1029,13 @@ client_subsystem_reply(int type, u_int32_t seq, void *ctxt) | |||
983 | } | 1029 | } |
984 | 1030 | ||
985 | void | 1031 | void |
986 | client_global_request_reply(int type, u_int32_t seq, void *ctxt) | 1032 | client_global_request_reply_fwd(int type, u_int32_t seq, void *ctxt) |
987 | { | 1033 | { |
988 | int i; | 1034 | int i; |
989 | 1035 | ||
990 | i = client_global_request_id++; | 1036 | i = client_global_request_id++; |
991 | if (i >= options.num_remote_forwards) { | 1037 | if (i >= options.num_remote_forwards) |
992 | debug("client_global_request_reply: too many replies %d > %d", | ||
993 | i, options.num_remote_forwards); | ||
994 | return; | 1038 | return; |
995 | } | ||
996 | debug("remote forward %s for: listen %d, connect %s:%d", | 1039 | debug("remote forward %s for: listen %d, connect %s:%d", |
997 | type == SSH2_MSG_REQUEST_SUCCESS ? "success" : "failure", | 1040 | type == SSH2_MSG_REQUEST_SUCCESS ? "success" : "failure", |
998 | options.remote_forwards[i].port, | 1041 | options.remote_forwards[i].port, |
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssh.h,v 1.74 2003/09/01 13:52:18 markus Exp $ */ | 1 | /* $OpenBSD: ssh.h,v 1.75 2003/12/02 17:01:15 markus Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> | 4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> |
@@ -103,4 +103,7 @@ | |||
103 | /* Minimum modulus size (n) for RSA keys. */ | 103 | /* Minimum modulus size (n) for RSA keys. */ |
104 | #define SSH_RSA_MINIMUM_MODULUS_SIZE 768 | 104 | #define SSH_RSA_MINIMUM_MODULUS_SIZE 768 |
105 | 105 | ||
106 | /* Listen backlog for sshd, ssh-agent and forwarding sockets */ | ||
107 | #define SSH_LISTEN_BACKLOG 128 | ||
108 | |||
106 | #endif /* SSH_H */ | 109 | #endif /* SSH_H */ |
diff --git a/ssh_config.0 b/ssh_config.0 index 8c84502cb..40e9d3001 100644 --- a/ssh_config.0 +++ b/ssh_config.0 | |||
@@ -132,7 +132,8 @@ DESCRIPTION | |||
132 | Setting this option to ``yes'' in the global client configuration | 132 | Setting this option to ``yes'' in the global client configuration |
133 | file /etc/ssh/ssh_config enables the use of the helper program | 133 | file /etc/ssh/ssh_config enables the use of the helper program |
134 | ssh-keysign(8) during HostbasedAuthentication. The argument must | 134 | ssh-keysign(8) during HostbasedAuthentication. The argument must |
135 | be ``yes'' or ``no''. The default is ``no''. See ssh-keysign(8) | 135 | be ``yes'' or ``no''. The default is ``no''. This option should |
136 | be placed in the non-hostspecific section. See ssh-keysign(8) | ||
136 | for more information. | 137 | for more information. |
137 | 138 | ||
138 | EscapeChar | 139 | EscapeChar |
@@ -162,9 +163,22 @@ DESCRIPTION | |||
162 | 163 | ||
163 | X11 forwarding should be enabled with caution. Users with the | 164 | X11 forwarding should be enabled with caution. Users with the |
164 | ability to bypass file permissions on the remote host (for the | 165 | ability to bypass file permissions on the remote host (for the |
165 | user's X authorization database) can access the local X11 display | 166 | user's X11 authorization database) can access the local X11 dis- |
166 | through the forwarded connection. An attacker may then be able | 167 | play through the forwarded connection. An attacker may then be |
167 | to perform activities such as keystroke monitoring. | 168 | able to perform activities such as keystroke monitoring if the |
169 | ForwardX11Trusted option is also enabled. | ||
170 | |||
171 | ForwardX11Trusted | ||
172 | If the this option is set to ``yes'' then remote X11 clients will | ||
173 | have full access to the original X11 display. If this option is | ||
174 | set to ``no'' then remote X11 clients will be considered untrust- | ||
175 | ed and prevented from stealing or tampering with data belonging | ||
176 | to trusted X11 clients. | ||
177 | |||
178 | The default is ``no''. | ||
179 | |||
180 | See the X11 SECURITY extension specification for full details on | ||
181 | the restrictions imposed on untrusted clients. | ||
168 | 182 | ||
169 | GatewayPorts | 183 | GatewayPorts |
170 | Specifies whether remote hosts are allowed to connect to local | 184 | Specifies whether remote hosts are allowed to connect to local |
@@ -180,10 +194,9 @@ DESCRIPTION | |||
180 | of /etc/ssh/ssh_known_hosts. | 194 | of /etc/ssh/ssh_known_hosts. |
181 | 195 | ||
182 | GSSAPIAuthentication | 196 | GSSAPIAuthentication |
183 | Specifies whether authentication based on GSSAPI may be used, ei- | 197 | Specifies whether user authentication based on GSSAPI is allowed. |
184 | ther using the result of a successful key exchange, or using GSS- | 198 | The default is ``no''. Note that this option applies to protocol |
185 | API user authentication. The default is ``yes''. Note that this | 199 | version 2 only. |
186 | option applies to protocol version 2 only. | ||
187 | 200 | ||
188 | GSSAPIDelegateCredentials | 201 | GSSAPIDelegateCredentials |
189 | Forward (delegate) credentials to the server. The default is | 202 | Forward (delegate) credentials to the server. The default is |
@@ -225,19 +238,6 @@ DESCRIPTION | |||
225 | fied in configuration files; all these identities will be tried | 238 | fied in configuration files; all these identities will be tried |
226 | in sequence. | 239 | in sequence. |
227 | 240 | ||
228 | KeepAlive | ||
229 | Specifies whether the system should send TCP keepalive messages | ||
230 | to the other side. If they are sent, death of the connection or | ||
231 | crash of one of the machines will be properly noticed. However, | ||
232 | this means that connections will die if the route is down tem- | ||
233 | porarily, and some people find it annoying. | ||
234 | |||
235 | The default is ``yes'' (to send keepalives), and the client will | ||
236 | notice if the network goes down or the remote host dies. This is | ||
237 | important in scripts, and many users want it too. | ||
238 | |||
239 | To disable keepalives, the value should be set to ``no''. | ||
240 | |||
241 | LocalForward | 241 | LocalForward |
242 | Specifies that a TCP/IP port on the local machine be forwarded | 242 | Specifies that a TCP/IP port on the local machine be forwarded |
243 | over the secure channel to the specified host and port from the | 243 | over the secure channel to the specified host and port from the |
@@ -336,6 +336,31 @@ DESCRIPTION | |||
336 | tion agent is running. The default is ``yes''. Note that this | 336 | tion agent is running. The default is ``yes''. Note that this |
337 | option applies to protocol version 1 only. | 337 | option applies to protocol version 1 only. |
338 | 338 | ||
339 | ServerAliveInterval | ||
340 | Sets a timeout interval in seconds after which if no data has | ||
341 | been received from the server, ssh will send a message through | ||
342 | the encrypted channel to request a response from the server. The | ||
343 | default is 0, indicating that these messages will not be sent to | ||
344 | the server. This option applies to protocol version 2 only. | ||
345 | |||
346 | ServerAliveCountMax | ||
347 | Sets the number of server alive messages (see above) which may be | ||
348 | sent without ssh receiving any messages back from the server. If | ||
349 | this threshold is reached while server alive messages are being | ||
350 | sent, ssh will disconnect from the server, terminating the ses- | ||
351 | sion. It is important to note that the use of server alive mes- | ||
352 | sages is very different from TCPKeepAlive (below). The server | ||
353 | alive messages are sent through the encrypted channel and there- | ||
354 | fore will not be spoofable. The TCP keepalive option enabled by | ||
355 | TCPKeepAlive is spoofable. The server alive mechanism is valu- | ||
356 | able when the client or server depend on knowing when a connec- | ||
357 | tion has become inactive. | ||
358 | |||
359 | The default value is 3. If, for example, ServerAliveInterval | ||
360 | (above) is set to 15, and ServerAliveCountMax is left at the de- | ||
361 | fault, if the server becomes unresponsive ssh will disconnect af- | ||
362 | ter approximately 45 seconds. | ||
363 | |||
339 | SmartcardDevice | 364 | SmartcardDevice |
340 | Specifies which smartcard device to use. The argument to this | 365 | Specifies which smartcard device to use. The argument to this |
341 | keyword is the device ssh should use to communicate with a smart- | 366 | keyword is the device ssh should use to communicate with a smart- |
@@ -359,6 +384,20 @@ DESCRIPTION | |||
359 | The argument must be ``yes'', ``no'' or ``ask''. The default is | 384 | The argument must be ``yes'', ``no'' or ``ask''. The default is |
360 | ``ask''. | 385 | ``ask''. |
361 | 386 | ||
387 | TCPKeepAlive | ||
388 | Specifies whether the system should send TCP keepalive messages | ||
389 | to the other side. If they are sent, death of the connection or | ||
390 | crash of one of the machines will be properly noticed. However, | ||
391 | this means that connections will die if the route is down tem- | ||
392 | porarily, and some people find it annoying. | ||
393 | |||
394 | The default is ``yes'' (to send TCP keepalive messages), and the | ||
395 | client will notice if the network goes down or the remote host | ||
396 | dies. This is important in scripts, and many users want it too. | ||
397 | |||
398 | To disable TCP keepalive messages, the value should be set to | ||
399 | ``no''. | ||
400 | |||
362 | UsePrivilegedPort | 401 | UsePrivilegedPort |
363 | Specifies whether to use a privileged port for outgoing connec- | 402 | Specifies whether to use a privileged port for outgoing connec- |
364 | tions. The argument must be ``yes'' or ``no''. The default is | 403 | tions. The argument must be ``yes'' or ``no''. The default is |
@@ -377,8 +416,15 @@ DESCRIPTION | |||
377 | 416 | ||
378 | VerifyHostKeyDNS | 417 | VerifyHostKeyDNS |
379 | Specifies whether to verify the remote key using DNS and SSHFP | 418 | Specifies whether to verify the remote key using DNS and SSHFP |
380 | resource records. The default is ``no''. Note that this option | 419 | resource records. If this option is set to ``yes'', the client |
381 | applies to protocol version 2 only. | 420 | will implicitly trust keys that match a secure fingerprint from |
421 | DNS. Insecure fingerprints will be handled as if this option was | ||
422 | set to ``ask''. If this option is set to ``ask'', information on | ||
423 | fingerprint match will be displayed, but the user will still need | ||
424 | to confirm new host keys according to the StrictHostKeyChecking | ||
425 | option. The argument must be ``yes'', ``no'' or ``ask''. The | ||
426 | default is ``no''. Note that this option applies to protocol | ||
427 | version 2 only. | ||
382 | 428 | ||
383 | XAuthLocation | 429 | XAuthLocation |
384 | Specifies the full pathname of the xauth(1) program. The default | 430 | Specifies the full pathname of the xauth(1) program. The default |
diff --git a/ssh_config.5 b/ssh_config.5 index 7a435a90e..210da059b 100644 --- a/ssh_config.5 +++ b/ssh_config.5 | |||
@@ -34,7 +34,7 @@ | |||
34 | .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | 34 | .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
35 | .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 35 | .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
36 | .\" | 36 | .\" |
37 | .\" $OpenBSD: ssh_config.5,v 1.20 2003/09/02 18:50:06 jmc Exp $ | 37 | .\" $OpenBSD: ssh_config.5,v 1.28 2003/12/16 15:49:51 markus Exp $ |
38 | .Dd September 25, 1999 | 38 | .Dd September 25, 1999 |
39 | .Dt SSH_CONFIG 5 | 39 | .Dt SSH_CONFIG 5 |
40 | .Os | 40 | .Os |
@@ -186,7 +186,6 @@ Specifies the ciphers allowed for protocol version 2 | |||
186 | in order of preference. | 186 | in order of preference. |
187 | Multiple ciphers must be comma-separated. | 187 | Multiple ciphers must be comma-separated. |
188 | The default is | 188 | The default is |
189 | .Pp | ||
190 | .Bd -literal | 189 | .Bd -literal |
191 | ``aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour, | 190 | ``aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour, |
192 | aes192-cbc,aes256-cbc'' | 191 | aes192-cbc,aes256-cbc'' |
@@ -260,6 +259,7 @@ or | |||
260 | .Dq no . | 259 | .Dq no . |
261 | The default is | 260 | The default is |
262 | .Dq no . | 261 | .Dq no . |
262 | This option should be placed in the non-hostspecific section. | ||
263 | See | 263 | See |
264 | .Xr ssh-keysign 8 | 264 | .Xr ssh-keysign 8 |
265 | for more information. | 265 | for more information. |
@@ -306,9 +306,27 @@ The default is | |||
306 | .Pp | 306 | .Pp |
307 | X11 forwarding should be enabled with caution. | 307 | X11 forwarding should be enabled with caution. |
308 | Users with the ability to bypass file permissions on the remote host | 308 | Users with the ability to bypass file permissions on the remote host |
309 | (for the user's X authorization database) | 309 | (for the user's X11 authorization database) |
310 | can access the local X11 display through the forwarded connection. | 310 | can access the local X11 display through the forwarded connection. |
311 | An attacker may then be able to perform activities such as keystroke monitoring. | 311 | An attacker may then be able to perform activities such as keystroke monitoring |
312 | if the | ||
313 | .Cm ForwardX11Trusted | ||
314 | option is also enabled. | ||
315 | .It Cm ForwardX11Trusted | ||
316 | If the this option is set to | ||
317 | .Dq yes | ||
318 | then remote X11 clients will have full access to the original X11 display. | ||
319 | If this option is set to | ||
320 | .Dq no | ||
321 | then remote X11 clients will be considered untrusted and prevented | ||
322 | from stealing or tampering with data belonging to trusted X11 | ||
323 | clients. | ||
324 | .Pp | ||
325 | The default is | ||
326 | .Dq no . | ||
327 | .Pp | ||
328 | See the X11 SECURITY extension specification for full details on | ||
329 | the restrictions imposed on untrusted clients. | ||
312 | .It Cm GatewayPorts | 330 | .It Cm GatewayPorts |
313 | Specifies whether remote hosts are allowed to connect to local | 331 | Specifies whether remote hosts are allowed to connect to local |
314 | forwarded ports. | 332 | forwarded ports. |
@@ -332,11 +350,9 @@ Specifies a file to use for the global | |||
332 | host key database instead of | 350 | host key database instead of |
333 | .Pa /etc/ssh/ssh_known_hosts . | 351 | .Pa /etc/ssh/ssh_known_hosts . |
334 | .It Cm GSSAPIAuthentication | 352 | .It Cm GSSAPIAuthentication |
335 | Specifies whether authentication based on GSSAPI may be used, either using | 353 | Specifies whether user authentication based on GSSAPI is allowed. |
336 | the result of a successful key exchange, or using GSSAPI user | ||
337 | authentication. | ||
338 | The default is | 354 | The default is |
339 | .Dq yes . | 355 | .Dq no . |
340 | Note that this option applies to protocol version 2 only. | 356 | Note that this option applies to protocol version 2 only. |
341 | .It Cm GSSAPIDelegateCredentials | 357 | .It Cm GSSAPIDelegateCredentials |
342 | Forward (delegate) credentials to the server. | 358 | Forward (delegate) credentials to the server. |
@@ -390,23 +406,6 @@ syntax to refer to a user's home directory. | |||
390 | It is possible to have | 406 | It is possible to have |
391 | multiple identity files specified in configuration files; all these | 407 | multiple identity files specified in configuration files; all these |
392 | identities will be tried in sequence. | 408 | identities will be tried in sequence. |
393 | .It Cm KeepAlive | ||
394 | Specifies whether the system should send TCP keepalive messages to the | ||
395 | other side. | ||
396 | If they are sent, death of the connection or crash of one | ||
397 | of the machines will be properly noticed. | ||
398 | However, this means that | ||
399 | connections will die if the route is down temporarily, and some people | ||
400 | find it annoying. | ||
401 | .Pp | ||
402 | The default is | ||
403 | .Dq yes | ||
404 | (to send keepalives), and the client will notice | ||
405 | if the network goes down or the remote host dies. | ||
406 | This is important in scripts, and many users want it too. | ||
407 | .Pp | ||
408 | To disable keepalives, the value should be set to | ||
409 | .Dq no . | ||
410 | .It Cm LocalForward | 409 | .It Cm LocalForward |
411 | Specifies that a TCP/IP port on the local machine be forwarded over | 410 | Specifies that a TCP/IP port on the local machine be forwarded over |
412 | the secure channel to the specified host and port from the remote machine. | 411 | the secure channel to the specified host and port from the remote machine. |
@@ -553,6 +552,42 @@ running. | |||
553 | The default is | 552 | The default is |
554 | .Dq yes . | 553 | .Dq yes . |
555 | Note that this option applies to protocol version 1 only. | 554 | Note that this option applies to protocol version 1 only. |
555 | .It Cm ServerAliveInterval | ||
556 | Sets a timeout interval in seconds after which if no data has been received | ||
557 | from the server, | ||
558 | .Nm ssh | ||
559 | will send a message through the encrypted | ||
560 | channel to request a response from the server. | ||
561 | The default | ||
562 | is 0, indicating that these messages will not be sent to the server. | ||
563 | This option applies to protocol version 2 only. | ||
564 | .It Cm ServerAliveCountMax | ||
565 | Sets the number of server alive messages (see above) which may be | ||
566 | sent without | ||
567 | .Nm ssh | ||
568 | receiving any messages back from the server. | ||
569 | If this threshold is reached while server alive messages are being sent, | ||
570 | .Nm ssh | ||
571 | will disconnect from the server, terminating the session. | ||
572 | It is important to note that the use of server alive messages is very | ||
573 | different from | ||
574 | .Cm TCPKeepAlive | ||
575 | (below). | ||
576 | The server alive messages are sent through the encrypted channel | ||
577 | and therefore will not be spoofable. | ||
578 | The TCP keepalive option enabled by | ||
579 | .Cm TCPKeepAlive | ||
580 | is spoofable. | ||
581 | The server alive mechanism is valuable when the client or | ||
582 | server depend on knowing when a connection has become inactive. | ||
583 | .Pp | ||
584 | The default value is 3. | ||
585 | If, for example, | ||
586 | .Cm ServerAliveInterval | ||
587 | (above) is set to 15, and | ||
588 | .Cm ServerAliveCountMax | ||
589 | is left at the default, if the server becomes unresponsive ssh | ||
590 | will disconnect after approximately 45 seconds. | ||
556 | .It Cm SmartcardDevice | 591 | .It Cm SmartcardDevice |
557 | Specifies which smartcard device to use. | 592 | Specifies which smartcard device to use. |
558 | The argument to this keyword is the device | 593 | The argument to this keyword is the device |
@@ -595,6 +630,23 @@ or | |||
595 | .Dq ask . | 630 | .Dq ask . |
596 | The default is | 631 | The default is |
597 | .Dq ask . | 632 | .Dq ask . |
633 | .It Cm TCPKeepAlive | ||
634 | Specifies whether the system should send TCP keepalive messages to the | ||
635 | other side. | ||
636 | If they are sent, death of the connection or crash of one | ||
637 | of the machines will be properly noticed. | ||
638 | However, this means that | ||
639 | connections will die if the route is down temporarily, and some people | ||
640 | find it annoying. | ||
641 | .Pp | ||
642 | The default is | ||
643 | .Dq yes | ||
644 | (to send TCP keepalive messages), and the client will notice | ||
645 | if the network goes down or the remote host dies. | ||
646 | This is important in scripts, and many users want it too. | ||
647 | .Pp | ||
648 | To disable TCP keepalive messages, the value should be set to | ||
649 | .Dq no . | ||
598 | .It Cm UsePrivilegedPort | 650 | .It Cm UsePrivilegedPort |
599 | Specifies whether to use a privileged port for outgoing connections. | 651 | Specifies whether to use a privileged port for outgoing connections. |
600 | The argument must be | 652 | The argument must be |
@@ -624,6 +676,23 @@ host key database instead of | |||
624 | .It Cm VerifyHostKeyDNS | 676 | .It Cm VerifyHostKeyDNS |
625 | Specifies whether to verify the remote key using DNS and SSHFP resource | 677 | Specifies whether to verify the remote key using DNS and SSHFP resource |
626 | records. | 678 | records. |
679 | If this option is set to | ||
680 | .Dq yes , | ||
681 | the client will implicitly trust keys that match a secure fingerprint | ||
682 | from DNS. | ||
683 | Insecure fingerprints will be handled as if this option was set to | ||
684 | .Dq ask . | ||
685 | If this option is set to | ||
686 | .Dq ask , | ||
687 | information on fingerprint match will be displayed, but the user will still | ||
688 | need to confirm new host keys according to the | ||
689 | .Cm StrictHostKeyChecking | ||
690 | option. | ||
691 | The argument must be | ||
692 | .Dq yes , | ||
693 | .Dq no | ||
694 | or | ||
695 | .Dq ask . | ||
627 | The default is | 696 | The default is |
628 | .Dq no . | 697 | .Dq no . |
629 | Note that this option applies to protocol version 2 only. | 698 | Note that this option applies to protocol version 2 only. |
diff --git a/ssh_prng_cmds.in b/ssh_prng_cmds.in index 50e7771f9..0d29d49f1 100644 --- a/ssh_prng_cmds.in +++ b/ssh_prng_cmds.in | |||
@@ -2,10 +2,10 @@ | |||
2 | 2 | ||
3 | # Format is: "program-name args" path rate | 3 | # Format is: "program-name args" path rate |
4 | 4 | ||
5 | # The "rate" represents the number of bits of usuable entropy per | 5 | # The "rate" represents the number of bits of usuable entropy per |
6 | # byte of command output. Be conservative. | 6 | # byte of command output. Be conservative. |
7 | # | 7 | # |
8 | # $Id: ssh_prng_cmds.in,v 1.8 2002/07/14 21:43:58 tim Exp $ | 8 | # $Id: ssh_prng_cmds.in,v 1.9 2003/11/21 12:48:56 djm Exp $ |
9 | 9 | ||
10 | "ls -alni /var/log" @PROG_LS@ 0.02 | 10 | "ls -alni /var/log" @PROG_LS@ 0.02 |
11 | "ls -alni /var/adm" @PROG_LS@ 0.02 | 11 | "ls -alni /var/adm" @PROG_LS@ 0.02 |
diff --git a/sshconnect.c b/sshconnect.c index f29ac8088..dfeddd39e 100644 --- a/sshconnect.c +++ b/sshconnect.c | |||
@@ -13,7 +13,7 @@ | |||
13 | */ | 13 | */ |
14 | 14 | ||
15 | #include "includes.h" | 15 | #include "includes.h" |
16 | RCSID("$OpenBSD: sshconnect.c,v 1.148 2003/09/18 07:52:54 markus Exp $"); | 16 | RCSID("$OpenBSD: sshconnect.c,v 1.156 2004/01/25 03:49:09 djm Exp $"); |
17 | 17 | ||
18 | #include <openssl/bn.h> | 18 | #include <openssl/bn.h> |
19 | 19 | ||
@@ -33,16 +33,12 @@ RCSID("$OpenBSD: sshconnect.c,v 1.148 2003/09/18 07:52:54 markus Exp $"); | |||
33 | #include "misc.h" | 33 | #include "misc.h" |
34 | #include "readpass.h" | 34 | #include "readpass.h" |
35 | 35 | ||
36 | #ifdef DNS | ||
37 | #include "dns.h" | 36 | #include "dns.h" |
38 | #endif | ||
39 | 37 | ||
40 | char *client_version_string = NULL; | 38 | char *client_version_string = NULL; |
41 | char *server_version_string = NULL; | 39 | char *server_version_string = NULL; |
42 | 40 | ||
43 | #ifdef DNS | 41 | int matching_host_key_dns = 0; |
44 | int verified_host_key_dns = 0; | ||
45 | #endif | ||
46 | 42 | ||
47 | /* import */ | 43 | /* import */ |
48 | extern Options options; | 44 | extern Options options; |
@@ -56,6 +52,7 @@ extern pid_t proxy_command_pid; | |||
56 | #endif | 52 | #endif |
57 | 53 | ||
58 | static int show_other_keys(const char *, Key *); | 54 | static int show_other_keys(const char *, Key *); |
55 | static void warn_changed_key(Key *); | ||
59 | 56 | ||
60 | /* | 57 | /* |
61 | * Connect to the given ssh server using a proxy command. | 58 | * Connect to the given ssh server using a proxy command. |
@@ -77,7 +74,7 @@ ssh_proxy_connect(const char *host, u_short port, const char *proxy_command) | |||
77 | * Build the final command string in the buffer by making the | 74 | * Build the final command string in the buffer by making the |
78 | * appropriate substitutions to the given proxy command. | 75 | * appropriate substitutions to the given proxy command. |
79 | * | 76 | * |
80 | * Use "exec" to avoid "sh -c" processes on some platforms | 77 | * Use "exec" to avoid "sh -c" processes on some platforms |
81 | * (e.g. Solaris) | 78 | * (e.g. Solaris) |
82 | */ | 79 | */ |
83 | buffer_init(&command); | 80 | buffer_init(&command); |
@@ -234,12 +231,12 @@ timeout_connect(int sockfd, const struct sockaddr *serv_addr, | |||
234 | if (timeout <= 0) | 231 | if (timeout <= 0) |
235 | return (connect(sockfd, serv_addr, addrlen)); | 232 | return (connect(sockfd, serv_addr, addrlen)); |
236 | 233 | ||
237 | if (fcntl(sockfd, F_SETFL, O_NONBLOCK) < 0) | 234 | set_nonblock(sockfd); |
238 | return (-1); | ||
239 | |||
240 | rc = connect(sockfd, serv_addr, addrlen); | 235 | rc = connect(sockfd, serv_addr, addrlen); |
241 | if (rc == 0) | 236 | if (rc == 0) { |
237 | unset_nonblock(sockfd); | ||
242 | return (0); | 238 | return (0); |
239 | } | ||
243 | if (errno != EINPROGRESS) | 240 | if (errno != EINPROGRESS) |
244 | return (-1); | 241 | return (-1); |
245 | 242 | ||
@@ -264,15 +261,15 @@ timeout_connect(int sockfd, const struct sockaddr *serv_addr, | |||
264 | break; | 261 | break; |
265 | case -1: | 262 | case -1: |
266 | /* Select error */ | 263 | /* Select error */ |
267 | debug("select: %s", strerror(errno)); | 264 | debug("select: %s", strerror(errno)); |
268 | break; | 265 | break; |
269 | case 1: | 266 | case 1: |
270 | /* Completed or failed */ | 267 | /* Completed or failed */ |
271 | optval = 0; | 268 | optval = 0; |
272 | optlen = sizeof(optval); | 269 | optlen = sizeof(optval); |
273 | if (getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &optval, | 270 | if (getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &optval, |
274 | &optlen) == -1) { | 271 | &optlen) == -1) { |
275 | debug("getsockopt: %s", strerror(errno)); | 272 | debug("getsockopt: %s", strerror(errno)); |
276 | break; | 273 | break; |
277 | } | 274 | } |
278 | if (optval != 0) { | 275 | if (optval != 0) { |
@@ -280,6 +277,7 @@ timeout_connect(int sockfd, const struct sockaddr *serv_addr, | |||
280 | break; | 277 | break; |
281 | } | 278 | } |
282 | result = 0; | 279 | result = 0; |
280 | unset_nonblock(sockfd); | ||
283 | break; | 281 | break; |
284 | default: | 282 | default: |
285 | /* Should not occur */ | 283 | /* Should not occur */ |
@@ -418,8 +416,8 @@ ssh_connect(const char *host, struct sockaddr_storage * hostaddr, | |||
418 | 416 | ||
419 | debug("Connection established."); | 417 | debug("Connection established."); |
420 | 418 | ||
421 | /* Set keepalives if requested. */ | 419 | /* Set SO_KEEPALIVE if requested. */ |
422 | if (options.keepalives && | 420 | if (options.tcp_keep_alive && |
423 | setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE, (void *)&on, | 421 | setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE, (void *)&on, |
424 | sizeof(on)) < 0) | 422 | sizeof(on)) < 0) |
425 | error("setsockopt SO_KEEPALIVE: %.100s", strerror(errno)); | 423 | error("setsockopt SO_KEEPALIVE: %.100s", strerror(errno)); |
@@ -566,7 +564,7 @@ check_host_key(char *host, struct sockaddr *hostaddr, Key *host_key, | |||
566 | int readonly, const char *user_hostfile, const char *system_hostfile) | 564 | int readonly, const char *user_hostfile, const char *system_hostfile) |
567 | { | 565 | { |
568 | Key *file_key; | 566 | Key *file_key; |
569 | char *type = key_type(host_key); | 567 | const char *type = key_type(host_key); |
570 | char *ip = NULL; | 568 | char *ip = NULL; |
571 | char hostline[1000], *hostp, *fp; | 569 | char hostline[1000], *hostp, *fp; |
572 | HostStatus host_status; | 570 | HostStatus host_status; |
@@ -730,9 +728,8 @@ check_host_key(char *host, struct sockaddr *hostaddr, Key *host_key, | |||
730 | /* The default */ | 728 | /* The default */ |
731 | fp = key_fingerprint(host_key, SSH_FP_MD5, SSH_FP_HEX); | 729 | fp = key_fingerprint(host_key, SSH_FP_MD5, SSH_FP_HEX); |
732 | msg2[0] = '\0'; | 730 | msg2[0] = '\0'; |
733 | #ifdef DNS | ||
734 | if (options.verify_host_key_dns) { | 731 | if (options.verify_host_key_dns) { |
735 | if (verified_host_key_dns) | 732 | if (matching_host_key_dns) |
736 | snprintf(msg2, sizeof(msg2), | 733 | snprintf(msg2, sizeof(msg2), |
737 | "Matching host key fingerprint" | 734 | "Matching host key fingerprint" |
738 | " found in DNS.\n"); | 735 | " found in DNS.\n"); |
@@ -741,7 +738,6 @@ check_host_key(char *host, struct sockaddr *hostaddr, Key *host_key, | |||
741 | "No matching host key fingerprint" | 738 | "No matching host key fingerprint" |
742 | " found in DNS.\n"); | 739 | " found in DNS.\n"); |
743 | } | 740 | } |
744 | #endif | ||
745 | snprintf(msg, sizeof(msg), | 741 | snprintf(msg, sizeof(msg), |
746 | "The authenticity of host '%.200s (%s)' can't be " | 742 | "The authenticity of host '%.200s (%s)' can't be " |
747 | "established%s\n" | 743 | "established%s\n" |
@@ -791,20 +787,10 @@ check_host_key(char *host, struct sockaddr *hostaddr, Key *host_key, | |||
791 | error("Offending key for IP in %s:%d", ip_file, ip_line); | 787 | error("Offending key for IP in %s:%d", ip_file, ip_line); |
792 | } | 788 | } |
793 | /* The host key has changed. */ | 789 | /* The host key has changed. */ |
794 | fp = key_fingerprint(host_key, SSH_FP_MD5, SSH_FP_HEX); | 790 | warn_changed_key(host_key); |
795 | error("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"); | ||
796 | error("@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @"); | ||
797 | error("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"); | ||
798 | error("IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!"); | ||
799 | error("Someone could be eavesdropping on you right now (man-in-the-middle attack)!"); | ||
800 | error("It is also possible that the %s host key has just been changed.", type); | ||
801 | error("The fingerprint for the %s key sent by the remote host is\n%s.", | ||
802 | type, fp); | ||
803 | error("Please contact your system administrator."); | ||
804 | error("Add correct host key in %.100s to get rid of this message.", | 791 | error("Add correct host key in %.100s to get rid of this message.", |
805 | user_hostfile); | 792 | user_hostfile); |
806 | error("Offending key in %s:%d", host_file, host_line); | 793 | error("Offending key in %s:%d", host_file, host_line); |
807 | xfree(fp); | ||
808 | 794 | ||
809 | /* | 795 | /* |
810 | * If strict host key checking is in use, the user will have | 796 | * If strict host key checking is in use, the user will have |
@@ -907,27 +893,27 @@ int | |||
907 | verify_host_key(char *host, struct sockaddr *hostaddr, Key *host_key) | 893 | verify_host_key(char *host, struct sockaddr *hostaddr, Key *host_key) |
908 | { | 894 | { |
909 | struct stat st; | 895 | struct stat st; |
896 | int flags = 0; | ||
910 | 897 | ||
911 | #ifdef DNS | 898 | if (options.verify_host_key_dns && |
912 | if (options.verify_host_key_dns) { | 899 | verify_host_key_dns(host, hostaddr, host_key, &flags) == 0) { |
913 | switch(verify_host_key_dns(host, hostaddr, host_key)) { | 900 | |
914 | case DNS_VERIFY_OK: | 901 | if (flags & DNS_VERIFY_FOUND) { |
915 | #ifdef DNSSEC | 902 | |
916 | return 0; | 903 | if (options.verify_host_key_dns == 1 && |
917 | #else | 904 | flags & DNS_VERIFY_MATCH && |
918 | verified_host_key_dns = 1; | 905 | flags & DNS_VERIFY_SECURE) |
919 | break; | 906 | return 0; |
920 | #endif | 907 | |
921 | case DNS_VERIFY_FAILED: | 908 | if (flags & DNS_VERIFY_MATCH) { |
922 | return -1; | 909 | matching_host_key_dns = 1; |
923 | case DNS_VERIFY_ERROR: | 910 | } else { |
924 | break; | 911 | warn_changed_key(host_key); |
925 | default: | 912 | error("Update the SSHFP RR in DNS with the new " |
926 | debug3("bad return value from verify_host_key_dns"); | 913 | "host key to get rid of this message."); |
927 | break; | 914 | } |
928 | } | 915 | } |
929 | } | 916 | } |
930 | #endif /* DNS */ | ||
931 | 917 | ||
932 | /* return ok if the key can be found in an old keyfile */ | 918 | /* return ok if the key can be found in an old keyfile */ |
933 | if (stat(options.system_hostfile2, &st) == 0 || | 919 | if (stat(options.system_hostfile2, &st) == 0 || |
@@ -1053,3 +1039,24 @@ show_other_keys(const char *host, Key *key) | |||
1053 | } | 1039 | } |
1054 | return (found); | 1040 | return (found); |
1055 | } | 1041 | } |
1042 | |||
1043 | static void | ||
1044 | warn_changed_key(Key *host_key) | ||
1045 | { | ||
1046 | char *fp; | ||
1047 | const char *type = key_type(host_key); | ||
1048 | |||
1049 | fp = key_fingerprint(host_key, SSH_FP_MD5, SSH_FP_HEX); | ||
1050 | |||
1051 | error("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"); | ||
1052 | error("@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @"); | ||
1053 | error("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"); | ||
1054 | error("IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!"); | ||
1055 | error("Someone could be eavesdropping on you right now (man-in-the-middle attack)!"); | ||
1056 | error("It is also possible that the %s host key has just been changed.", type); | ||
1057 | error("The fingerprint for the %s key sent by the remote host is\n%s.", | ||
1058 | type, fp); | ||
1059 | error("Please contact your system administrator."); | ||
1060 | |||
1061 | xfree(fp); | ||
1062 | } | ||
diff --git a/sshconnect2.c b/sshconnect2.c index 933c223ec..3a218113c 100644 --- a/sshconnect2.c +++ b/sshconnect2.c | |||
@@ -23,7 +23,7 @@ | |||
23 | */ | 23 | */ |
24 | 24 | ||
25 | #include "includes.h" | 25 | #include "includes.h" |
26 | RCSID("$OpenBSD: sshconnect2.c,v 1.124 2003/08/25 10:33:33 djm Exp $"); | 26 | RCSID("$OpenBSD: sshconnect2.c,v 1.134 2004/01/19 21:25:15 markus Exp $"); |
27 | 27 | ||
28 | #include "openbsd-compat/sys-queue.h" | 28 | #include "openbsd-compat/sys-queue.h" |
29 | 29 | ||
@@ -222,7 +222,7 @@ static char *authmethods_get(void); | |||
222 | 222 | ||
223 | Authmethod authmethods[] = { | 223 | Authmethod authmethods[] = { |
224 | #ifdef GSSAPI | 224 | #ifdef GSSAPI |
225 | {"gssapi", | 225 | {"gssapi-with-mic", |
226 | userauth_gssapi, | 226 | userauth_gssapi, |
227 | &options.gss_authentication, | 227 | &options.gss_authentication, |
228 | NULL}, | 228 | NULL}, |
@@ -358,10 +358,12 @@ void | |||
358 | input_userauth_banner(int type, u_int32_t seq, void *ctxt) | 358 | input_userauth_banner(int type, u_int32_t seq, void *ctxt) |
359 | { | 359 | { |
360 | char *msg, *lang; | 360 | char *msg, *lang; |
361 | |||
361 | debug3("input_userauth_banner"); | 362 | debug3("input_userauth_banner"); |
362 | msg = packet_get_string(NULL); | 363 | msg = packet_get_string(NULL); |
363 | lang = packet_get_string(NULL); | 364 | lang = packet_get_string(NULL); |
364 | logit("%s", msg); | 365 | if (options.log_level > SYSLOG_LEVEL_QUIET) |
366 | fprintf(stderr, "%s", msg); | ||
365 | xfree(msg); | 367 | xfree(msg); |
366 | xfree(lang); | 368 | xfree(lang); |
367 | } | 369 | } |
@@ -372,10 +374,14 @@ input_userauth_success(int type, u_int32_t seq, void *ctxt) | |||
372 | Authctxt *authctxt = ctxt; | 374 | Authctxt *authctxt = ctxt; |
373 | if (authctxt == NULL) | 375 | if (authctxt == NULL) |
374 | fatal("input_userauth_success: no authentication context"); | 376 | fatal("input_userauth_success: no authentication context"); |
375 | if (authctxt->authlist) | 377 | if (authctxt->authlist) { |
376 | xfree(authctxt->authlist); | 378 | xfree(authctxt->authlist); |
377 | if (authctxt->methoddata) | 379 | authctxt->authlist = NULL; |
380 | } | ||
381 | if (authctxt->methoddata) { | ||
378 | xfree(authctxt->methoddata); | 382 | xfree(authctxt->methoddata); |
383 | authctxt->methoddata = NULL; | ||
384 | } | ||
379 | authctxt->success = 1; /* break out */ | 385 | authctxt->success = 1; /* break out */ |
380 | } | 386 | } |
381 | 387 | ||
@@ -447,7 +453,12 @@ input_userauth_pk_ok(int type, u_int32_t seq, void *ctxt) | |||
447 | debug2("input_userauth_pk_ok: fp %s", fp); | 453 | debug2("input_userauth_pk_ok: fp %s", fp); |
448 | xfree(fp); | 454 | xfree(fp); |
449 | 455 | ||
450 | TAILQ_FOREACH(id, &authctxt->keys, next) { | 456 | /* |
457 | * search keys in the reverse order, because last candidate has been | ||
458 | * moved to the end of the queue. this also avoids confusion by | ||
459 | * duplicate keys | ||
460 | */ | ||
461 | TAILQ_FOREACH_REVERSE(id, &authctxt->keys, next, idlist) { | ||
451 | if (key_equal(key, id->key)) { | 462 | if (key_equal(key, id->key)) { |
452 | sent = sign_and_send_pubkey(authctxt, id); | 463 | sent = sign_and_send_pubkey(authctxt, id); |
453 | break; | 464 | break; |
@@ -465,11 +476,11 @@ done: | |||
465 | } | 476 | } |
466 | 477 | ||
467 | #ifdef GSSAPI | 478 | #ifdef GSSAPI |
468 | int | 479 | int |
469 | userauth_gssapi(Authctxt *authctxt) | 480 | userauth_gssapi(Authctxt *authctxt) |
470 | { | 481 | { |
471 | Gssctxt *gssctxt = NULL; | 482 | Gssctxt *gssctxt = NULL; |
472 | static gss_OID_set supported = NULL; | 483 | static gss_OID_set gss_supported = NULL; |
473 | static int mech = 0; | 484 | static int mech = 0; |
474 | OM_uint32 min; | 485 | OM_uint32 min; |
475 | int ok = 0; | 486 | int ok = 0; |
@@ -477,18 +488,18 @@ userauth_gssapi(Authctxt *authctxt) | |||
477 | /* Try one GSSAPI method at a time, rather than sending them all at | 488 | /* Try one GSSAPI method at a time, rather than sending them all at |
478 | * once. */ | 489 | * once. */ |
479 | 490 | ||
480 | if (supported == NULL) | 491 | if (gss_supported == NULL) |
481 | gss_indicate_mechs(&min, &supported); | 492 | gss_indicate_mechs(&min, &gss_supported); |
482 | 493 | ||
483 | /* Check to see if the mechanism is usable before we offer it */ | 494 | /* Check to see if the mechanism is usable before we offer it */ |
484 | while (mech<supported->count && !ok) { | 495 | while (mech < gss_supported->count && !ok) { |
485 | if (gssctxt) | 496 | if (gssctxt) |
486 | ssh_gssapi_delete_ctx(&gssctxt); | 497 | ssh_gssapi_delete_ctx(&gssctxt); |
487 | ssh_gssapi_build_ctx(&gssctxt); | 498 | ssh_gssapi_build_ctx(&gssctxt); |
488 | ssh_gssapi_set_oid(gssctxt, &supported->elements[mech]); | 499 | ssh_gssapi_set_oid(gssctxt, &gss_supported->elements[mech]); |
489 | 500 | ||
490 | /* My DER encoding requires length<128 */ | 501 | /* My DER encoding requires length<128 */ |
491 | if (supported->elements[mech].length < 128 && | 502 | if (gss_supported->elements[mech].length < 128 && |
492 | !GSS_ERROR(ssh_gssapi_import_name(gssctxt, | 503 | !GSS_ERROR(ssh_gssapi_import_name(gssctxt, |
493 | authctxt->host))) { | 504 | authctxt->host))) { |
494 | ok = 1; /* Mechanism works */ | 505 | ok = 1; /* Mechanism works */ |
@@ -508,17 +519,11 @@ userauth_gssapi(Authctxt *authctxt) | |||
508 | 519 | ||
509 | packet_put_int(1); | 520 | packet_put_int(1); |
510 | 521 | ||
511 | /* Some servers encode the OID incorrectly (as we used to) */ | 522 | packet_put_int((gss_supported->elements[mech].length) + 2); |
512 | if (datafellows & SSH_BUG_GSSAPI_BER) { | 523 | packet_put_char(SSH_GSS_OIDTYPE); |
513 | packet_put_string(supported->elements[mech].elements, | 524 | packet_put_char(gss_supported->elements[mech].length); |
514 | supported->elements[mech].length); | 525 | packet_put_raw(gss_supported->elements[mech].elements, |
515 | } else { | 526 | gss_supported->elements[mech].length); |
516 | packet_put_int((supported->elements[mech].length)+2); | ||
517 | packet_put_char(SSH_GSS_OIDTYPE); | ||
518 | packet_put_char(supported->elements[mech].length); | ||
519 | packet_put_raw(supported->elements[mech].elements, | ||
520 | supported->elements[mech].length); | ||
521 | } | ||
522 | 527 | ||
523 | packet_send(); | 528 | packet_send(); |
524 | 529 | ||
@@ -532,15 +537,66 @@ userauth_gssapi(Authctxt *authctxt) | |||
532 | return 1; | 537 | return 1; |
533 | } | 538 | } |
534 | 539 | ||
540 | static OM_uint32 | ||
541 | process_gssapi_token(void *ctxt, gss_buffer_t recv_tok) | ||
542 | { | ||
543 | Authctxt *authctxt = ctxt; | ||
544 | Gssctxt *gssctxt = authctxt->methoddata; | ||
545 | gss_buffer_desc send_tok = GSS_C_EMPTY_BUFFER; | ||
546 | gss_buffer_desc gssbuf, mic; | ||
547 | OM_uint32 status, ms, flags; | ||
548 | Buffer b; | ||
549 | |||
550 | status = ssh_gssapi_init_ctx(gssctxt, options.gss_deleg_creds, | ||
551 | recv_tok, &send_tok, &flags); | ||
552 | |||
553 | if (send_tok.length > 0) { | ||
554 | if (GSS_ERROR(status)) | ||
555 | packet_start(SSH2_MSG_USERAUTH_GSSAPI_ERRTOK); | ||
556 | else | ||
557 | packet_start(SSH2_MSG_USERAUTH_GSSAPI_TOKEN); | ||
558 | |||
559 | packet_put_string(send_tok.value, send_tok.length); | ||
560 | packet_send(); | ||
561 | gss_release_buffer(&ms, &send_tok); | ||
562 | } | ||
563 | |||
564 | if (status == GSS_S_COMPLETE) { | ||
565 | /* send either complete or MIC, depending on mechanism */ | ||
566 | if (!(flags & GSS_C_INTEG_FLAG)) { | ||
567 | packet_start(SSH2_MSG_USERAUTH_GSSAPI_EXCHANGE_COMPLETE); | ||
568 | packet_send(); | ||
569 | } else { | ||
570 | ssh_gssapi_buildmic(&b, authctxt->server_user, | ||
571 | authctxt->service, "gssapi-with-mic"); | ||
572 | |||
573 | gssbuf.value = buffer_ptr(&b); | ||
574 | gssbuf.length = buffer_len(&b); | ||
575 | |||
576 | status = ssh_gssapi_sign(gssctxt, &gssbuf, &mic); | ||
577 | |||
578 | if (!GSS_ERROR(status)) { | ||
579 | packet_start(SSH2_MSG_USERAUTH_GSSAPI_MIC); | ||
580 | packet_put_string(mic.value, mic.length); | ||
581 | |||
582 | packet_send(); | ||
583 | } | ||
584 | |||
585 | buffer_free(&b); | ||
586 | gss_release_buffer(&ms, &mic); | ||
587 | } | ||
588 | } | ||
589 | |||
590 | return status; | ||
591 | } | ||
592 | |||
535 | void | 593 | void |
536 | input_gssapi_response(int type, u_int32_t plen, void *ctxt) | 594 | input_gssapi_response(int type, u_int32_t plen, void *ctxt) |
537 | { | 595 | { |
538 | Authctxt *authctxt = ctxt; | 596 | Authctxt *authctxt = ctxt; |
539 | Gssctxt *gssctxt; | 597 | Gssctxt *gssctxt; |
540 | OM_uint32 status, ms; | ||
541 | int oidlen; | 598 | int oidlen; |
542 | char *oidv; | 599 | char *oidv; |
543 | gss_buffer_desc send_tok = GSS_C_EMPTY_BUFFER; | ||
544 | 600 | ||
545 | if (authctxt == NULL) | 601 | if (authctxt == NULL) |
546 | fatal("input_gssapi_response: no authentication context"); | 602 | fatal("input_gssapi_response: no authentication context"); |
@@ -549,94 +605,55 @@ input_gssapi_response(int type, u_int32_t plen, void *ctxt) | |||
549 | /* Setup our OID */ | 605 | /* Setup our OID */ |
550 | oidv = packet_get_string(&oidlen); | 606 | oidv = packet_get_string(&oidlen); |
551 | 607 | ||
552 | if (datafellows & SSH_BUG_GSSAPI_BER) { | 608 | if (oidlen <= 2 || |
553 | if (!ssh_gssapi_check_oid(gssctxt, oidv, oidlen)) | 609 | oidv[0] != SSH_GSS_OIDTYPE || |
554 | fatal("Server returned different OID than expected"); | 610 | oidv[1] != oidlen - 2) { |
555 | } else { | 611 | xfree(oidv); |
556 | if(oidv[0] != SSH_GSS_OIDTYPE || oidv[1] != oidlen-2) { | 612 | debug("Badly encoded mechanism OID received"); |
557 | debug("Badly encoded mechanism OID received"); | 613 | userauth(authctxt, NULL); |
558 | userauth(authctxt, NULL); | 614 | return; |
559 | xfree(oidv); | ||
560 | return; | ||
561 | } | ||
562 | if (!ssh_gssapi_check_oid(gssctxt, oidv+2, oidlen-2)) | ||
563 | fatal("Server returned different OID than expected"); | ||
564 | } | 615 | } |
565 | 616 | ||
617 | if (!ssh_gssapi_check_oid(gssctxt, oidv + 2, oidlen - 2)) | ||
618 | fatal("Server returned different OID than expected"); | ||
619 | |||
566 | packet_check_eom(); | 620 | packet_check_eom(); |
567 | 621 | ||
568 | xfree(oidv); | 622 | xfree(oidv); |
569 | 623 | ||
570 | status = ssh_gssapi_init_ctx(gssctxt, options.gss_deleg_creds, | 624 | if (GSS_ERROR(process_gssapi_token(ctxt, GSS_C_NO_BUFFER))) { |
571 | GSS_C_NO_BUFFER, &send_tok, NULL); | ||
572 | if (GSS_ERROR(status)) { | ||
573 | if (send_tok.length > 0) { | ||
574 | packet_start(SSH2_MSG_USERAUTH_GSSAPI_ERRTOK); | ||
575 | packet_put_string(send_tok.value, send_tok.length); | ||
576 | packet_send(); | ||
577 | gss_release_buffer(&ms, &send_tok); | ||
578 | } | ||
579 | /* Start again with next method on list */ | 625 | /* Start again with next method on list */ |
580 | debug("Trying to start again"); | 626 | debug("Trying to start again"); |
581 | userauth(authctxt, NULL); | 627 | userauth(authctxt, NULL); |
582 | return; | 628 | return; |
583 | } | 629 | } |
584 | |||
585 | /* We must have data to send */ | ||
586 | packet_start(SSH2_MSG_USERAUTH_GSSAPI_TOKEN); | ||
587 | packet_put_string(send_tok.value, send_tok.length); | ||
588 | packet_send(); | ||
589 | gss_release_buffer(&ms, &send_tok); | ||
590 | } | 630 | } |
591 | 631 | ||
592 | void | 632 | void |
593 | input_gssapi_token(int type, u_int32_t plen, void *ctxt) | 633 | input_gssapi_token(int type, u_int32_t plen, void *ctxt) |
594 | { | 634 | { |
595 | Authctxt *authctxt = ctxt; | 635 | Authctxt *authctxt = ctxt; |
596 | Gssctxt *gssctxt; | ||
597 | gss_buffer_desc send_tok = GSS_C_EMPTY_BUFFER; | ||
598 | gss_buffer_desc recv_tok; | 636 | gss_buffer_desc recv_tok; |
599 | OM_uint32 status, ms; | 637 | OM_uint32 status; |
600 | u_int slen; | 638 | u_int slen; |
601 | 639 | ||
602 | if (authctxt == NULL) | 640 | if (authctxt == NULL) |
603 | fatal("input_gssapi_response: no authentication context"); | 641 | fatal("input_gssapi_response: no authentication context"); |
604 | gssctxt = authctxt->methoddata; | ||
605 | 642 | ||
606 | recv_tok.value = packet_get_string(&slen); | 643 | recv_tok.value = packet_get_string(&slen); |
607 | recv_tok.length = slen; /* safe typecast */ | 644 | recv_tok.length = slen; /* safe typecast */ |
608 | 645 | ||
609 | packet_check_eom(); | 646 | packet_check_eom(); |
610 | 647 | ||
611 | status=ssh_gssapi_init_ctx(gssctxt, options.gss_deleg_creds, | 648 | status = process_gssapi_token(ctxt, &recv_tok); |
612 | &recv_tok, &send_tok, NULL); | ||
613 | 649 | ||
614 | xfree(recv_tok.value); | 650 | xfree(recv_tok.value); |
615 | 651 | ||
616 | if (GSS_ERROR(status)) { | 652 | if (GSS_ERROR(status)) { |
617 | if (send_tok.length > 0) { | ||
618 | packet_start(SSH2_MSG_USERAUTH_GSSAPI_ERRTOK); | ||
619 | packet_put_string(send_tok.value, send_tok.length); | ||
620 | packet_send(); | ||
621 | gss_release_buffer(&ms, &send_tok); | ||
622 | } | ||
623 | /* Start again with the next method in the list */ | 653 | /* Start again with the next method in the list */ |
624 | userauth(authctxt, NULL); | 654 | userauth(authctxt, NULL); |
625 | return; | 655 | return; |
626 | } | 656 | } |
627 | |||
628 | if (send_tok.length > 0) { | ||
629 | packet_start(SSH2_MSG_USERAUTH_GSSAPI_TOKEN); | ||
630 | packet_put_string(send_tok.value, send_tok.length); | ||
631 | packet_send(); | ||
632 | gss_release_buffer(&ms, &send_tok); | ||
633 | } | ||
634 | |||
635 | if (status == GSS_S_COMPLETE) { | ||
636 | /* If that succeeded, send a exchange complete message */ | ||
637 | packet_start(SSH2_MSG_USERAUTH_GSSAPI_EXCHANGE_COMPLETE); | ||
638 | packet_send(); | ||
639 | } | ||
640 | } | 657 | } |
641 | 658 | ||
642 | void | 659 | void |
@@ -1016,7 +1033,7 @@ pubkey_prepare(Authctxt *authctxt) | |||
1016 | key = ssh_get_next_identity(ac, &comment, 2)) { | 1033 | key = ssh_get_next_identity(ac, &comment, 2)) { |
1017 | found = 0; | 1034 | found = 0; |
1018 | TAILQ_FOREACH(id, &files, next) { | 1035 | TAILQ_FOREACH(id, &files, next) { |
1019 | /* agent keys from the config file are preferred */ | 1036 | /* agent keys from the config file are preferred */ |
1020 | if (key_equal(key, id->key)) { | 1037 | if (key_equal(key, id->key)) { |
1021 | key_free(key); | 1038 | key_free(key); |
1022 | xfree(comment); | 1039 | xfree(comment); |
@@ -1080,6 +1097,7 @@ userauth_pubkey(Authctxt *authctxt) | |||
1080 | while ((id = TAILQ_FIRST(&authctxt->keys))) { | 1097 | while ((id = TAILQ_FIRST(&authctxt->keys))) { |
1081 | if (id->tried++) | 1098 | if (id->tried++) |
1082 | return (0); | 1099 | return (0); |
1100 | /* move key to the end of the queue */ | ||
1083 | TAILQ_REMOVE(&authctxt->keys, id, next); | 1101 | TAILQ_REMOVE(&authctxt->keys, id, next); |
1084 | TAILQ_INSERT_TAIL(&authctxt->keys, id, next); | 1102 | TAILQ_INSERT_TAIL(&authctxt->keys, id, next); |
1085 | /* | 1103 | /* |
@@ -1244,11 +1262,12 @@ ssh_keysign(Key *key, u_char **sigp, u_int *lenp, | |||
1244 | buffer_init(&b); | 1262 | buffer_init(&b); |
1245 | buffer_put_int(&b, packet_get_connection_in()); /* send # of socket */ | 1263 | buffer_put_int(&b, packet_get_connection_in()); /* send # of socket */ |
1246 | buffer_put_string(&b, data, datalen); | 1264 | buffer_put_string(&b, data, datalen); |
1247 | ssh_msg_send(to[1], version, &b); | 1265 | if (ssh_msg_send(to[1], version, &b) == -1) |
1266 | fatal("ssh_keysign: couldn't send request"); | ||
1248 | 1267 | ||
1249 | if (ssh_msg_recv(from[0], &b) < 0) { | 1268 | if (ssh_msg_recv(from[0], &b) < 0) { |
1250 | error("ssh_keysign: no reply"); | 1269 | error("ssh_keysign: no reply"); |
1251 | buffer_clear(&b); | 1270 | buffer_free(&b); |
1252 | return -1; | 1271 | return -1; |
1253 | } | 1272 | } |
1254 | close(from[0]); | 1273 | close(from[0]); |
@@ -1260,11 +1279,11 @@ ssh_keysign(Key *key, u_char **sigp, u_int *lenp, | |||
1260 | 1279 | ||
1261 | if (buffer_get_char(&b) != version) { | 1280 | if (buffer_get_char(&b) != version) { |
1262 | error("ssh_keysign: bad version"); | 1281 | error("ssh_keysign: bad version"); |
1263 | buffer_clear(&b); | 1282 | buffer_free(&b); |
1264 | return -1; | 1283 | return -1; |
1265 | } | 1284 | } |
1266 | *sigp = buffer_get_string(&b, lenp); | 1285 | *sigp = buffer_get_string(&b, lenp); |
1267 | buffer_clear(&b); | 1286 | buffer_free(&b); |
1268 | 1287 | ||
1269 | return 0; | 1288 | return 0; |
1270 | } | 1289 | } |
@@ -4,7 +4,7 @@ NAME | |||
4 | sshd - OpenSSH SSH daemon | 4 | sshd - OpenSSH SSH daemon |
5 | 5 | ||
6 | SYNOPSIS | 6 | SYNOPSIS |
7 | sshd [-deiqtD46] [-b bits] [-f config_file] [-g login_grace_time] | 7 | sshd [-46Ddeiqt] [-b bits] [-f config_file] [-g login_grace_time] |
8 | [-h host_key_file] [-k key_gen_time] [-o option] [-p port] [-u len] | 8 | [-h host_key_file] [-k key_gen_time] [-o option] [-p port] [-u len] |
9 | 9 | ||
10 | DESCRIPTION | 10 | DESCRIPTION |
@@ -21,7 +21,6 @@ DESCRIPTION | |||
21 | sshd works as follows: | 21 | sshd works as follows: |
22 | 22 | ||
23 | SSH protocol version 1 | 23 | SSH protocol version 1 |
24 | |||
25 | Each host has a host-specific RSA key (normally 1024 bits) used to iden- | 24 | Each host has a host-specific RSA key (normally 1024 bits) used to iden- |
26 | tify the host. Additionally, when the daemon starts, it generates a | 25 | tify the host. Additionally, when the daemon starts, it generates a |
27 | server RSA key (normally 768 bits). This key is normally regenerated ev- | 26 | server RSA key (normally 768 bits). This key is normally regenerated ev- |
@@ -30,7 +29,7 @@ DESCRIPTION | |||
30 | Whenever a client connects, the daemon responds with its public host and | 29 | Whenever a client connects, the daemon responds with its public host and |
31 | server keys. The client compares the RSA host key against its own | 30 | server keys. The client compares the RSA host key against its own |
32 | database to verify that it has not changed. The client then generates a | 31 | database to verify that it has not changed. The client then generates a |
33 | 256 bit random number. It encrypts this random number using both the | 32 | 256-bit random number. It encrypts this random number using both the |
34 | host key and the server key, and sends the encrypted number to the serv- | 33 | host key and the server key, and sends the encrypted number to the serv- |
35 | er. Both sides then use this random number as a session key which is | 34 | er. Both sides then use this random number as a session key which is |
36 | used to encrypt all further communications in the session. The rest of | 35 | used to encrypt all further communications in the session. The rest of |
@@ -54,13 +53,12 @@ DESCRIPTION | |||
54 | field should be set to something other than these values (eg `NP' or | 53 | field should be set to something other than these values (eg `NP' or |
55 | `*NP*' ). | 54 | `*NP*' ). |
56 | 55 | ||
57 | Rhosts authentication is normally disabled because it is fundamentally | 56 | rhosts authentication is normally disabled because it is fundamentally |
58 | insecure, but can be enabled in the server configuration file if desired. | 57 | insecure, but can be enabled in the server configuration file if desired. |
59 | System security is not improved unless rshd, rlogind, and rexecd are dis- | 58 | System security is not improved unless rshd, rlogind, and rexecd are dis- |
60 | abled (thus completely disabling rlogin and rsh into the machine). | 59 | abled (thus completely disabling rlogin and rsh into the machine). |
61 | 60 | ||
62 | SSH protocol version 2 | 61 | SSH protocol version 2 |
63 | |||
64 | Version 2 works similarly: Each host has a host-specific key (RSA or DSA) | 62 | Version 2 works similarly: Each host has a host-specific key (RSA or DSA) |
65 | used to identify the host. However, when the daemon starts, it does not | 63 | used to identify the host. However, when the daemon starts, it does not |
66 | generate a server key. Forward security is provided through a Diffie- | 64 | generate a server key. Forward security is provided through a Diffie- |
@@ -68,7 +66,7 @@ DESCRIPTION | |||
68 | key. | 66 | key. |
69 | 67 | ||
70 | The rest of the session is encrypted using a symmetric cipher, currently | 68 | The rest of the session is encrypted using a symmetric cipher, currently |
71 | 128 bit AES, Blowfish, 3DES, CAST128, Arcfour, 192 bit AES, or 256 bit | 69 | 128-bit AES, Blowfish, 3DES, CAST128, Arcfour, 192-bit AES, or 256-bit |
72 | AES. The client selects the encryption algorithm to use from those of- | 70 | AES. The client selects the encryption algorithm to use from those of- |
73 | fered by the server. Additionally, session integrity is provided through | 71 | fered by the server. Additionally, session integrity is provided through |
74 | a cryptographic message authentication code (hmac-sha1 or hmac-md5). | 72 | a cryptographic message authentication code (hmac-sha1 or hmac-md5). |
@@ -79,7 +77,6 @@ DESCRIPTION | |||
79 | ods. | 77 | ods. |
80 | 78 | ||
81 | Command execution and data forwarding | 79 | Command execution and data forwarding |
82 | |||
83 | If the client successfully authenticates itself, a dialog for preparing | 80 | If the client successfully authenticates itself, a dialog for preparing |
84 | the session is entered. At this time the client may request things like | 81 | the session is entered. At this time the client may request things like |
85 | allocating a pseudo-tty, forwarding X11 connections, forwarding TCP/IP | 82 | allocating a pseudo-tty, forwarding X11 connections, forwarding TCP/IP |
@@ -95,9 +92,9 @@ DESCRIPTION | |||
95 | tions have been closed, the server sends command exit status to the | 92 | tions have been closed, the server sends command exit status to the |
96 | client, and both sides exit. | 93 | client, and both sides exit. |
97 | 94 | ||
98 | sshd can be configured using command-line options or a configuration | 95 | sshd can be configured using command-line options or a configuration file |
99 | file. Command-line options override values specified in the configura- | 96 | (by default sshd_config(5)). Command-line options override values speci- |
100 | tion file. | 97 | fied in the configuration file. |
101 | 98 | ||
102 | sshd rereads its configuration file when it receives a hangup signal, | 99 | sshd rereads its configuration file when it receives a hangup signal, |
103 | SIGHUP, by executing itself with the name it was started as, i.e., | 100 | SIGHUP, by executing itself with the name it was started as, i.e., |
@@ -105,10 +102,17 @@ DESCRIPTION | |||
105 | 102 | ||
106 | The options are as follows: | 103 | The options are as follows: |
107 | 104 | ||
105 | -4 Forces sshd to use IPv4 addresses only. | ||
106 | |||
107 | -6 Forces sshd to use IPv6 addresses only. | ||
108 | |||
108 | -b bits | 109 | -b bits |
109 | Specifies the number of bits in the ephemeral protocol version 1 | 110 | Specifies the number of bits in the ephemeral protocol version 1 |
110 | server key (default 768). | 111 | server key (default 768). |
111 | 112 | ||
113 | -D When this option is specified, sshd will not detach and does not | ||
114 | become a daemon. This allows easy monitoring of sshd. | ||
115 | |||
112 | -d Debug mode. The server sends verbose debug output to the system | 116 | -d Debug mode. The server sends verbose debug output to the system |
113 | log, and does not put itself in the background. The server also | 117 | log, and does not put itself in the background. The server also |
114 | will not fork and will only process one connection. This option | 118 | will not fork and will only process one connection. This option |
@@ -149,15 +153,16 @@ DESCRIPTION | |||
149 | Specifies how often the ephemeral protocol version 1 server key | 153 | Specifies how often the ephemeral protocol version 1 server key |
150 | is regenerated (default 3600 seconds, or one hour). The motiva- | 154 | is regenerated (default 3600 seconds, or one hour). The motiva- |
151 | tion for regenerating the key fairly often is that the key is not | 155 | tion for regenerating the key fairly often is that the key is not |
152 | stored anywhere, and after about an hour, it becomes impossible | 156 | stored anywhere, and after about an hour it becomes impossible to |
153 | to recover the key for decrypting intercepted communications even | 157 | recover the key for decrypting intercepted communications even if |
154 | if the machine is cracked into or physically seized. A value of | 158 | the machine is cracked into or physically seized. A value of ze- |
155 | zero indicates that the key will never be regenerated. | 159 | ro indicates that the key will never be regenerated. |
156 | 160 | ||
157 | -o option | 161 | -o option |
158 | Can be used to give options in the format used in the configura- | 162 | Can be used to give options in the format used in the configura- |
159 | tion file. This is useful for specifying options for which there | 163 | tion file. This is useful for specifying options for which there |
160 | is no separate command-line flag. | 164 | is no separate command-line flag. For full details of the op- |
165 | tions, and their values, see sshd_config(5). | ||
161 | 166 | ||
162 | -p port | 167 | -p port |
163 | Specifies the port on which the server listens for connections | 168 | Specifies the port on which the server listens for connections |
@@ -187,13 +192,6 @@ DESCRIPTION | |||
187 | tions that require DNS include using a USER@HOST pattern in | 192 | tions that require DNS include using a USER@HOST pattern in |
188 | AllowUsers or DenyUsers. | 193 | AllowUsers or DenyUsers. |
189 | 194 | ||
190 | -D When this option is specified sshd will not detach and does not | ||
191 | become a daemon. This allows easy monitoring of sshd. | ||
192 | |||
193 | -4 Forces sshd to use IPv4 addresses only. | ||
194 | |||
195 | -6 Forces sshd to use IPv6 addresses only. | ||
196 | |||
197 | CONFIGURATION FILE | 195 | CONFIGURATION FILE |
198 | sshd reads configuration data from /etc/ssh/sshd_config (or the file | 196 | sshd reads configuration data from /etc/ssh/sshd_config (or the file |
199 | specified with -f on the command line). The file format and configura- | 197 | specified with -f on the command line). The file format and configura- |
@@ -216,8 +214,8 @@ LOGIN PROCESS | |||
216 | 214 | ||
217 | 5. Sets up basic environment. | 215 | 5. Sets up basic environment. |
218 | 216 | ||
219 | 6. Reads $HOME/.ssh/environment if it exists and users are al- | 217 | 6. Reads the file $HOME/.ssh/environment, if it exists, and users |
220 | lowed to change their environment. See the | 218 | are allowed to change their environment. See the |
221 | PermitUserEnvironment option in sshd_config(5). | 219 | PermitUserEnvironment option in sshd_config(5). |
222 | 220 | ||
223 | 7. Changes to user's home directory. | 221 | 7. Changes to user's home directory. |
@@ -420,7 +418,7 @@ FILES | |||
420 | identity.pub, id_dsa.pub and/or id_rsa.pub files into this file, | 418 | identity.pub, id_dsa.pub and/or id_rsa.pub files into this file, |
421 | as described in ssh-keygen(1). | 419 | as described in ssh-keygen(1). |
422 | 420 | ||
423 | /etc/ssh/ssh_known_hosts and $HOME/.ssh/known_hosts | 421 | /etc/ssh/ssh_known_hosts, $HOME/.ssh/known_hosts |
424 | These files are consulted when using rhosts with RSA host authen- | 422 | These files are consulted when using rhosts with RSA host authen- |
425 | tication or protocol version 2 hostbased authentication to check | 423 | tication or protocol version 2 hostbased authentication to check |
426 | the public key of the host. The key must be listed in one of | 424 | the public key of the host. The key must be listed in one of |
@@ -447,7 +445,7 @@ FILES | |||
447 | and rshd. The file must be writable only by the user; it is rec- | 445 | and rshd. The file must be writable only by the user; it is rec- |
448 | ommended that it not be accessible by others. | 446 | ommended that it not be accessible by others. |
449 | 447 | ||
450 | If is also possible to use netgroups in the file. Either host or | 448 | It is also possible to use netgroups in the file. Either host or |
451 | user name may be of the form +@groupname to specify all hosts or | 449 | user name may be of the form +@groupname to specify all hosts or |
452 | all users in the group. | 450 | all users in the group. |
453 | 451 | ||
@@ -457,7 +455,7 @@ FILES | |||
457 | access using SSH only. | 455 | access using SSH only. |
458 | 456 | ||
459 | /etc/hosts.equiv | 457 | /etc/hosts.equiv |
460 | This file is used during .rhosts authentication. In the simplest | 458 | This file is used during rhosts authentication. In the simplest |
461 | form, this file contains host names, one per line. Users on | 459 | form, this file contains host names, one per line. Users on |
462 | those hosts are permitted to log in without a password, provided | 460 | those hosts are permitted to log in without a password, provided |
463 | they have the same user name on both machines. The host name may | 461 | they have the same user name on both machines. The host name may |
@@ -535,7 +533,8 @@ FILES | |||
535 | 533 | ||
536 | SEE ALSO | 534 | SEE ALSO |
537 | scp(1), sftp(1), ssh(1), ssh-add(1), ssh-agent(1), ssh-keygen(1), | 535 | scp(1), sftp(1), ssh(1), ssh-add(1), ssh-agent(1), ssh-keygen(1), |
538 | login.conf(5), moduli(5), sshd_config(5), sftp-server(8) | 536 | chroot(2), hosts_access(5), login.conf(5), moduli(5), sshd_config(5), |
537 | inetd(8), sftp-server(8) | ||
539 | 538 | ||
540 | T. Ylonen, T. Kivinen, M. Saarinen, T. Rinne, and S. Lehtinen, SSH | 539 | T. Ylonen, T. Kivinen, M. Saarinen, T. Rinne, and S. Lehtinen, SSH |
541 | Protocol Architecture, draft-ietf-secsh-architecture-12.txt, January | 540 | Protocol Architecture, draft-ietf-secsh-architecture-12.txt, January |
@@ -34,7 +34,7 @@ | |||
34 | .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | 34 | .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
35 | .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 35 | .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
36 | .\" | 36 | .\" |
37 | .\" $OpenBSD: sshd.8,v 1.199 2003/08/13 08:46:31 markus Exp $ | 37 | .\" $OpenBSD: sshd.8,v 1.200 2003/10/08 08:27:36 jmc Exp $ |
38 | .Dd September 25, 1999 | 38 | .Dd September 25, 1999 |
39 | .Dt SSHD 8 | 39 | .Dt SSHD 8 |
40 | .Os | 40 | .Os |
@@ -44,7 +44,7 @@ | |||
44 | .Sh SYNOPSIS | 44 | .Sh SYNOPSIS |
45 | .Nm sshd | 45 | .Nm sshd |
46 | .Bk -words | 46 | .Bk -words |
47 | .Op Fl deiqtD46 | 47 | .Op Fl 46Ddeiqt |
48 | .Op Fl b Ar bits | 48 | .Op Fl b Ar bits |
49 | .Op Fl f Ar config_file | 49 | .Op Fl f Ar config_file |
50 | .Op Fl g Ar login_grace_time | 50 | .Op Fl g Ar login_grace_time |
@@ -78,9 +78,7 @@ This implementation of | |||
78 | supports both SSH protocol version 1 and 2 simultaneously. | 78 | supports both SSH protocol version 1 and 2 simultaneously. |
79 | .Nm | 79 | .Nm |
80 | works as follows: | 80 | works as follows: |
81 | .Pp | ||
82 | .Ss SSH protocol version 1 | 81 | .Ss SSH protocol version 1 |
83 | .Pp | ||
84 | Each host has a host-specific RSA key | 82 | Each host has a host-specific RSA key |
85 | (normally 1024 bits) used to identify the host. | 83 | (normally 1024 bits) used to identify the host. |
86 | Additionally, when | 84 | Additionally, when |
@@ -92,7 +90,7 @@ Whenever a client connects, the daemon responds with its public | |||
92 | host and server keys. | 90 | host and server keys. |
93 | The client compares the | 91 | The client compares the |
94 | RSA host key against its own database to verify that it has not changed. | 92 | RSA host key against its own database to verify that it has not changed. |
95 | The client then generates a 256 bit random number. | 93 | The client then generates a 256-bit random number. |
96 | It encrypts this | 94 | It encrypts this |
97 | random number using both the host key and the server key, and sends | 95 | random number using both the host key and the server key, and sends |
98 | the encrypted number to the server. | 96 | the encrypted number to the server. |
@@ -107,9 +105,9 @@ to use from those offered by the server. | |||
107 | .Pp | 105 | .Pp |
108 | Next, the server and the client enter an authentication dialog. | 106 | Next, the server and the client enter an authentication dialog. |
109 | The client tries to authenticate itself using | 107 | The client tries to authenticate itself using |
110 | .Pa .rhosts | 108 | .Em .rhosts |
111 | authentication, | 109 | authentication, |
112 | .Pa .rhosts | 110 | .Em .rhosts |
113 | authentication combined with RSA host | 111 | authentication combined with RSA host |
114 | authentication, RSA challenge-response authentication, or password | 112 | authentication, RSA challenge-response authentication, or password |
115 | based authentication. | 113 | based authentication. |
@@ -137,7 +135,8 @@ or | |||
137 | .Ql \&*NP\&* | 135 | .Ql \&*NP\&* |
138 | ). | 136 | ). |
139 | .Pp | 137 | .Pp |
140 | Rhosts authentication is normally disabled | 138 | .Em rhosts |
139 | authentication is normally disabled | ||
141 | because it is fundamentally insecure, but can be enabled in the server | 140 | because it is fundamentally insecure, but can be enabled in the server |
142 | configuration file if desired. | 141 | configuration file if desired. |
143 | System security is not improved unless | 142 | System security is not improved unless |
@@ -150,9 +149,7 @@ are disabled (thus completely disabling | |||
150 | and | 149 | and |
151 | .Xr rsh | 150 | .Xr rsh |
152 | into the machine). | 151 | into the machine). |
153 | .Pp | ||
154 | .Ss SSH protocol version 2 | 152 | .Ss SSH protocol version 2 |
155 | .Pp | ||
156 | Version 2 works similarly: | 153 | Version 2 works similarly: |
157 | Each host has a host-specific key (RSA or DSA) used to identify the host. | 154 | Each host has a host-specific key (RSA or DSA) used to identify the host. |
158 | However, when the daemon starts, it does not generate a server key. | 155 | However, when the daemon starts, it does not generate a server key. |
@@ -160,7 +157,7 @@ Forward security is provided through a Diffie-Hellman key agreement. | |||
160 | This key agreement results in a shared session key. | 157 | This key agreement results in a shared session key. |
161 | .Pp | 158 | .Pp |
162 | The rest of the session is encrypted using a symmetric cipher, currently | 159 | The rest of the session is encrypted using a symmetric cipher, currently |
163 | 128 bit AES, Blowfish, 3DES, CAST128, Arcfour, 192 bit AES, or 256 bit AES. | 160 | 128-bit AES, Blowfish, 3DES, CAST128, Arcfour, 192-bit AES, or 256-bit AES. |
164 | The client selects the encryption algorithm | 161 | The client selects the encryption algorithm |
165 | to use from those offered by the server. | 162 | to use from those offered by the server. |
166 | Additionally, session integrity is provided | 163 | Additionally, session integrity is provided |
@@ -171,9 +168,7 @@ Protocol version 2 provides a public key based | |||
171 | user (PubkeyAuthentication) or | 168 | user (PubkeyAuthentication) or |
172 | client host (HostbasedAuthentication) authentication method, | 169 | client host (HostbasedAuthentication) authentication method, |
173 | conventional password authentication and challenge response based methods. | 170 | conventional password authentication and challenge response based methods. |
174 | .Pp | ||
175 | .Ss Command execution and data forwarding | 171 | .Ss Command execution and data forwarding |
176 | .Pp | ||
177 | If the client successfully authenticates itself, a dialog for | 172 | If the client successfully authenticates itself, a dialog for |
178 | preparing the session is entered. | 173 | preparing the session is entered. |
179 | At this time the client may request | 174 | At this time the client may request |
@@ -192,8 +187,9 @@ connections have been closed, the server sends command exit status to | |||
192 | the client, and both sides exit. | 187 | the client, and both sides exit. |
193 | .Pp | 188 | .Pp |
194 | .Nm | 189 | .Nm |
195 | can be configured using command-line options or a configuration | 190 | can be configured using command-line options or a configuration file |
196 | file. | 191 | (by default |
192 | .Xr sshd_config 5 ) . | ||
197 | Command-line options override values specified in the | 193 | Command-line options override values specified in the |
198 | configuration file. | 194 | configuration file. |
199 | .Pp | 195 | .Pp |
@@ -205,9 +201,23 @@ by executing itself with the name it was started as, i.e., | |||
205 | .Pp | 201 | .Pp |
206 | The options are as follows: | 202 | The options are as follows: |
207 | .Bl -tag -width Ds | 203 | .Bl -tag -width Ds |
204 | .It Fl 4 | ||
205 | Forces | ||
206 | .Nm | ||
207 | to use IPv4 addresses only. | ||
208 | .It Fl 6 | ||
209 | Forces | ||
210 | .Nm | ||
211 | to use IPv6 addresses only. | ||
208 | .It Fl b Ar bits | 212 | .It Fl b Ar bits |
209 | Specifies the number of bits in the ephemeral protocol version 1 | 213 | Specifies the number of bits in the ephemeral protocol version 1 |
210 | server key (default 768). | 214 | server key (default 768). |
215 | .It Fl D | ||
216 | When this option is specified, | ||
217 | .Nm | ||
218 | will not detach and does not become a daemon. | ||
219 | This allows easy monitoring of | ||
220 | .Nm sshd . | ||
211 | .It Fl d | 221 | .It Fl d |
212 | Debug mode. | 222 | Debug mode. |
213 | The server sends verbose debug output to the system | 223 | The server sends verbose debug output to the system |
@@ -267,7 +277,7 @@ be feasible. | |||
267 | Specifies how often the ephemeral protocol version 1 server key is | 277 | Specifies how often the ephemeral protocol version 1 server key is |
268 | regenerated (default 3600 seconds, or one hour). | 278 | regenerated (default 3600 seconds, or one hour). |
269 | The motivation for regenerating the key fairly | 279 | The motivation for regenerating the key fairly |
270 | often is that the key is not stored anywhere, and after about an hour, | 280 | often is that the key is not stored anywhere, and after about an hour |
271 | it becomes impossible to recover the key for decrypting intercepted | 281 | it becomes impossible to recover the key for decrypting intercepted |
272 | communications even if the machine is cracked into or physically | 282 | communications even if the machine is cracked into or physically |
273 | seized. | 283 | seized. |
@@ -276,6 +286,8 @@ A value of zero indicates that the key will never be regenerated. | |||
276 | Can be used to give options in the format used in the configuration file. | 286 | Can be used to give options in the format used in the configuration file. |
277 | This is useful for specifying options for which there is no separate | 287 | This is useful for specifying options for which there is no separate |
278 | command-line flag. | 288 | command-line flag. |
289 | For full details of the options, and their values, see | ||
290 | .Xr sshd_config 5 . | ||
279 | .It Fl p Ar port | 291 | .It Fl p Ar port |
280 | Specifies the port on which the server listens for connections | 292 | Specifies the port on which the server listens for connections |
281 | (default 22). | 293 | (default 22). |
@@ -325,20 +337,6 @@ USER@HOST pattern in | |||
325 | .Cm AllowUsers | 337 | .Cm AllowUsers |
326 | or | 338 | or |
327 | .Cm DenyUsers . | 339 | .Cm DenyUsers . |
328 | .It Fl D | ||
329 | When this option is specified | ||
330 | .Nm | ||
331 | will not detach and does not become a daemon. | ||
332 | This allows easy monitoring of | ||
333 | .Nm sshd . | ||
334 | .It Fl 4 | ||
335 | Forces | ||
336 | .Nm | ||
337 | to use IPv4 addresses only. | ||
338 | .It Fl 6 | ||
339 | Forces | ||
340 | .Nm | ||
341 | to use IPv6 addresses only. | ||
342 | .El | 340 | .El |
343 | .Sh CONFIGURATION FILE | 341 | .Sh CONFIGURATION FILE |
344 | .Nm | 342 | .Nm |
@@ -375,9 +373,9 @@ Changes to run with normal user privileges. | |||
375 | .It | 373 | .It |
376 | Sets up basic environment. | 374 | Sets up basic environment. |
377 | .It | 375 | .It |
378 | Reads | 376 | Reads the file |
379 | .Pa $HOME/.ssh/environment | 377 | .Pa $HOME/.ssh/environment , |
380 | if it exists and users are allowed to change their environment. | 378 | if it exists, and users are allowed to change their environment. |
381 | See the | 379 | See the |
382 | .Cm PermitUserEnvironment | 380 | .Cm PermitUserEnvironment |
383 | option in | 381 | option in |
@@ -516,7 +514,7 @@ Limit local | |||
516 | port forwarding such that it may only connect to the specified host and | 514 | port forwarding such that it may only connect to the specified host and |
517 | port. | 515 | port. |
518 | IPv6 addresses can be specified with an alternative syntax: | 516 | IPv6 addresses can be specified with an alternative syntax: |
519 | .Ar host/port . | 517 | .Ar host Ns / Ns Ar port . |
520 | Multiple | 518 | Multiple |
521 | .Cm permitopen | 519 | .Cm permitopen |
522 | options may be applied separated by commas. | 520 | options may be applied separated by commas. |
@@ -524,13 +522,13 @@ No pattern matching is performed on the specified hostnames, | |||
524 | they must be literal domains or addresses. | 522 | they must be literal domains or addresses. |
525 | .El | 523 | .El |
526 | .Ss Examples | 524 | .Ss Examples |
527 | 1024 33 12121.\|.\|.\|312314325 ylo@foo.bar | 525 | 1024 33 12121...312314325 ylo@foo.bar |
528 | .Pp | 526 | .Pp |
529 | from="*.niksula.hut.fi,!pc.niksula.hut.fi" 1024 35 23.\|.\|.\|2334 ylo@niksula | 527 | from="*.niksula.hut.fi,!pc.niksula.hut.fi" 1024 35 23...2334 ylo@niksula |
530 | .Pp | 528 | .Pp |
531 | command="dump /home",no-pty,no-port-forwarding 1024 33 23.\|.\|.\|2323 backup.hut.fi | 529 | command="dump /home",no-pty,no-port-forwarding 1024 33 23...2323 backup.hut.fi |
532 | .Pp | 530 | .Pp |
533 | permitopen="10.2.1.55:80",permitopen="10.2.1.56:25" 1024 33 23.\|.\|.\|2323 | 531 | permitopen="10.2.1.55:80",permitopen="10.2.1.56:25" 1024 33 23...2323 |
534 | .Sh SSH_KNOWN_HOSTS FILE FORMAT | 532 | .Sh SSH_KNOWN_HOSTS FILE FORMAT |
535 | The | 533 | The |
536 | .Pa /etc/ssh/ssh_known_hosts | 534 | .Pa /etc/ssh/ssh_known_hosts |
@@ -588,7 +586,7 @@ or by taking | |||
588 | and adding the host names at the front. | 586 | and adding the host names at the front. |
589 | .Ss Examples | 587 | .Ss Examples |
590 | .Bd -literal | 588 | .Bd -literal |
591 | closenet,.\|.\|.\|,130.233.208.41 1024 37 159.\|.\|.93 closenet.hut.fi | 589 | closenet,...,130.233.208.41 1024 37 159...93 closenet.hut.fi |
592 | cvs.openbsd.org,199.185.137.3 ssh-rsa AAAA1234.....= | 590 | cvs.openbsd.org,199.185.137.3 ssh-rsa AAAA1234.....= |
593 | .Ed | 591 | .Ed |
594 | .Sh FILES | 592 | .Sh FILES |
@@ -647,7 +645,7 @@ and/or | |||
647 | .Pa id_rsa.pub | 645 | .Pa id_rsa.pub |
648 | files into this file, as described in | 646 | files into this file, as described in |
649 | .Xr ssh-keygen 1 . | 647 | .Xr ssh-keygen 1 . |
650 | .It Pa "/etc/ssh/ssh_known_hosts" and "$HOME/.ssh/known_hosts" | 648 | .It Pa "/etc/ssh/ssh_known_hosts", "$HOME/.ssh/known_hosts" |
651 | These files are consulted when using rhosts with RSA host | 649 | These files are consulted when using rhosts with RSA host |
652 | authentication or protocol version 2 hostbased authentication | 650 | authentication or protocol version 2 hostbased authentication |
653 | to check the public key of the host. | 651 | to check the public key of the host. |
@@ -681,7 +679,7 @@ The file must | |||
681 | be writable only by the user; it is recommended that it not be | 679 | be writable only by the user; it is recommended that it not be |
682 | accessible by others. | 680 | accessible by others. |
683 | .Pp | 681 | .Pp |
684 | If is also possible to use netgroups in the file. | 682 | It is also possible to use netgroups in the file. |
685 | Either host or user | 683 | Either host or user |
686 | name may be of the form +@groupname to specify all hosts or all users | 684 | name may be of the form +@groupname to specify all hosts or all users |
687 | in the group. | 685 | in the group. |
@@ -693,7 +691,7 @@ However, this file is | |||
693 | not used by rlogin and rshd, so using this permits access using SSH only. | 691 | not used by rlogin and rshd, so using this permits access using SSH only. |
694 | .It Pa /etc/hosts.equiv | 692 | .It Pa /etc/hosts.equiv |
695 | This file is used during | 693 | This file is used during |
696 | .Pa .rhosts | 694 | .Em rhosts |
697 | authentication. | 695 | authentication. |
698 | In the simplest form, this file contains host names, one per line. | 696 | In the simplest form, this file contains host names, one per line. |
699 | Users on | 697 | Users on |
@@ -800,9 +798,12 @@ This file should be writable only by root, and should be world-readable. | |||
800 | .Xr ssh-add 1 , | 798 | .Xr ssh-add 1 , |
801 | .Xr ssh-agent 1 , | 799 | .Xr ssh-agent 1 , |
802 | .Xr ssh-keygen 1 , | 800 | .Xr ssh-keygen 1 , |
801 | .Xr chroot 2 , | ||
802 | .Xr hosts_access 5 , | ||
803 | .Xr login.conf 5 , | 803 | .Xr login.conf 5 , |
804 | .Xr moduli 5 , | 804 | .Xr moduli 5 , |
805 | .Xr sshd_config 5 , | 805 | .Xr sshd_config 5 , |
806 | .Xr inetd 8 , | ||
806 | .Xr sftp-server 8 | 807 | .Xr sftp-server 8 |
807 | .Rs | 808 | .Rs |
808 | .%A T. Ylonen | 809 | .%A T. Ylonen |
@@ -42,7 +42,7 @@ | |||
42 | */ | 42 | */ |
43 | 43 | ||
44 | #include "includes.h" | 44 | #include "includes.h" |
45 | RCSID("$OpenBSD: sshd.c,v 1.276 2003/08/28 12:54:34 markus Exp $"); | 45 | RCSID("$OpenBSD: sshd.c,v 1.286 2004/02/23 12:02:33 markus Exp $"); |
46 | 46 | ||
47 | #include <openssl/dh.h> | 47 | #include <openssl/dh.h> |
48 | #include <openssl/bn.h> | 48 | #include <openssl/bn.h> |
@@ -101,6 +101,7 @@ extern char *__progname; | |||
101 | #else | 101 | #else |
102 | char *__progname; | 102 | char *__progname; |
103 | #endif | 103 | #endif |
104 | extern char **environ; | ||
104 | 105 | ||
105 | /* Server configuration options. */ | 106 | /* Server configuration options. */ |
106 | ServerOptions options; | 107 | ServerOptions options; |
@@ -199,11 +200,14 @@ int startup_pipe; /* in child */ | |||
199 | 200 | ||
200 | /* variables used for privilege separation */ | 201 | /* variables used for privilege separation */ |
201 | int use_privsep; | 202 | int use_privsep; |
202 | struct monitor *pmonitor; | 203 | struct monitor *pmonitor = NULL; |
203 | 204 | ||
204 | /* message to be displayed after login */ | 205 | /* message to be displayed after login */ |
205 | Buffer loginmsg; | 206 | Buffer loginmsg; |
206 | 207 | ||
208 | /* global authentication context */ | ||
209 | Authctxt *the_authctxt = NULL; | ||
210 | |||
207 | /* Prototypes for various functions defined later in this file. */ | 211 | /* Prototypes for various functions defined later in this file. */ |
208 | void destroy_sensitive_data(void); | 212 | void destroy_sensitive_data(void); |
209 | void demote_sensitive_data(void); | 213 | void demote_sensitive_data(void); |
@@ -302,6 +306,9 @@ grace_alarm_handler(int sig) | |||
302 | { | 306 | { |
303 | /* XXX no idea how fix this signal handler */ | 307 | /* XXX no idea how fix this signal handler */ |
304 | 308 | ||
309 | if (use_privsep && pmonitor != NULL && pmonitor->m_pid > 0) | ||
310 | kill(pmonitor->m_pid, SIGALRM); | ||
311 | |||
305 | /* Log error and exit. */ | 312 | /* Log error and exit. */ |
306 | fatal("Timeout before authentication for %s", get_remote_ipaddr()); | 313 | fatal("Timeout before authentication for %s", get_remote_ipaddr()); |
307 | } | 314 | } |
@@ -375,7 +382,7 @@ sshd_exchange_identification(int sock_in, int sock_out) | |||
375 | strlen(server_version_string)) | 382 | strlen(server_version_string)) |
376 | != strlen(server_version_string)) { | 383 | != strlen(server_version_string)) { |
377 | logit("Could not write ident string to %s", get_remote_ipaddr()); | 384 | logit("Could not write ident string to %s", get_remote_ipaddr()); |
378 | fatal_cleanup(); | 385 | cleanup_exit(255); |
379 | } | 386 | } |
380 | 387 | ||
381 | /* Read other sides version identification. */ | 388 | /* Read other sides version identification. */ |
@@ -384,7 +391,7 @@ sshd_exchange_identification(int sock_in, int sock_out) | |||
384 | if (atomicio(read, sock_in, &buf[i], 1) != 1) { | 391 | if (atomicio(read, sock_in, &buf[i], 1) != 1) { |
385 | logit("Did not receive identification string from %s", | 392 | logit("Did not receive identification string from %s", |
386 | get_remote_ipaddr()); | 393 | get_remote_ipaddr()); |
387 | fatal_cleanup(); | 394 | cleanup_exit(255); |
388 | } | 395 | } |
389 | if (buf[i] == '\r') { | 396 | if (buf[i] == '\r') { |
390 | buf[i] = 0; | 397 | buf[i] = 0; |
@@ -414,7 +421,7 @@ sshd_exchange_identification(int sock_in, int sock_out) | |||
414 | close(sock_out); | 421 | close(sock_out); |
415 | logit("Bad protocol version identification '%.100s' from %s", | 422 | logit("Bad protocol version identification '%.100s' from %s", |
416 | client_version_string, get_remote_ipaddr()); | 423 | client_version_string, get_remote_ipaddr()); |
417 | fatal_cleanup(); | 424 | cleanup_exit(255); |
418 | } | 425 | } |
419 | debug("Client protocol version %d.%d; client software version %.100s", | 426 | debug("Client protocol version %d.%d; client software version %.100s", |
420 | remote_major, remote_minor, remote_version); | 427 | remote_major, remote_minor, remote_version); |
@@ -424,13 +431,13 @@ sshd_exchange_identification(int sock_in, int sock_out) | |||
424 | if (datafellows & SSH_BUG_PROBE) { | 431 | if (datafellows & SSH_BUG_PROBE) { |
425 | logit("probed from %s with %s. Don't panic.", | 432 | logit("probed from %s with %s. Don't panic.", |
426 | get_remote_ipaddr(), client_version_string); | 433 | get_remote_ipaddr(), client_version_string); |
427 | fatal_cleanup(); | 434 | cleanup_exit(255); |
428 | } | 435 | } |
429 | 436 | ||
430 | if (datafellows & SSH_BUG_SCANNER) { | 437 | if (datafellows & SSH_BUG_SCANNER) { |
431 | logit("scanned from %s with %s. Don't panic.", | 438 | logit("scanned from %s with %s. Don't panic.", |
432 | get_remote_ipaddr(), client_version_string); | 439 | get_remote_ipaddr(), client_version_string); |
433 | fatal_cleanup(); | 440 | cleanup_exit(255); |
434 | } | 441 | } |
435 | 442 | ||
436 | mismatch = 0; | 443 | mismatch = 0; |
@@ -476,7 +483,7 @@ sshd_exchange_identification(int sock_in, int sock_out) | |||
476 | logit("Protocol major versions differ for %s: %.200s vs. %.200s", | 483 | logit("Protocol major versions differ for %s: %.200s vs. %.200s", |
477 | get_remote_ipaddr(), | 484 | get_remote_ipaddr(), |
478 | server_version_string, client_version_string); | 485 | server_version_string, client_version_string); |
479 | fatal_cleanup(); | 486 | cleanup_exit(255); |
480 | } | 487 | } |
481 | } | 488 | } |
482 | 489 | ||
@@ -571,10 +578,9 @@ privsep_preauth_child(void) | |||
571 | #endif | 578 | #endif |
572 | } | 579 | } |
573 | 580 | ||
574 | static Authctxt * | 581 | static int |
575 | privsep_preauth(void) | 582 | privsep_preauth(Authctxt *authctxt) |
576 | { | 583 | { |
577 | Authctxt *authctxt = NULL; | ||
578 | int status; | 584 | int status; |
579 | pid_t pid; | 585 | pid_t pid; |
580 | 586 | ||
@@ -587,12 +593,11 @@ privsep_preauth(void) | |||
587 | if (pid == -1) { | 593 | if (pid == -1) { |
588 | fatal("fork of unprivileged child failed"); | 594 | fatal("fork of unprivileged child failed"); |
589 | } else if (pid != 0) { | 595 | } else if (pid != 0) { |
590 | fatal_remove_cleanup((void (*) (void *)) packet_close, NULL); | ||
591 | |||
592 | debug2("Network child is on pid %ld", (long)pid); | 596 | debug2("Network child is on pid %ld", (long)pid); |
593 | 597 | ||
594 | close(pmonitor->m_recvfd); | 598 | close(pmonitor->m_recvfd); |
595 | authctxt = monitor_child_preauth(pmonitor); | 599 | pmonitor->m_pid = pid; |
600 | monitor_child_preauth(authctxt, pmonitor); | ||
596 | close(pmonitor->m_sendfd); | 601 | close(pmonitor->m_sendfd); |
597 | 602 | ||
598 | /* Sync memory */ | 603 | /* Sync memory */ |
@@ -602,11 +607,7 @@ privsep_preauth(void) | |||
602 | while (waitpid(pid, &status, 0) < 0) | 607 | while (waitpid(pid, &status, 0) < 0) |
603 | if (errno != EINTR) | 608 | if (errno != EINTR) |
604 | break; | 609 | break; |
605 | 610 | return (1); | |
606 | /* Reinstall, since the child has finished */ | ||
607 | fatal_add_cleanup((void (*) (void *)) packet_close, NULL); | ||
608 | |||
609 | return (authctxt); | ||
610 | } else { | 611 | } else { |
611 | /* child */ | 612 | /* child */ |
612 | 613 | ||
@@ -617,17 +618,12 @@ privsep_preauth(void) | |||
617 | privsep_preauth_child(); | 618 | privsep_preauth_child(); |
618 | setproctitle("%s", "[net]"); | 619 | setproctitle("%s", "[net]"); |
619 | } | 620 | } |
620 | return (NULL); | 621 | return (0); |
621 | } | 622 | } |
622 | 623 | ||
623 | static void | 624 | static void |
624 | privsep_postauth(Authctxt *authctxt) | 625 | privsep_postauth(Authctxt *authctxt) |
625 | { | 626 | { |
626 | extern Authctxt *x_authctxt; | ||
627 | |||
628 | /* XXX - Remote port forwarding */ | ||
629 | x_authctxt = authctxt; | ||
630 | |||
631 | #ifdef DISABLE_FD_PASSING | 627 | #ifdef DISABLE_FD_PASSING |
632 | if (1) { | 628 | if (1) { |
633 | #else | 629 | #else |
@@ -653,8 +649,6 @@ privsep_postauth(Authctxt *authctxt) | |||
653 | if (pmonitor->m_pid == -1) | 649 | if (pmonitor->m_pid == -1) |
654 | fatal("fork of unprivileged child failed"); | 650 | fatal("fork of unprivileged child failed"); |
655 | else if (pmonitor->m_pid != 0) { | 651 | else if (pmonitor->m_pid != 0) { |
656 | fatal_remove_cleanup((void (*) (void *)) packet_close, NULL); | ||
657 | |||
658 | debug2("User child is on pid %ld", (long)pmonitor->m_pid); | 652 | debug2("User child is on pid %ld", (long)pmonitor->m_pid); |
659 | close(pmonitor->m_recvfd); | 653 | close(pmonitor->m_recvfd); |
660 | monitor_child_postauth(pmonitor); | 654 | monitor_child_postauth(pmonitor); |
@@ -679,7 +673,8 @@ static char * | |||
679 | list_hostkey_types(void) | 673 | list_hostkey_types(void) |
680 | { | 674 | { |
681 | Buffer b; | 675 | Buffer b; |
682 | char *p; | 676 | const char *p; |
677 | char *ret; | ||
683 | int i; | 678 | int i; |
684 | 679 | ||
685 | buffer_init(&b); | 680 | buffer_init(&b); |
@@ -698,10 +693,10 @@ list_hostkey_types(void) | |||
698 | } | 693 | } |
699 | } | 694 | } |
700 | buffer_append(&b, "\0", 1); | 695 | buffer_append(&b, "\0", 1); |
701 | p = xstrdup(buffer_ptr(&b)); | 696 | ret = xstrdup(buffer_ptr(&b)); |
702 | buffer_free(&b); | 697 | buffer_free(&b); |
703 | debug("list_hostkey_types: %s", p); | 698 | debug("list_hostkey_types: %s", ret); |
704 | return p; | 699 | return ret; |
705 | } | 700 | } |
706 | 701 | ||
707 | Key * | 702 | Key * |
@@ -769,7 +764,8 @@ drop_connection(int startups) | |||
769 | static void | 764 | static void |
770 | usage(void) | 765 | usage(void) |
771 | { | 766 | { |
772 | fprintf(stderr, "sshd version %s\n", SSH_VERSION); | 767 | fprintf(stderr, "sshd version %s, %s\n", |
768 | SSH_VERSION, SSLeay_version(SSLEAY_VERSION)); | ||
773 | fprintf(stderr, "Usage: %s [options]\n", __progname); | 769 | fprintf(stderr, "Usage: %s [options]\n", __progname); |
774 | fprintf(stderr, "Options:\n"); | 770 | fprintf(stderr, "Options:\n"); |
775 | fprintf(stderr, " -f file Configuration file (default %s)\n", _PATH_SERVER_CONFIG_FILE); | 771 | fprintf(stderr, " -f file Configuration file (default %s)\n", _PATH_SERVER_CONFIG_FILE); |
@@ -809,11 +805,12 @@ main(int ac, char **av) | |||
809 | FILE *f; | 805 | FILE *f; |
810 | struct addrinfo *ai; | 806 | struct addrinfo *ai; |
811 | char ntop[NI_MAXHOST], strport[NI_MAXSERV]; | 807 | char ntop[NI_MAXHOST], strport[NI_MAXSERV]; |
808 | char *line; | ||
812 | int listen_sock, maxfd; | 809 | int listen_sock, maxfd; |
813 | int startup_p[2]; | 810 | int startup_p[2]; |
814 | int startups = 0; | 811 | int startups = 0; |
815 | Authctxt *authctxt; | ||
816 | Key *key; | 812 | Key *key; |
813 | Authctxt *authctxt; | ||
817 | int ret, key_used = 0; | 814 | int ret, key_used = 0; |
818 | 815 | ||
819 | #ifdef HAVE_SECUREWARE | 816 | #ifdef HAVE_SECUREWARE |
@@ -917,9 +914,11 @@ main(int ac, char **av) | |||
917 | } | 914 | } |
918 | break; | 915 | break; |
919 | case 'o': | 916 | case 'o': |
920 | if (process_server_config_line(&options, optarg, | 917 | line = xstrdup(optarg); |
918 | if (process_server_config_line(&options, line, | ||
921 | "command-line", 0) != 0) | 919 | "command-line", 0) != 0) |
922 | exit(1); | 920 | exit(1); |
921 | xfree(line); | ||
923 | break; | 922 | break; |
924 | case '?': | 923 | case '?': |
925 | default: | 924 | default: |
@@ -1064,8 +1063,8 @@ main(int ac, char **av) | |||
1064 | /* | 1063 | /* |
1065 | * Clear out any supplemental groups we may have inherited. This | 1064 | * Clear out any supplemental groups we may have inherited. This |
1066 | * prevents inadvertent creation of files with bad modes (in the | 1065 | * prevents inadvertent creation of files with bad modes (in the |
1067 | * portable version at least, it's certainly possible for PAM | 1066 | * portable version at least, it's certainly possible for PAM |
1068 | * to create a file, and we can't control the code in every | 1067 | * to create a file, and we can't control the code in every |
1069 | * module which might be used). | 1068 | * module which might be used). |
1070 | */ | 1069 | */ |
1071 | if (setgroups(0, NULL) < 0) | 1070 | if (setgroups(0, NULL) < 0) |
@@ -1107,6 +1106,11 @@ main(int ac, char **av) | |||
1107 | unmounted if desired. */ | 1106 | unmounted if desired. */ |
1108 | chdir("/"); | 1107 | chdir("/"); |
1109 | 1108 | ||
1109 | #ifndef HAVE_CYGWIN | ||
1110 | /* Clear environment */ | ||
1111 | environ[0] = NULL; | ||
1112 | #endif | ||
1113 | |||
1110 | /* ignore SIGPIPE */ | 1114 | /* ignore SIGPIPE */ |
1111 | signal(SIGPIPE, SIG_IGN); | 1115 | signal(SIGPIPE, SIG_IGN); |
1112 | 1116 | ||
@@ -1175,7 +1179,7 @@ main(int ac, char **av) | |||
1175 | 1179 | ||
1176 | /* Start listening on the port. */ | 1180 | /* Start listening on the port. */ |
1177 | logit("Server listening on %s port %s.", ntop, strport); | 1181 | logit("Server listening on %s port %s.", ntop, strport); |
1178 | if (listen(listen_sock, 5) < 0) | 1182 | if (listen(listen_sock, SSH_LISTEN_BACKLOG) < 0) |
1179 | fatal("listen: %.100s", strerror(errno)); | 1183 | fatal("listen: %.100s", strerror(errno)); |
1180 | 1184 | ||
1181 | } | 1185 | } |
@@ -1414,8 +1418,8 @@ main(int ac, char **av) | |||
1414 | signal(SIGCHLD, SIG_DFL); | 1418 | signal(SIGCHLD, SIG_DFL); |
1415 | signal(SIGINT, SIG_DFL); | 1419 | signal(SIGINT, SIG_DFL); |
1416 | 1420 | ||
1417 | /* Set keepalives if requested. */ | 1421 | /* Set SO_KEEPALIVE if requested. */ |
1418 | if (options.keepalives && | 1422 | if (options.tcp_keep_alive && |
1419 | setsockopt(sock_in, SOL_SOCKET, SO_KEEPALIVE, &on, | 1423 | setsockopt(sock_in, SOL_SOCKET, SO_KEEPALIVE, &on, |
1420 | sizeof(on)) < 0) | 1424 | sizeof(on)) < 0) |
1421 | error("setsockopt SO_KEEPALIVE: %.100s", strerror(errno)); | 1425 | error("setsockopt SO_KEEPALIVE: %.100s", strerror(errno)); |
@@ -1465,21 +1469,28 @@ main(int ac, char **av) | |||
1465 | 1469 | ||
1466 | packet_set_nonblocking(); | 1470 | packet_set_nonblocking(); |
1467 | 1471 | ||
1468 | /* prepare buffers to collect authentication messages */ | 1472 | /* prepare buffers to collect authentication messages */ |
1469 | buffer_init(&loginmsg); | 1473 | buffer_init(&loginmsg); |
1470 | 1474 | ||
1475 | /* allocate authentication context */ | ||
1476 | authctxt = xmalloc(sizeof(*authctxt)); | ||
1477 | memset(authctxt, 0, sizeof(*authctxt)); | ||
1478 | |||
1479 | /* XXX global for cleanup, access from other modules */ | ||
1480 | the_authctxt = authctxt; | ||
1481 | |||
1471 | if (use_privsep) | 1482 | if (use_privsep) |
1472 | if ((authctxt = privsep_preauth()) != NULL) | 1483 | if (privsep_preauth(authctxt) == 1) |
1473 | goto authenticated; | 1484 | goto authenticated; |
1474 | 1485 | ||
1475 | /* perform the key exchange */ | 1486 | /* perform the key exchange */ |
1476 | /* authenticate user and start session */ | 1487 | /* authenticate user and start session */ |
1477 | if (compat20) { | 1488 | if (compat20) { |
1478 | do_ssh2_kex(); | 1489 | do_ssh2_kex(); |
1479 | authctxt = do_authentication2(); | 1490 | do_authentication2(authctxt); |
1480 | } else { | 1491 | } else { |
1481 | do_ssh1_kex(); | 1492 | do_ssh1_kex(); |
1482 | authctxt = do_authentication(); | 1493 | do_authentication(authctxt); |
1483 | } | 1494 | } |
1484 | /* | 1495 | /* |
1485 | * If we use privilege separation, the unprivileged child transfers | 1496 | * If we use privilege separation, the unprivileged child transfers |
@@ -1502,7 +1513,7 @@ main(int ac, char **av) | |||
1502 | destroy_sensitive_data(); | 1513 | destroy_sensitive_data(); |
1503 | } | 1514 | } |
1504 | 1515 | ||
1505 | /* Perform session preparation. */ | 1516 | /* Start session. */ |
1506 | do_authenticated(authctxt); | 1517 | do_authenticated(authctxt); |
1507 | 1518 | ||
1508 | /* The connection has been terminated. */ | 1519 | /* The connection has been terminated. */ |
@@ -1795,3 +1806,12 @@ do_ssh2_kex(void) | |||
1795 | #endif | 1806 | #endif |
1796 | debug("KEX done"); | 1807 | debug("KEX done"); |
1797 | } | 1808 | } |
1809 | |||
1810 | /* server specific fatal cleanup */ | ||
1811 | void | ||
1812 | cleanup_exit(int i) | ||
1813 | { | ||
1814 | if (the_authctxt) | ||
1815 | do_cleanup(the_authctxt); | ||
1816 | _exit(i); | ||
1817 | } | ||
diff --git a/sshd_config b/sshd_config index dd53f1057..b45c8c561 100644 --- a/sshd_config +++ b/sshd_config | |||
@@ -1,4 +1,4 @@ | |||
1 | # $OpenBSD: sshd_config,v 1.65 2003/08/28 12:54:34 markus Exp $ | 1 | # $OpenBSD: sshd_config,v 1.68 2003/12/29 16:39:50 millert Exp $ |
2 | 2 | ||
3 | # This is the sshd server system-wide configuration file. See | 3 | # This is the sshd server system-wide configuration file. See |
4 | # sshd_config(5) for more information. | 4 | # sshd_config(5) for more information. |
@@ -61,15 +61,16 @@ | |||
61 | #KerberosAuthentication no | 61 | #KerberosAuthentication no |
62 | #KerberosOrLocalPasswd yes | 62 | #KerberosOrLocalPasswd yes |
63 | #KerberosTicketCleanup yes | 63 | #KerberosTicketCleanup yes |
64 | #KerberosGetAFSToken no | ||
64 | 65 | ||
65 | # GSSAPI options | 66 | # GSSAPI options |
66 | #GSSAPIAuthentication no | 67 | #GSSAPIAuthentication no |
67 | #GSSAPICleanupCreds yes | 68 | #GSSAPICleanupCredentials yes |
68 | 69 | ||
69 | # Set this to 'yes' to enable PAM authentication (via challenge-response) | 70 | # Set this to 'yes' to enable PAM authentication (via challenge-response) |
70 | # and session processing. Depending on your PAM configuration, this may | 71 | # and session processing. Depending on your PAM configuration, this may |
71 | # bypass the setting of 'PasswordAuthentication' | 72 | # bypass the setting of 'PasswordAuthentication' and 'PermitEmptyPasswords' |
72 | #UsePAM yes | 73 | #UsePAM no |
73 | 74 | ||
74 | #AllowTcpForwarding yes | 75 | #AllowTcpForwarding yes |
75 | #GatewayPorts no | 76 | #GatewayPorts no |
@@ -78,7 +79,7 @@ | |||
78 | #X11UseLocalhost yes | 79 | #X11UseLocalhost yes |
79 | #PrintMotd yes | 80 | #PrintMotd yes |
80 | #PrintLastLog yes | 81 | #PrintLastLog yes |
81 | #KeepAlive yes | 82 | #TCPKeepAlive yes |
82 | #UseLogin no | 83 | #UseLogin no |
83 | #UsePrivilegeSeparation yes | 84 | #UsePrivilegeSeparation yes |
84 | #PermitUserEnvironment no | 85 | #PermitUserEnvironment no |
diff --git a/sshd_config.0 b/sshd_config.0 index 643db2640..981e91042 100644 --- a/sshd_config.0 +++ b/sshd_config.0 | |||
@@ -81,12 +81,12 @@ DESCRIPTION | |||
81 | If this threshold is reached while client alive messages are be- | 81 | If this threshold is reached while client alive messages are be- |
82 | ing sent, sshd will disconnect the client, terminating the ses- | 82 | ing sent, sshd will disconnect the client, terminating the ses- |
83 | sion. It is important to note that the use of client alive mes- | 83 | sion. It is important to note that the use of client alive mes- |
84 | sages is very different from KeepAlive (below). The client alive | 84 | sages is very different from TCPKeepAlive (below). The client |
85 | messages are sent through the encrypted channel and therefore | 85 | alive messages are sent through the encrypted channel and there- |
86 | will not be spoofable. The TCP keepalive option enabled by | 86 | fore will not be spoofable. The TCP keepalive option enabled by |
87 | KeepAlive is spoofable. The client alive mechanism is valuable | 87 | TCPKeepAlive is spoofable. The client alive mechanism is valu- |
88 | when the client or server depend on knowing when a connection has | 88 | able when the client or server depend on knowing when a connec- |
89 | become inactive. | 89 | tion has become inactive. |
90 | 90 | ||
91 | The default value is 3. If ClientAliveInterval (above) is set to | 91 | The default value is 3. If ClientAliveInterval (above) is set to |
92 | 15, and ClientAliveCountMax is left at the default, unresponsive | 92 | 15, and ClientAliveCountMax is left at the default, unresponsive |
@@ -162,21 +162,6 @@ DESCRIPTION | |||
162 | $HOME/.ssh/known_hosts during RhostsRSAAuthentication or | 162 | $HOME/.ssh/known_hosts during RhostsRSAAuthentication or |
163 | HostbasedAuthentication. The default is ``no''. | 163 | HostbasedAuthentication. The default is ``no''. |
164 | 164 | ||
165 | KeepAlive | ||
166 | Specifies whether the system should send TCP keepalive messages | ||
167 | to the other side. If they are sent, death of the connection or | ||
168 | crash of one of the machines will be properly noticed. However, | ||
169 | this means that connections will die if the route is down tem- | ||
170 | porarily, and some people find it annoying. On the other hand, | ||
171 | if keepalives are not sent, sessions may hang indefinitely on the | ||
172 | server, leaving ``ghost'' users and consuming server resources. | ||
173 | |||
174 | The default is ``yes'' (to send keepalives), and the server will | ||
175 | notice if the network goes down or the client host crashes. This | ||
176 | avoids infinitely hanging sessions. | ||
177 | |||
178 | To disable keepalives, the value should be set to ``no''. | ||
179 | |||
180 | KerberosAuthentication | 165 | KerberosAuthentication |
181 | Specifies whether the password provided by the user for | 166 | Specifies whether the password provided by the user for |
182 | PasswordAuthentication will be validated through the Kerberos | 167 | PasswordAuthentication will be validated through the Kerberos |
@@ -308,10 +293,7 @@ DESCRIPTION | |||
308 | PubkeyAuthentication | 293 | PubkeyAuthentication |
309 | Specifies whether public key authentication is allowed. The de- | 294 | Specifies whether public key authentication is allowed. The de- |
310 | fault is ``yes''. Note that this option applies to protocol ver- | 295 | fault is ``yes''. Note that this option applies to protocol ver- |
311 | sion 2 only. RhostsRSAAuthentication should be used instead, be- | 296 | sion 2 only. |
312 | cause it performs RSA-based host authentication in addition to | ||
313 | normal rhosts or /etc/hosts.equiv authentication. The default is | ||
314 | ``no''. This option applies to protocol version 1 only. | ||
315 | 297 | ||
316 | RhostsRSAAuthentication | 298 | RhostsRSAAuthentication |
317 | Specifies whether rhosts or /etc/hosts.equiv authentication to- | 299 | Specifies whether rhosts or /etc/hosts.equiv authentication to- |
@@ -349,6 +331,23 @@ DESCRIPTION | |||
349 | CAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7. The de- | 331 | CAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7. The de- |
350 | fault is AUTH. | 332 | fault is AUTH. |
351 | 333 | ||
334 | TCPKeepAlive | ||
335 | Specifies whether the system should send TCP keepalive messages | ||
336 | to the other side. If they are sent, death of the connection or | ||
337 | crash of one of the machines will be properly noticed. However, | ||
338 | this means that connections will die if the route is down tem- | ||
339 | porarily, and some people find it annoying. On the other hand, | ||
340 | if TCP keepalives are not sent, sessions may hang indefinitely on | ||
341 | the server, leaving ``ghost'' users and consuming server re- | ||
342 | sources. | ||
343 | |||
344 | The default is ``yes'' (to send TCP keepalive messages), and the | ||
345 | server will notice if the network goes down or the client host | ||
346 | crashes. This avoids infinitely hanging sessions. | ||
347 | |||
348 | To disable TCP keepalive messages, the value should be set to | ||
349 | ``no''. | ||
350 | |||
352 | UseDNS Specifies whether sshd should lookup the remote host name and | 351 | UseDNS Specifies whether sshd should lookup the remote host name and |
353 | check that the resolved host name for the remote IP address maps | 352 | check that the resolved host name for the remote IP address maps |
354 | back to the very same IP address. The default is ``yes''. | 353 | back to the very same IP address. The default is ``yes''. |
@@ -364,7 +363,7 @@ DESCRIPTION | |||
364 | UsePAM Enables PAM authentication (via challenge-response) and session | 363 | UsePAM Enables PAM authentication (via challenge-response) and session |
365 | set up. If you enable this, you should probably disable | 364 | set up. If you enable this, you should probably disable |
366 | PasswordAuthentication. If you enable then you will not be able | 365 | PasswordAuthentication. If you enable then you will not be able |
367 | to run sshd as a non-root user. | 366 | to run sshd as a non-root user. The default is ``no''. |
368 | 367 | ||
369 | UsePrivilegeSeparation | 368 | UsePrivilegeSeparation |
370 | Specifies whether sshd separates privileges by creating an un- | 369 | Specifies whether sshd separates privileges by creating an un- |
diff --git a/sshd_config.5 b/sshd_config.5 index 727fdb12a..41228248c 100644 --- a/sshd_config.5 +++ b/sshd_config.5 | |||
@@ -34,7 +34,7 @@ | |||
34 | .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | 34 | .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
35 | .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 35 | .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
36 | .\" | 36 | .\" |
37 | .\" $OpenBSD: sshd_config.5,v 1.25 2003/09/01 09:50:04 markus Exp $ | 37 | .\" $OpenBSD: sshd_config.5,v 1.28 2004/02/17 19:35:21 jmc Exp $ |
38 | .Dd September 25, 1999 | 38 | .Dd September 25, 1999 |
39 | .Dt SSHD_CONFIG 5 | 39 | .Dt SSHD_CONFIG 5 |
40 | .Os | 40 | .Os |
@@ -156,12 +156,12 @@ If this threshold is reached while client alive messages are being sent, | |||
156 | will disconnect the client, terminating the session. | 156 | will disconnect the client, terminating the session. |
157 | It is important to note that the use of client alive messages is very | 157 | It is important to note that the use of client alive messages is very |
158 | different from | 158 | different from |
159 | .Cm KeepAlive | 159 | .Cm TCPKeepAlive |
160 | (below). | 160 | (below). |
161 | The client alive messages are sent through the encrypted channel | 161 | The client alive messages are sent through the encrypted channel |
162 | and therefore will not be spoofable. | 162 | and therefore will not be spoofable. |
163 | The TCP keepalive option enabled by | 163 | The TCP keepalive option enabled by |
164 | .Cm KeepAlive | 164 | .Cm TCPKeepAlive |
165 | is spoofable. | 165 | is spoofable. |
166 | The client alive mechanism is valuable when the client or | 166 | The client alive mechanism is valuable when the client or |
167 | server depend on knowing when a connection has become inactive. | 167 | server depend on knowing when a connection has become inactive. |
@@ -227,7 +227,7 @@ The default is | |||
227 | .Dq no . | 227 | .Dq no . |
228 | .It Cm GSSAPIAuthentication | 228 | .It Cm GSSAPIAuthentication |
229 | Specifies whether user authentication based on GSSAPI is allowed. | 229 | Specifies whether user authentication based on GSSAPI is allowed. |
230 | The default is | 230 | The default is |
231 | .Dq no . | 231 | .Dq no . |
232 | Note that this option applies to protocol version 2 only. | 232 | Note that this option applies to protocol version 2 only. |
233 | .It Cm GSSAPICleanupCredentials | 233 | .It Cm GSSAPICleanupCredentials |
@@ -292,27 +292,6 @@ or | |||
292 | .Cm HostbasedAuthentication . | 292 | .Cm HostbasedAuthentication . |
293 | The default is | 293 | The default is |
294 | .Dq no . | 294 | .Dq no . |
295 | .It Cm KeepAlive | ||
296 | Specifies whether the system should send TCP keepalive messages to the | ||
297 | other side. | ||
298 | If they are sent, death of the connection or crash of one | ||
299 | of the machines will be properly noticed. | ||
300 | However, this means that | ||
301 | connections will die if the route is down temporarily, and some people | ||
302 | find it annoying. | ||
303 | On the other hand, if keepalives are not sent, | ||
304 | sessions may hang indefinitely on the server, leaving | ||
305 | .Dq ghost | ||
306 | users and consuming server resources. | ||
307 | .Pp | ||
308 | The default is | ||
309 | .Dq yes | ||
310 | (to send keepalives), and the server will notice | ||
311 | if the network goes down or the client host crashes. | ||
312 | This avoids infinitely hanging sessions. | ||
313 | .Pp | ||
314 | To disable keepalives, the value should be set to | ||
315 | .Dq no . | ||
316 | .It Cm KerberosAuthentication | 295 | .It Cm KerberosAuthentication |
317 | Specifies whether the password provided by the user for | 296 | Specifies whether the password provided by the user for |
318 | .Cm PasswordAuthentication | 297 | .Cm PasswordAuthentication |
@@ -533,13 +512,6 @@ Specifies whether public key authentication is allowed. | |||
533 | The default is | 512 | The default is |
534 | .Dq yes . | 513 | .Dq yes . |
535 | Note that this option applies to protocol version 2 only. | 514 | Note that this option applies to protocol version 2 only. |
536 | .Cm RhostsRSAAuthentication | ||
537 | should be used | ||
538 | instead, because it performs RSA-based host authentication in addition | ||
539 | to normal rhosts or /etc/hosts.equiv authentication. | ||
540 | The default is | ||
541 | .Dq no . | ||
542 | This option applies to protocol version 1 only. | ||
543 | .It Cm RhostsRSAAuthentication | 515 | .It Cm RhostsRSAAuthentication |
544 | Specifies whether rhosts or /etc/hosts.equiv authentication together | 516 | Specifies whether rhosts or /etc/hosts.equiv authentication together |
545 | with successful RSA host authentication is allowed. | 517 | with successful RSA host authentication is allowed. |
@@ -580,6 +552,27 @@ Gives the facility code that is used when logging messages from | |||
580 | The possible values are: DAEMON, USER, AUTH, LOCAL0, LOCAL1, LOCAL2, | 552 | The possible values are: DAEMON, USER, AUTH, LOCAL0, LOCAL1, LOCAL2, |
581 | LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7. | 553 | LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7. |
582 | The default is AUTH. | 554 | The default is AUTH. |
555 | .It Cm TCPKeepAlive | ||
556 | Specifies whether the system should send TCP keepalive messages to the | ||
557 | other side. | ||
558 | If they are sent, death of the connection or crash of one | ||
559 | of the machines will be properly noticed. | ||
560 | However, this means that | ||
561 | connections will die if the route is down temporarily, and some people | ||
562 | find it annoying. | ||
563 | On the other hand, if TCP keepalives are not sent, | ||
564 | sessions may hang indefinitely on the server, leaving | ||
565 | .Dq ghost | ||
566 | users and consuming server resources. | ||
567 | .Pp | ||
568 | The default is | ||
569 | .Dq yes | ||
570 | (to send TCP keepalive messages), and the server will notice | ||
571 | if the network goes down or the client host crashes. | ||
572 | This avoids infinitely hanging sessions. | ||
573 | .Pp | ||
574 | To disable TCP keepalive messages, the value should be set to | ||
575 | .Dq no . | ||
583 | .It Cm UseDNS | 576 | .It Cm UseDNS |
584 | Specifies whether | 577 | Specifies whether |
585 | .Nm sshd | 578 | .Nm sshd |
@@ -608,12 +601,13 @@ If | |||
608 | .Cm UsePrivilegeSeparation | 601 | .Cm UsePrivilegeSeparation |
609 | is specified, it will be disabled after authentication. | 602 | is specified, it will be disabled after authentication. |
610 | .It Cm UsePAM | 603 | .It Cm UsePAM |
611 | Enables PAM authentication (via challenge-response) and session set up. | 604 | Enables PAM authentication (via challenge-response) and session set up. |
612 | If you enable this, you should probably disable | 605 | If you enable this, you should probably disable |
613 | .Cm PasswordAuthentication . | 606 | .Cm PasswordAuthentication . |
614 | If you enable | 607 | If you enable |
615 | .CM UsePAM | 608 | .CM UsePAM |
616 | then you will not be able to run sshd as a non-root user. | 609 | then you will not be able to run sshd as a non-root user. The default is |
610 | .Dq no . | ||
617 | .It Cm UsePrivilegeSeparation | 611 | .It Cm UsePrivilegeSeparation |
618 | Specifies whether | 612 | Specifies whether |
619 | .Nm sshd | 613 | .Nm sshd |
@@ -12,7 +12,7 @@ | |||
12 | */ | 12 | */ |
13 | 13 | ||
14 | #include "includes.h" | 14 | #include "includes.h" |
15 | RCSID("$OpenBSD: sshpty.c,v 1.10 2003/06/12 07:57:38 markus Exp $"); | 15 | RCSID("$OpenBSD: sshpty.c,v 1.11 2004/01/11 21:55:06 deraadt Exp $"); |
16 | 16 | ||
17 | #ifdef HAVE_UTIL_H | 17 | #ifdef HAVE_UTIL_H |
18 | # include <util.h> | 18 | # include <util.h> |
@@ -22,17 +22,9 @@ RCSID("$OpenBSD: sshpty.c,v 1.10 2003/06/12 07:57:38 markus Exp $"); | |||
22 | #include "log.h" | 22 | #include "log.h" |
23 | #include "misc.h" | 23 | #include "misc.h" |
24 | 24 | ||
25 | /* Pty allocated with _getpty gets broken if we do I_PUSH:es to it. */ | ||
26 | #if defined(HAVE__GETPTY) || defined(HAVE_OPENPTY) | ||
27 | #undef HAVE_DEV_PTMX | ||
28 | #endif | ||
29 | |||
30 | #ifdef HAVE_PTY_H | 25 | #ifdef HAVE_PTY_H |
31 | # include <pty.h> | 26 | # include <pty.h> |
32 | #endif | 27 | #endif |
33 | #if defined(HAVE_DEV_PTMX) && defined(HAVE_SYS_STROPTS_H) | ||
34 | # include <sys/stropts.h> | ||
35 | #endif | ||
36 | 28 | ||
37 | #ifndef O_NOCTTY | 29 | #ifndef O_NOCTTY |
38 | #define O_NOCTTY 0 | 30 | #define O_NOCTTY 0 |
@@ -48,7 +40,6 @@ RCSID("$OpenBSD: sshpty.c,v 1.10 2003/06/12 07:57:38 markus Exp $"); | |||
48 | int | 40 | int |
49 | pty_allocate(int *ptyfd, int *ttyfd, char *namebuf, int namebuflen) | 41 | pty_allocate(int *ptyfd, int *ttyfd, char *namebuf, int namebuflen) |
50 | { | 42 | { |
51 | #if defined(HAVE_OPENPTY) || defined(BSD4_4) | ||
52 | /* openpty(3) exists in OSF/1 and some other os'es */ | 43 | /* openpty(3) exists in OSF/1 and some other os'es */ |
53 | char *name; | 44 | char *name; |
54 | int i; | 45 | int i; |
@@ -64,187 +55,6 @@ pty_allocate(int *ptyfd, int *ttyfd, char *namebuf, int namebuflen) | |||
64 | 55 | ||
65 | strlcpy(namebuf, name, namebuflen); /* possible truncation */ | 56 | strlcpy(namebuf, name, namebuflen); /* possible truncation */ |
66 | return 1; | 57 | return 1; |
67 | #else /* HAVE_OPENPTY */ | ||
68 | #ifdef HAVE__GETPTY | ||
69 | /* | ||
70 | * _getpty(3) exists in SGI Irix 4.x, 5.x & 6.x -- it generates more | ||
71 | * pty's automagically when needed | ||
72 | */ | ||
73 | char *slave; | ||
74 | |||
75 | slave = _getpty(ptyfd, O_RDWR, 0622, 0); | ||
76 | if (slave == NULL) { | ||
77 | error("_getpty: %.100s", strerror(errno)); | ||
78 | return 0; | ||
79 | } | ||
80 | strlcpy(namebuf, slave, namebuflen); | ||
81 | /* Open the slave side. */ | ||
82 | *ttyfd = open(namebuf, O_RDWR | O_NOCTTY); | ||
83 | if (*ttyfd < 0) { | ||
84 | error("%.200s: %.100s", namebuf, strerror(errno)); | ||
85 | close(*ptyfd); | ||
86 | return 0; | ||
87 | } | ||
88 | return 1; | ||
89 | #else /* HAVE__GETPTY */ | ||
90 | #if defined(HAVE_DEV_PTMX) | ||
91 | /* | ||
92 | * This code is used e.g. on Solaris 2.x. (Note that Solaris 2.3 | ||
93 | * also has bsd-style ptys, but they simply do not work.) | ||
94 | */ | ||
95 | int ptm; | ||
96 | char *pts; | ||
97 | mysig_t old_signal; | ||
98 | |||
99 | ptm = open("/dev/ptmx", O_RDWR | O_NOCTTY); | ||
100 | if (ptm < 0) { | ||
101 | error("/dev/ptmx: %.100s", strerror(errno)); | ||
102 | return 0; | ||
103 | } | ||
104 | old_signal = signal(SIGCHLD, SIG_DFL); | ||
105 | if (grantpt(ptm) < 0) { | ||
106 | error("grantpt: %.100s", strerror(errno)); | ||
107 | return 0; | ||
108 | } | ||
109 | signal(SIGCHLD, old_signal); | ||
110 | if (unlockpt(ptm) < 0) { | ||
111 | error("unlockpt: %.100s", strerror(errno)); | ||
112 | return 0; | ||
113 | } | ||
114 | pts = ptsname(ptm); | ||
115 | if (pts == NULL) | ||
116 | error("Slave pty side name could not be obtained."); | ||
117 | strlcpy(namebuf, pts, namebuflen); | ||
118 | *ptyfd = ptm; | ||
119 | |||
120 | /* Open the slave side. */ | ||
121 | *ttyfd = open(namebuf, O_RDWR | O_NOCTTY); | ||
122 | if (*ttyfd < 0) { | ||
123 | error("%.100s: %.100s", namebuf, strerror(errno)); | ||
124 | close(*ptyfd); | ||
125 | return 0; | ||
126 | } | ||
127 | #ifndef HAVE_CYGWIN | ||
128 | /* | ||
129 | * Push the appropriate streams modules, as described in Solaris pts(7). | ||
130 | * HP-UX pts(7) doesn't have ttcompat module. | ||
131 | */ | ||
132 | if (ioctl(*ttyfd, I_PUSH, "ptem") < 0) | ||
133 | error("ioctl I_PUSH ptem: %.100s", strerror(errno)); | ||
134 | if (ioctl(*ttyfd, I_PUSH, "ldterm") < 0) | ||
135 | error("ioctl I_PUSH ldterm: %.100s", strerror(errno)); | ||
136 | #ifndef __hpux | ||
137 | if (ioctl(*ttyfd, I_PUSH, "ttcompat") < 0) | ||
138 | error("ioctl I_PUSH ttcompat: %.100s", strerror(errno)); | ||
139 | #endif | ||
140 | #endif | ||
141 | return 1; | ||
142 | #else /* HAVE_DEV_PTMX */ | ||
143 | #ifdef HAVE_DEV_PTS_AND_PTC | ||
144 | /* AIX-style pty code. */ | ||
145 | const char *name; | ||
146 | |||
147 | *ptyfd = open("/dev/ptc", O_RDWR | O_NOCTTY); | ||
148 | if (*ptyfd < 0) { | ||
149 | error("Could not open /dev/ptc: %.100s", strerror(errno)); | ||
150 | return 0; | ||
151 | } | ||
152 | name = ttyname(*ptyfd); | ||
153 | if (!name) | ||
154 | fatal("Open of /dev/ptc returns device for which ttyname fails."); | ||
155 | strlcpy(namebuf, name, namebuflen); | ||
156 | *ttyfd = open(name, O_RDWR | O_NOCTTY); | ||
157 | if (*ttyfd < 0) { | ||
158 | error("Could not open pty slave side %.100s: %.100s", | ||
159 | name, strerror(errno)); | ||
160 | close(*ptyfd); | ||
161 | return 0; | ||
162 | } | ||
163 | return 1; | ||
164 | #else /* HAVE_DEV_PTS_AND_PTC */ | ||
165 | #ifdef _UNICOS | ||
166 | char buf[64]; | ||
167 | int i; | ||
168 | int highpty; | ||
169 | |||
170 | #ifdef _SC_CRAY_NPTY | ||
171 | highpty = sysconf(_SC_CRAY_NPTY); | ||
172 | if (highpty == -1) | ||
173 | highpty = 128; | ||
174 | #else | ||
175 | highpty = 128; | ||
176 | #endif | ||
177 | |||
178 | for (i = 0; i < highpty; i++) { | ||
179 | snprintf(buf, sizeof(buf), "/dev/pty/%03d", i); | ||
180 | *ptyfd = open(buf, O_RDWR|O_NOCTTY); | ||
181 | if (*ptyfd < 0) | ||
182 | continue; | ||
183 | snprintf(namebuf, namebuflen, "/dev/ttyp%03d", i); | ||
184 | /* Open the slave side. */ | ||
185 | *ttyfd = open(namebuf, O_RDWR|O_NOCTTY); | ||
186 | if (*ttyfd < 0) { | ||
187 | error("%.100s: %.100s", namebuf, strerror(errno)); | ||
188 | close(*ptyfd); | ||
189 | return 0; | ||
190 | } | ||
191 | return 1; | ||
192 | } | ||
193 | return 0; | ||
194 | #else | ||
195 | /* BSD-style pty code. */ | ||
196 | char buf[64]; | ||
197 | int i; | ||
198 | const char *ptymajors = "pqrstuvwxyzabcdefghijklmnoABCDEFGHIJKLMNOPQRSTUVWXYZ"; | ||
199 | const char *ptyminors = "0123456789abcdef"; | ||
200 | int num_minors = strlen(ptyminors); | ||
201 | int num_ptys = strlen(ptymajors) * num_minors; | ||
202 | struct termios tio; | ||
203 | |||
204 | for (i = 0; i < num_ptys; i++) { | ||
205 | snprintf(buf, sizeof buf, "/dev/pty%c%c", ptymajors[i / num_minors], | ||
206 | ptyminors[i % num_minors]); | ||
207 | snprintf(namebuf, namebuflen, "/dev/tty%c%c", | ||
208 | ptymajors[i / num_minors], ptyminors[i % num_minors]); | ||
209 | |||
210 | *ptyfd = open(buf, O_RDWR | O_NOCTTY); | ||
211 | if (*ptyfd < 0) { | ||
212 | /* Try SCO style naming */ | ||
213 | snprintf(buf, sizeof buf, "/dev/ptyp%d", i); | ||
214 | snprintf(namebuf, namebuflen, "/dev/ttyp%d", i); | ||
215 | *ptyfd = open(buf, O_RDWR | O_NOCTTY); | ||
216 | if (*ptyfd < 0) | ||
217 | continue; | ||
218 | } | ||
219 | |||
220 | /* Open the slave side. */ | ||
221 | *ttyfd = open(namebuf, O_RDWR | O_NOCTTY); | ||
222 | if (*ttyfd < 0) { | ||
223 | error("%.100s: %.100s", namebuf, strerror(errno)); | ||
224 | close(*ptyfd); | ||
225 | return 0; | ||
226 | } | ||
227 | /* set tty modes to a sane state for broken clients */ | ||
228 | if (tcgetattr(*ptyfd, &tio) < 0) | ||
229 | logit("Getting tty modes for pty failed: %.100s", strerror(errno)); | ||
230 | else { | ||
231 | tio.c_lflag |= (ECHO | ISIG | ICANON); | ||
232 | tio.c_oflag |= (OPOST | ONLCR); | ||
233 | tio.c_iflag |= ICRNL; | ||
234 | |||
235 | /* Set the new modes for the terminal. */ | ||
236 | if (tcsetattr(*ptyfd, TCSANOW, &tio) < 0) | ||
237 | logit("Setting tty modes for pty failed: %.100s", strerror(errno)); | ||
238 | } | ||
239 | |||
240 | return 1; | ||
241 | } | ||
242 | return 0; | ||
243 | #endif /* CRAY */ | ||
244 | #endif /* HAVE_DEV_PTS_AND_PTC */ | ||
245 | #endif /* HAVE_DEV_PTMX */ | ||
246 | #endif /* HAVE__GETPTY */ | ||
247 | #endif /* HAVE_OPENPTY */ | ||
248 | } | 58 | } |
249 | 59 | ||
250 | /* Releases the tty. Its ownership is returned to root, and permissions to 0666. */ | 60 | /* Releases the tty. Its ownership is returned to root, and permissions to 0666. */ |
@@ -343,7 +153,7 @@ pty_make_controlling_tty(int *ttyfd, const char *ttyname) | |||
343 | if (fd < 0) | 153 | if (fd < 0) |
344 | error("open /dev/tty failed - could not set controlling tty: %.100s", | 154 | error("open /dev/tty failed - could not set controlling tty: %.100s", |
345 | strerror(errno)); | 155 | strerror(errno)); |
346 | else | 156 | else |
347 | close(fd); | 157 | close(fd); |
348 | #endif /* _UNICOS */ | 158 | #endif /* _UNICOS */ |
349 | } | 159 | } |
@@ -35,7 +35,7 @@ | |||
35 | */ | 35 | */ |
36 | 36 | ||
37 | #include "includes.h" | 37 | #include "includes.h" |
38 | RCSID("$OpenBSD: sshtty.c,v 1.4 2003/07/16 10:36:28 markus Exp $"); | 38 | RCSID("$OpenBSD: sshtty.c,v 1.5 2003/09/19 17:43:35 markus Exp $"); |
39 | 39 | ||
40 | #include "sshtty.h" | 40 | #include "sshtty.h" |
41 | #include "log.h" | 41 | #include "log.h" |
@@ -43,12 +43,6 @@ RCSID("$OpenBSD: sshtty.c,v 1.4 2003/07/16 10:36:28 markus Exp $"); | |||
43 | static struct termios _saved_tio; | 43 | static struct termios _saved_tio; |
44 | static int _in_raw_mode = 0; | 44 | static int _in_raw_mode = 0; |
45 | 45 | ||
46 | int | ||
47 | in_raw_mode(void) | ||
48 | { | ||
49 | return _in_raw_mode; | ||
50 | } | ||
51 | |||
52 | struct termios | 46 | struct termios |
53 | get_saved_tio(void) | 47 | get_saved_tio(void) |
54 | { | 48 | { |
@@ -64,8 +58,6 @@ leave_raw_mode(void) | |||
64 | perror("tcsetattr"); | 58 | perror("tcsetattr"); |
65 | else | 59 | else |
66 | _in_raw_mode = 0; | 60 | _in_raw_mode = 0; |
67 | |||
68 | fatal_remove_cleanup((void (*) (void *)) leave_raw_mode, NULL); | ||
69 | } | 61 | } |
70 | 62 | ||
71 | void | 63 | void |
@@ -94,6 +86,4 @@ enter_raw_mode(void) | |||
94 | perror("tcsetattr"); | 86 | perror("tcsetattr"); |
95 | else | 87 | else |
96 | _in_raw_mode = 1; | 88 | _in_raw_mode = 1; |
97 | |||
98 | fatal_add_cleanup((void (*) (void *)) leave_raw_mode, NULL); | ||
99 | } | 89 | } |
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: sshtty.h,v 1.2 2001/06/26 17:27:25 markus Exp $ */ | 1 | /* $OpenBSD: sshtty.h,v 1.3 2003/09/19 17:43:35 markus Exp $ */ |
2 | /* | 2 | /* |
3 | * Author: Tatu Ylonen <ylo@cs.hut.fi> | 3 | * Author: Tatu Ylonen <ylo@cs.hut.fi> |
4 | * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland | 4 | * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland |
@@ -40,7 +40,6 @@ | |||
40 | 40 | ||
41 | #include <termios.h> | 41 | #include <termios.h> |
42 | 42 | ||
43 | int in_raw_mode(void); | ||
44 | struct termios get_saved_tio(void); | 43 | struct termios get_saved_tio(void); |
45 | void leave_raw_mode(void); | 44 | void leave_raw_mode(void); |
46 | void enter_raw_mode(void); | 45 | void enter_raw_mode(void); |
diff --git a/stamp-h.in b/stamp-h.in new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/stamp-h.in | |||
@@ -16,6 +16,7 @@ RCSID("$OpenBSD: uidswap.c,v 1.24 2003/05/29 16:58:45 deraadt Exp $"); | |||
16 | 16 | ||
17 | #include "log.h" | 17 | #include "log.h" |
18 | #include "uidswap.h" | 18 | #include "uidswap.h" |
19 | #include "xmalloc.h" | ||
19 | 20 | ||
20 | /* | 21 | /* |
21 | * Note: all these functions must work in all of the following cases: | 22 | * Note: all these functions must work in all of the following cases: |
@@ -38,7 +39,7 @@ static gid_t saved_egid = 0; | |||
38 | /* Saved effective uid. */ | 39 | /* Saved effective uid. */ |
39 | static int privileged = 0; | 40 | static int privileged = 0; |
40 | static int temporarily_use_uid_effective = 0; | 41 | static int temporarily_use_uid_effective = 0; |
41 | static gid_t saved_egroups[NGROUPS_MAX], user_groups[NGROUPS_MAX]; | 42 | static gid_t *saved_egroups = NULL, *user_groups = NULL; |
42 | static int saved_egroupslen = -1, user_groupslen = -1; | 43 | static int saved_egroupslen = -1, user_groupslen = -1; |
43 | 44 | ||
44 | /* | 45 | /* |
@@ -68,18 +69,38 @@ temporarily_use_uid(struct passwd *pw) | |||
68 | 69 | ||
69 | privileged = 1; | 70 | privileged = 1; |
70 | temporarily_use_uid_effective = 1; | 71 | temporarily_use_uid_effective = 1; |
71 | saved_egroupslen = getgroups(NGROUPS_MAX, saved_egroups); | 72 | |
73 | saved_egroupslen = getgroups(0, NULL); | ||
72 | if (saved_egroupslen < 0) | 74 | if (saved_egroupslen < 0) |
73 | fatal("getgroups: %.100s", strerror(errno)); | 75 | fatal("getgroups: %.100s", strerror(errno)); |
76 | if (saved_egroupslen > 0) { | ||
77 | saved_egroups = xrealloc(saved_egroups, | ||
78 | saved_egroupslen * sizeof(gid_t)); | ||
79 | if (getgroups(saved_egroupslen, saved_egroups) < 0) | ||
80 | fatal("getgroups: %.100s", strerror(errno)); | ||
81 | } else { /* saved_egroupslen == 0 */ | ||
82 | if (saved_egroups != NULL) | ||
83 | xfree(saved_egroups); | ||
84 | } | ||
74 | 85 | ||
75 | /* set and save the user's groups */ | 86 | /* set and save the user's groups */ |
76 | if (user_groupslen == -1) { | 87 | if (user_groupslen == -1) { |
77 | if (initgroups(pw->pw_name, pw->pw_gid) < 0) | 88 | if (initgroups(pw->pw_name, pw->pw_gid) < 0) |
78 | fatal("initgroups: %s: %.100s", pw->pw_name, | 89 | fatal("initgroups: %s: %.100s", pw->pw_name, |
79 | strerror(errno)); | 90 | strerror(errno)); |
80 | user_groupslen = getgroups(NGROUPS_MAX, user_groups); | 91 | |
92 | user_groupslen = getgroups(0, NULL); | ||
81 | if (user_groupslen < 0) | 93 | if (user_groupslen < 0) |
82 | fatal("getgroups: %.100s", strerror(errno)); | 94 | fatal("getgroups: %.100s", strerror(errno)); |
95 | if (user_groupslen > 0) { | ||
96 | user_groups = xrealloc(user_groups, | ||
97 | user_groupslen * sizeof(gid_t)); | ||
98 | if (getgroups(user_groupslen, user_groups) < 0) | ||
99 | fatal("getgroups: %.100s", strerror(errno)); | ||
100 | } else { /* user_groupslen == 0 */ | ||
101 | if (user_groups) | ||
102 | xfree(user_groups); | ||
103 | } | ||
83 | } | 104 | } |
84 | /* Set the effective uid to the given (unprivileged) uid. */ | 105 | /* Set the effective uid to the given (unprivileged) uid. */ |
85 | if (setgroups(user_groupslen, user_groups) < 0) | 106 | if (setgroups(user_groupslen, user_groups) < 0) |
@@ -151,7 +172,7 @@ permanently_set_uid(struct passwd *pw) | |||
151 | debug("permanently_set_uid: %u/%u", (u_int)pw->pw_uid, | 172 | debug("permanently_set_uid: %u/%u", (u_int)pw->pw_uid, |
152 | (u_int)pw->pw_gid); | 173 | (u_int)pw->pw_gid); |
153 | 174 | ||
154 | #if defined(HAVE_SETRESGID) | 175 | #if defined(HAVE_SETRESGID) && !defined(BROKEN_SETRESGID) |
155 | if (setresgid(pw->pw_gid, pw->pw_gid, pw->pw_gid) < 0) | 176 | if (setresgid(pw->pw_gid, pw->pw_gid, pw->pw_gid) < 0) |
156 | fatal("setresgid %u: %.100s", (u_int)pw->pw_gid, strerror(errno)); | 177 | fatal("setresgid %u: %.100s", (u_int)pw->pw_gid, strerror(errno)); |
157 | #elif defined(HAVE_SETREGID) && !defined(BROKEN_SETREGID) | 178 | #elif defined(HAVE_SETREGID) && !defined(BROKEN_SETREGID) |
@@ -164,7 +185,7 @@ permanently_set_uid(struct passwd *pw) | |||
164 | fatal("setgid %u: %.100s", (u_int)pw->pw_gid, strerror(errno)); | 185 | fatal("setgid %u: %.100s", (u_int)pw->pw_gid, strerror(errno)); |
165 | #endif | 186 | #endif |
166 | 187 | ||
167 | #if defined(HAVE_SETRESUID) | 188 | #if defined(HAVE_SETRESUID) && !defined(BROKEN_SETRESUID) |
168 | if (setresuid(pw->pw_uid, pw->pw_uid, pw->pw_uid) < 0) | 189 | if (setresuid(pw->pw_uid, pw->pw_uid, pw->pw_uid) < 0) |
169 | fatal("setresuid %u: %.100s", (u_int)pw->pw_uid, strerror(errno)); | 190 | fatal("setresuid %u: %.100s", (u_int)pw->pw_uid, strerror(errno)); |
170 | #elif defined(HAVE_SETREUID) && !defined(BROKEN_SETREUID) | 191 | #elif defined(HAVE_SETREUID) && !defined(BROKEN_SETREUID) |
@@ -180,28 +201,28 @@ permanently_set_uid(struct passwd *pw) | |||
180 | #endif | 201 | #endif |
181 | 202 | ||
182 | /* Try restoration of GID if changed (test clearing of saved gid) */ | 203 | /* Try restoration of GID if changed (test clearing of saved gid) */ |
183 | if (old_gid != pw->pw_gid && | 204 | if (old_gid != pw->pw_gid && |
184 | (setgid(old_gid) != -1 || setegid(old_gid) != -1)) | 205 | (setgid(old_gid) != -1 || setegid(old_gid) != -1)) |
185 | fatal("%s: was able to restore old [e]gid", __func__); | 206 | fatal("%s: was able to restore old [e]gid", __func__); |
186 | 207 | ||
187 | /* Verify GID drop was successful */ | 208 | /* Verify GID drop was successful */ |
188 | if (getgid() != pw->pw_gid || getegid() != pw->pw_gid) { | 209 | if (getgid() != pw->pw_gid || getegid() != pw->pw_gid) { |
189 | fatal("%s: egid incorrect gid:%u egid:%u (should be %u)", | 210 | fatal("%s: egid incorrect gid:%u egid:%u (should be %u)", |
190 | __func__, (u_int)getgid(), (u_int)getegid(), | 211 | __func__, (u_int)getgid(), (u_int)getegid(), |
191 | (u_int)pw->pw_gid); | 212 | (u_int)pw->pw_gid); |
192 | } | 213 | } |
193 | 214 | ||
194 | #ifndef HAVE_CYGWIN | 215 | #ifndef HAVE_CYGWIN |
195 | /* Try restoration of UID if changed (test clearing of saved uid) */ | 216 | /* Try restoration of UID if changed (test clearing of saved uid) */ |
196 | if (old_uid != pw->pw_uid && | 217 | if (old_uid != pw->pw_uid && |
197 | (setuid(old_uid) != -1 || seteuid(old_uid) != -1)) | 218 | (setuid(old_uid) != -1 || seteuid(old_uid) != -1)) |
198 | fatal("%s: was able to restore old [e]uid", __func__); | 219 | fatal("%s: was able to restore old [e]uid", __func__); |
199 | #endif | 220 | #endif |
200 | 221 | ||
201 | /* Verify UID drop was successful */ | 222 | /* Verify UID drop was successful */ |
202 | if (getuid() != pw->pw_uid || geteuid() != pw->pw_uid) { | 223 | if (getuid() != pw->pw_uid || geteuid() != pw->pw_uid) { |
203 | fatal("%s: euid incorrect uid:%u euid:%u (should be %u)", | 224 | fatal("%s: euid incorrect uid:%u euid:%u (should be %u)", |
204 | __func__, (u_int)getuid(), (u_int)geteuid(), | 225 | __func__, (u_int)getuid(), (u_int)geteuid(), |
205 | (u_int)pw->pw_uid); | 226 | (u_int)pw->pw_uid); |
206 | } | 227 | } |
207 | } | 228 | } |
diff --git a/uuencode.c b/uuencode.c index 21eaf4d3f..0a7c8d16a 100644 --- a/uuencode.c +++ b/uuencode.c | |||
@@ -23,13 +23,13 @@ | |||
23 | */ | 23 | */ |
24 | 24 | ||
25 | #include "includes.h" | 25 | #include "includes.h" |
26 | RCSID("$OpenBSD: uuencode.c,v 1.16 2002/09/09 14:54:15 markus Exp $"); | 26 | RCSID("$OpenBSD: uuencode.c,v 1.17 2003/11/10 16:23:41 jakob Exp $"); |
27 | 27 | ||
28 | #include "xmalloc.h" | 28 | #include "xmalloc.h" |
29 | #include "uuencode.h" | 29 | #include "uuencode.h" |
30 | 30 | ||
31 | int | 31 | int |
32 | uuencode(u_char *src, u_int srclength, | 32 | uuencode(const u_char *src, u_int srclength, |
33 | char *target, size_t targsize) | 33 | char *target, size_t targsize) |
34 | { | 34 | { |
35 | return __b64_ntop(src, srclength, target, targsize); | 35 | return __b64_ntop(src, srclength, target, targsize); |
diff --git a/uuencode.h b/uuencode.h index 682b623ac..08e87c4bc 100644 --- a/uuencode.h +++ b/uuencode.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: uuencode.h,v 1.9 2002/02/25 16:33:27 markus Exp $ */ | 1 | /* $OpenBSD: uuencode.h,v 1.10 2003/11/10 16:23:41 jakob Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 2000 Markus Friedl. All rights reserved. | 4 | * Copyright (c) 2000 Markus Friedl. All rights reserved. |
@@ -26,7 +26,7 @@ | |||
26 | 26 | ||
27 | #ifndef UUENCODE_H | 27 | #ifndef UUENCODE_H |
28 | #define UUENCODE_H | 28 | #define UUENCODE_H |
29 | int uuencode(u_char *, u_int, char *, size_t); | 29 | int uuencode(const u_char *, u_int, char *, size_t); |
30 | int uudecode(const char *, u_char *, size_t); | 30 | int uudecode(const char *, u_char *, size_t); |
31 | void dump_base64(FILE *, u_char *, u_int); | 31 | void dump_base64(FILE *, u_char *, u_int); |
32 | #endif | 32 | #endif |
@@ -1,3 +1,3 @@ | |||
1 | /* $OpenBSD: version.h,v 1.39 2003/09/16 21:02:40 markus Exp $ */ | 1 | /* $OpenBSD: version.h,v 1.40 2004/02/23 15:16:46 markus Exp $ */ |
2 | 2 | ||
3 | #define SSH_VERSION "OpenSSH_3.7.1p2" | 3 | #define SSH_VERSION "OpenSSH_3.8p1" |