summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Miller <djm@mindrot.org>2000-09-29 23:01:36 +1100
committerDamien Miller <djm@mindrot.org>2000-09-29 23:01:36 +1100
commit78315eb6d6bf411b07d9e0bc1ede41fae9484f25 (patch)
tree6c1ff91e092df4d86b076f7f4917764bb6d17f5e
parentcb5e44a440c1b310a9dc5b8b5abe32fe11ed479b (diff)
- (djm) Merged big SCO portability patch from Tim Rice
<tim@multitalents.net>
-rw-r--r--CREDITS3
-rw-r--r--ChangeLog2
-rw-r--r--Makefile.in30
-rw-r--r--acconfig.h6
-rw-r--r--auth-passwd.c16
-rw-r--r--authfile.c2
-rw-r--r--channels.c4
-rw-r--r--configure.in87
-rw-r--r--defines.h22
-rw-r--r--includes.h1
-rw-r--r--scp.c14
-rw-r--r--ssh-agent.c2
-rw-r--r--ssh.c2
-rw-r--r--sshd.c4
14 files changed, 164 insertions, 31 deletions
diff --git a/CREDITS b/CREDITS
index 78ce2d697..a26743943 100644
--- a/CREDITS
+++ b/CREDITS
@@ -62,13 +62,14 @@ Pavel Troller <patrol@omni.sinus.cz> - Bugfixes
62Pekka Savola <pekkas@netcore.fi> - Bugfixes 62Pekka Savola <pekkas@netcore.fi> - Bugfixes
63Peter Kocks <peter.kocks@baygate.com> - Makefile fixes 63Peter Kocks <peter.kocks@baygate.com> - Makefile fixes
64Phil Hands <phil@hands.com> - Debian scripts, assorted patches 64Phil Hands <phil@hands.com> - Debian scripts, assorted patches
65Phil Karn <karn@ka9q.ampr.org> - Autoconf fix 65Phil Karn <karn@ka9q.ampr.org> - Autoconf fixes
66Phill Camp <P.S.S.Camp@ukc.ac.uk> - login code fix 66Phill Camp <P.S.S.Camp@ukc.ac.uk> - login code fix
67Rip Loomis <loomisg@cist.saic.com> - Solaris package support, fixes 67Rip Loomis <loomisg@cist.saic.com> - Solaris package support, fixes
68SAKAI Kiyotaka <ksakai@kso.netwk.ntt-at.co.jp> - Multiple bugfixes 68SAKAI Kiyotaka <ksakai@kso.netwk.ntt-at.co.jp> - Multiple bugfixes
69Simon Wilkinson <sxw@dcs.ed.ac.uk> - PAM fixes 69Simon Wilkinson <sxw@dcs.ed.ac.uk> - PAM fixes
70Svante Signell <svante.signell@telia.com> - Bugfixes 70Svante Signell <svante.signell@telia.com> - Bugfixes
71Thomas Neumann <tom@smart.ruhr.de> - Shadow passwords 71Thomas Neumann <tom@smart.ruhr.de> - Shadow passwords
72Tim Rice <tim@multitalents.net> - Portability & SCO fixes
72Tom Bertelson's <tbert@abac.com> - AIX auth fixes 73Tom Bertelson's <tbert@abac.com> - AIX auth fixes
73Tor-Ake Fransson <torake@hotmail.com> - AIX support 74Tor-Ake Fransson <torake@hotmail.com> - AIX support
74Tudor Bosman <tudorb@jm.nu> - MD5 password support 75Tudor Bosman <tudorb@jm.nu> - MD5 password support
diff --git a/ChangeLog b/ChangeLog
index 04173dce6..efc6fb03d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,6 +4,8 @@
4 <peak@argo.troja.mff.cuni.cz> 4 <peak@argo.troja.mff.cuni.cz>
5 - (djm) Clean up. Strip some unnecessary differences with OpenBSD's code, 5 - (djm) Clean up. Strip some unnecessary differences with OpenBSD's code,
6 tidy necessary differences. Use Markus' new debugN() in entropy.c 6 tidy necessary differences. Use Markus' new debugN() in entropy.c
7 - (djm) Merged big SCO portability patch from Tim Rice
8 <tim@multitalents.net>
7 9
820000926 1020000926
9 - (djm) Update X11-askpass to 1.0.2 in RPM spec file 11 - (djm) Update X11-askpass to 1.0.2 in RPM spec file
diff --git a/Makefile.in b/Makefile.in
index 626e79f65..2d47f637c 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -20,7 +20,7 @@ ASKPASS_PROGRAM=$(libexecdir)/ssh-askpass
20CC=@CC@ 20CC=@CC@
21LD=@LD@ 21LD=@LD@
22PATHS=-DETCDIR=\"$(sysconfdir)\" -DSSH_PROGRAM=\"$(SSH_PROGRAM)\" -DSSH_ASKPASS_DEFAULT=\"$(ASKPASS_PROGRAM)\" 22PATHS=-DETCDIR=\"$(sysconfdir)\" -DSSH_PROGRAM=\"$(SSH_PROGRAM)\" -DSSH_ASKPASS_DEFAULT=\"$(ASKPASS_PROGRAM)\"
23CFLAGS=@CFLAGS@ -I. -I$(srcdir) $(PATHS) @DEFS@ 23CFLAGS=@CFLAGS@ $(PATHS) @DEFS@
24LIBS=@LIBS@ 24LIBS=@LIBS@
25AR=@AR@ 25AR=@AR@
26RANLIB=@RANLIB@ 26RANLIB=@RANLIB@
@@ -29,6 +29,7 @@ PERL=@PERL@
29ENT=@ENT@ 29ENT=@ENT@
30LDFLAGS=-L. @LDFLAGS@ 30LDFLAGS=-L. @LDFLAGS@
31EXEEXT=@EXEEXT@ 31EXEEXT=@EXEEXT@
32SSH_MODE= @SSHMODE@
32 33
33INSTALL_SSH_PRNG_CMDS=@INSTALL_SSH_PRNG_CMDS@ 34INSTALL_SSH_PRNG_CMDS=@INSTALL_SSH_PRNG_CMDS@
34 35
@@ -121,13 +122,13 @@ distprep: catman-do
121install: manpages $(TARGETS) install-files host-key 122install: manpages $(TARGETS) install-files host-key
122 123
123install-files: 124install-files:
124 ./mkinstalldirs $(DESTDIR)$(bindir) 125 $(srcdir)/mkinstalldirs $(DESTDIR)$(bindir)
125 ./mkinstalldirs $(DESTDIR)$(sbindir) 126 $(srcdir)/mkinstalldirs $(DESTDIR)$(sbindir)
126 ./mkinstalldirs $(DESTDIR)$(mandir) 127 $(srcdir)/mkinstalldirs $(DESTDIR)$(mandir)
127 ./mkinstalldirs $(DESTDIR)$(mandir)/$(mansubdir)1 128 $(srcdir)/mkinstalldirs $(DESTDIR)$(mandir)/$(mansubdir)1
128 ./mkinstalldirs $(DESTDIR)$(mandir)/$(mansubdir)8 129 $(srcdir)/mkinstalldirs $(DESTDIR)$(mandir)/$(mansubdir)8
129 ./mkinstalldirs $(DESTDIR)$(libexecdir) 130 $(srcdir)/mkinstalldirs $(DESTDIR)$(libexecdir)
130 $(INSTALL) -m 4755 -s ssh $(DESTDIR)$(bindir)/ssh 131 $(INSTALL) -m $(SSH_MODE) -s ssh $(DESTDIR)$(bindir)/ssh
131 $(INSTALL) -m 0755 -s scp $(DESTDIR)$(bindir)/scp 132 $(INSTALL) -m 0755 -s scp $(DESTDIR)$(bindir)/scp
132 $(INSTALL) -m 0755 -s ssh-add $(DESTDIR)$(bindir)/ssh-add 133 $(INSTALL) -m 0755 -s ssh-add $(DESTDIR)$(bindir)/ssh-add
133 $(INSTALL) -m 0755 -s ssh-agent $(DESTDIR)$(bindir)/ssh-agent 134 $(INSTALL) -m 0755 -s ssh-agent $(DESTDIR)$(bindir)/ssh-agent
@@ -145,13 +146,14 @@ install-files:
145 ln -s ssh$(EXEEXT) $(DESTDIR)$(bindir)/slogin 146 ln -s ssh$(EXEEXT) $(DESTDIR)$(bindir)/slogin
146 -rm -f $(DESTDIR)$(mandir)/$(mansubdir)1/slogin.1 147 -rm -f $(DESTDIR)$(mandir)/$(mansubdir)1/slogin.1
147 ln -s ssh.1 $(DESTDIR)$(mandir)/$(mansubdir)1/slogin.1 148 ln -s ssh.1 $(DESTDIR)$(mandir)/$(mansubdir)1/slogin.1
149 @FILEPRIV@ -f dev,filesys,driver $(DESTDIR)$(bindir)/ssh $(DESTDIR)$(bindir)/slogin
148 if [ ! -f $(DESTDIR)$(sysconfdir)/ssh_config -a ! -f $(DESTDIR)$(sysconfdir)/sshd_config ]; then \ 150 if [ ! -f $(DESTDIR)$(sysconfdir)/ssh_config -a ! -f $(DESTDIR)$(sysconfdir)/sshd_config ]; then \
149 ./mkinstalldirs $(DESTDIR)$(sysconfdir); \ 151 $(srcdir)/mkinstalldirs $(DESTDIR)$(sysconfdir); \
150 $(INSTALL) -m 644 ssh_config.out $(DESTDIR)$(sysconfdir)/ssh_config; \ 152 $(INSTALL) -m 644 ssh_config.out $(DESTDIR)$(sysconfdir)/ssh_config; \
151 $(INSTALL) -m 644 sshd_config.out $(DESTDIR)$(sysconfdir)/sshd_config; \ 153 $(INSTALL) -m 644 sshd_config.out $(DESTDIR)$(sysconfdir)/sshd_config; \
152 fi 154 fi
153 if [ -f ssh_prng_cmds -a ! -z "$(INSTALL_SSH_PRNG_CMDS)" ]; then \ 155 if [ -f ssh_prng_cmds -a ! -z "$(INSTALL_SSH_PRNG_CMDS)" ]; then \
154 $(PERL) fixprogs ssh_prng_cmds $(ENT); \ 156 $(PERL) $(srcdir)/fixprogs ssh_prng_cmds $(ENT); \
155 $(INSTALL) -m 644 ssh_prng_cmds.out $(DESTDIR)$(sysconfdir)/ssh_prng_cmds; \ 157 $(INSTALL) -m 644 ssh_prng_cmds.out $(DESTDIR)$(sysconfdir)/ssh_prng_cmds; \
156 fi 158 fi
157 159
@@ -160,18 +162,18 @@ host-key: ssh-keygen$(EXEEXT)
160 if [ -f "$(DESTDIR)$(sysconfdir)/ssh_host_key" ] ; then \ 162 if [ -f "$(DESTDIR)$(sysconfdir)/ssh_host_key" ] ; then \
161 echo "$(DESTDIR)$(sysconfdir)/ssh_host_key already exists, skipping." ; \ 163 echo "$(DESTDIR)$(sysconfdir)/ssh_host_key already exists, skipping." ; \
162 else \ 164 else \
163 ./ssh-keygen -b 1024 -f $(DESTDIR)$(sysconfdir)/ssh_host_key -N "" ; \ 165 $(srcdir)/ssh-keygen -b 1024 -f $(DESTDIR)$(sysconfdir)/ssh_host_key -N "" ; \
164 fi ; \ 166 fi ; \
165 if [ -f $(DESTDIR)$(sysconfdir)/ssh_host_dsa_key ] ; then \ 167 if [ -f $(DESTDIR)$(sysconfdir)/ssh_host_dsa_key ] ; then \
166 echo "$(DESTDIR)$(sysconfdir)/ssh_host_dsa_key already exists, skipping." ; \ 168 echo "$(DESTDIR)$(sysconfdir)/ssh_host_dsa_key already exists, skipping." ; \
167 else \ 169 else \
168 ./ssh-keygen -d -f $(DESTDIR)$(sysconfdir)/ssh_host_dsa_key -N "" ; \ 170 $(srcdir)/ssh-keygen -d -f $(DESTDIR)$(sysconfdir)/ssh_host_dsa_key -N "" ; \
169 fi ; \ 171 fi ; \
170 fi ; 172 fi ;
171 173
172host-key-force: ssh-keygen$(EXEEXT) 174host-key-force: ssh-keygen$(EXEEXT)
173 ./ssh-keygen -b 1024 -f $(DESTDIR)$(sysconfdir)/ssh_host_key -N "" 175 $(srcdir)/ssh-keygen -b 1024 -f $(DESTDIR)$(sysconfdir)/ssh_host_key -N ""
174 ./ssh-keygen -d -f $(DESTDIR)$(sysconfdir)/ssh_host_dsa_key -N "" 176 $(srcdir)/ssh-keygen -d -f $(DESTDIR)$(sysconfdir)/ssh_host_dsa_key -N ""
175 177
176uninstallall: uninstall 178uninstallall: uninstall
177 -rm -f $(DESTDIR)$(sysconfdir)/ssh_config 179 -rm -f $(DESTDIR)$(sysconfdir)/ssh_config
diff --git a/acconfig.h b/acconfig.h
index 1b860d66d..a17cba825 100644
--- a/acconfig.h
+++ b/acconfig.h
@@ -6,6 +6,12 @@
6 6
7@TOP@ 7@TOP@
8 8
9/* SCO workaround */
10#undef BROKEN_SYS_TERMIO_H
11
12/* Define if you have SCO protected password database */
13#undef HAVE_SCO_PROTECTED_PW
14
9/* If your header files don't define LOGIN_PROGRAM, then use this (detected) */ 15/* If your header files don't define LOGIN_PROGRAM, then use this (detected) */
10/* from environment and PATH */ 16/* from environment and PATH */
11#undef LOGIN_PROGRAM_FALLBACK 17#undef LOGIN_PROGRAM_FALLBACK
diff --git a/auth-passwd.c b/auth-passwd.c
index 18f9b3c15..8dd6034d8 100644
--- a/auth-passwd.c
+++ b/auth-passwd.c
@@ -75,6 +75,11 @@ RCSID("$OpenBSD: auth-passwd.c,v 1.17 2000/09/07 20:27:49 deraadt Exp $");
75# include <hpsecurity.h> 75# include <hpsecurity.h>
76# include <prot.h> 76# include <prot.h>
77#endif 77#endif
78#ifdef HAVE_SCO_PROTECTED_PW
79# include <sys/security.h>
80# include <sys/audit.h>
81# include <prot.h>
82#endif /* HAVE_SCO_PROTECTED_PW */
78#if defined(HAVE_SHADOW_H) && !defined(DISABLE_SHADOW) 83#if defined(HAVE_SHADOW_H) && !defined(DISABLE_SHADOW)
79# include <shadow.h> 84# include <shadow.h>
80#endif 85#endif
@@ -108,6 +113,9 @@ auth_password(struct passwd * pw, const char *password)
108#ifdef __hpux 113#ifdef __hpux
109 struct pr_passwd *spw; 114 struct pr_passwd *spw;
110#endif 115#endif
116#ifdef HAVE_SCO_PROTECTED_PW
117 struct pr_passwd *spw;
118#endif /* HAVE_SCO_PROTECTED_PW */
111#if defined(HAVE_SHADOW_H) && !defined(DISABLE_SHADOW) 119#if defined(HAVE_SHADOW_H) && !defined(DISABLE_SHADOW)
112 struct spwd *spw; 120 struct spwd *spw;
113#endif 121#endif
@@ -181,10 +189,18 @@ auth_password(struct passwd * pw, const char *password)
181 if (spw != NULL) 189 if (spw != NULL)
182 pw_password = spw->sp_pwdp; 190 pw_password = spw->sp_pwdp;
183#endif /* defined(HAVE_SHADOW_H) && !defined(DISABLE_SHADOW) */ 191#endif /* defined(HAVE_SHADOW_H) && !defined(DISABLE_SHADOW) */
192
193#ifdef HAVE_SCO_PROTECTED_PW
194 spw = getprpwnam(pw->pw_name);
195 if (spw != NULL)
196 pw_password = spw->ufld.fd_encrypt;
197#endif /* HAVE_SCO_PROTECTED_PW */
198
184#if defined(HAVE_GETPWANAM) && !defined(DISABLE_SHADOW) 199#if defined(HAVE_GETPWANAM) && !defined(DISABLE_SHADOW)
185 if (issecure() && (spw = getpwanam(pw->pw_name)) != NULL) 200 if (issecure() && (spw = getpwanam(pw->pw_name)) != NULL)
186 pw_password = spw->pwa_passwd; 201 pw_password = spw->pwa_passwd;
187#endif /* defined(HAVE_GETPWANAM) && !defined(DISABLE_SHADOW) */ 202#endif /* defined(HAVE_GETPWANAM) && !defined(DISABLE_SHADOW) */
203
188#if defined(__hpux) 204#if defined(__hpux)
189 if (iscomsec() && (spw = getprpwnam(pw->pw_name)) != NULL) 205 if (iscomsec() && (spw = getprpwnam(pw->pw_name)) != NULL)
190 pw_password = spw->ufld.fd_encrypt; 206 pw_password = spw->ufld.fd_encrypt;
diff --git a/authfile.c b/authfile.c
index c8eac1892..afedd7bbb 100644
--- a/authfile.c
+++ b/authfile.c
@@ -147,7 +147,7 @@ save_private_key_rsa(const char *filename, const char *passphrase,
147 strerror(errno)); 147 strerror(errno));
148 buffer_free(&encrypted); 148 buffer_free(&encrypted);
149 close(fd); 149 close(fd);
150 remove(filename); 150 unlink(filename);
151 return 0; 151 return 0;
152 } 152 }
153 close(fd); 153 close(fd);
diff --git a/channels.c b/channels.c
index 43253b3a6..df56e9496 100644
--- a/channels.c
+++ b/channels.c
@@ -1317,7 +1317,7 @@ channel_stop_listening()
1317 switch (channels[i].type) { 1317 switch (channels[i].type) {
1318 case SSH_CHANNEL_AUTH_SOCKET: 1318 case SSH_CHANNEL_AUTH_SOCKET:
1319 close(channels[i].sock); 1319 close(channels[i].sock);
1320 remove(channels[i].path); 1320 unlink(channels[i].path);
1321 channel_free(i); 1321 channel_free(i);
1322 break; 1322 break;
1323 case SSH_CHANNEL_PORT_LISTENER: 1323 case SSH_CHANNEL_PORT_LISTENER:
@@ -2139,7 +2139,7 @@ auth_get_socket_name()
2139void 2139void
2140cleanup_socket(void) 2140cleanup_socket(void)
2141{ 2141{
2142 remove(channel_forwarded_auth_socket_name); 2142 unlink(channel_forwarded_auth_socket_name);
2143 rmdir(channel_forwarded_auth_socket_dir); 2143 rmdir(channel_forwarded_auth_socket_dir);
2144} 2144}
2145 2145
diff --git a/configure.in b/configure.in
index 1c228dd9c..a038c9594 100644
--- a/configure.in
+++ b/configure.in
@@ -13,6 +13,7 @@ AC_PATH_PROG(PERL, perl)
13AC_SUBST(PERL) 13AC_SUBST(PERL)
14AC_PATH_PROG(ENT, ent) 14AC_PATH_PROG(ENT, ent)
15AC_SUBST(ENT) 15AC_SUBST(ENT)
16AC_PATH_PROGS(FILEPRIV, filepriv, true, /sbin:/usr/sbin)
16 17
17# Use LOGIN_PROGRAM from environment if possible 18# Use LOGIN_PROGRAM from environment if possible
18if test ! -z "$LOGIN_PROGRAM" ; then 19if test ! -z "$LOGIN_PROGRAM" ; then
@@ -36,6 +37,8 @@ if test "$GCC" = "yes"; then
36 CFLAGS="$CFLAGS -Wall" 37 CFLAGS="$CFLAGS -Wall"
37fi 38fi
38 39
40CFLAGS="$CFLAGS -I. -I${srcdir-.}"
41
39# Check for some target-specific stuff 42# Check for some target-specific stuff
40case "$host" in 43case "$host" in
41*-*-aix*) 44*-*-aix*)
@@ -159,6 +162,22 @@ case "$host" in
159 mansubdir=cat 162 mansubdir=cat
160 LIBS="$LIBS -lgen -lnsl -lucb" 163 LIBS="$LIBS -lgen -lnsl -lucb"
161 ;; 164 ;;
165*-*-sysv4.2*)
166 CFLAGS="$CFLAGS -I/usr/local/include"
167 LDFLAGS="$LDFLAGS -L/usr/local/lib"
168 MANTYPE='$(CATMAN)'
169 mansubdir=cat
170 LIBS="$LIBS -lgen -lsocket -lnsl -lresolv"
171 enable_suid_ssh=no
172 ;;
173*-*-sysv5*)
174 CFLAGS="$CFLAGS -I/usr/local/include"
175 LDFLAGS="$LDFLAGS -L/usr/local/lib"
176 MANTYPE='$(CATMAN)'
177 mansubdir=cat
178 LIBS="$LIBS -lgen -lsocket"
179 enable_suid_ssh=no
180 ;;
162*-*-sysv*) 181*-*-sysv*)
163 CFLAGS="$CFLAGS -I/usr/local/include" 182 CFLAGS="$CFLAGS -I/usr/local/include"
164 LDFLAGS="$LDFLAGS -L/usr/local/lib" 183 LDFLAGS="$LDFLAGS -L/usr/local/lib"
@@ -166,14 +185,28 @@ case "$host" in
166 mansubdir=cat 185 mansubdir=cat
167 LIBS="$LIBS -lgen -lsocket" 186 LIBS="$LIBS -lgen -lsocket"
168 ;; 187 ;;
169*-*-sco3*) 188*-*-sco3.2v4*)
170 AC_DEFINE(USE_PIPES) 189 AC_DEFINE(USE_PIPES)
190 CFLAGS="$CFLAGS -Dftruncate=chsize -I/usr/local/include"
191 LDFLAGS="$LDFLAGS -L/usr/local/lib"
192 MANTYPE='$(CATMAN)'
193 mansubdir=cat
194 LIBS="$LIBS -lgen -lsocket -los -lprot -lx"
195 no_dev_ptmx=1
196 RANLIB=true
197 AC_DEFINE(BROKEN_SYS_TERMIO_H)
198 rsh_path="/usr/bin/rcmd"
199 AC_DEFINE(HAVE_SCO_PROTECTED_PW)
200 ;;
201*-*-sco3.2v5*)
171 CFLAGS="$CFLAGS -I/usr/local/include" 202 CFLAGS="$CFLAGS -I/usr/local/include"
172 LDFLAGS="$LDFLAGS -L/usr/local/lib" 203 LDFLAGS="$LDFLAGS -L/usr/local/lib"
173 MANTYPE='$(CATMAN)' 204 MANTYPE='$(CATMAN)'
174 mansubdir=cat 205 mansubdir=cat
175 LIBS="$LIBS -lgen -lsocket" 206 LIBS="$LIBS -lgen -lsocket -lprot -lx"
176 no_dev_ptmx=1 207 no_dev_ptmx=1
208 rsh_path="/usr/bin/rcmd"
209 AC_DEFINE(HAVE_SCO_PROTECTED_PW)
177 ;; 210 ;;
178*-dec-osf*) 211*-dec-osf*)
179# This is untested 212# This is untested
@@ -230,10 +263,10 @@ if test -z "$no_libnsl" ; then
230fi 263fi
231 264
232# Checks for header files. 265# Checks for header files.
233AC_CHECK_HEADERS(bstring.h endian.h floatingpoint.h getopt.h lastlog.h limits.h login.h login_cap.h maillock.h netdb.h netgroup.h netinet/in_systm.h paths.h poll.h pty.h shadow.h security/pam_appl.h sys/bitypes.h sys/bsdtty.h sys/cdefs.h sys/poll.h sys/select.h sys/stat.h sys/stropts.h sys/sysmacros.h sys/time.h sys/ttcompat.h stddef.h time.h ttyent.h usersec.h util.h utmp.h utmpx.h) 266AC_CHECK_HEADERS(bstring.h endian.h floatingpoint.h getopt.h lastlog.h limits.h login.h login_cap.h maillock.h netdb.h netgroup.h netinet/in_systm.h paths.h poll.h pty.h shadow.h security/pam_appl.h sys/bitypes.h sys/bsdtty.h sys/cdefs.h sys/poll.h sys/select.h sys/stat.h sys/stropts.h sys/sysmacros.h sys/time.h sys/ttcompat.h sys/un.h stddef.h time.h ttyent.h usersec.h util.h utmp.h utmpx.h)
234 267
235dnl Checks for library functions. 268dnl Checks for library functions.
236AC_CHECK_FUNCS(arc4random atexit b64_ntop bcopy bindresvport_af clock freeaddrinfo futimes gai_strerror getaddrinfo getnameinfo getrusage getttyent inet_aton inet_ntoa innetgr login_getcapbool md5_crypt memmove mkdtemp on_exit openpty rresvport_af setenv seteuid setlogin setproctitle setreuid sigaction sigvec snprintf strerror strlcat strlcpy strsep strtok_r vsnprintf vhangup _getpty __b64_ntop) 269AC_CHECK_FUNCS(arc4random atexit b64_ntop bcopy bindresvport_af clock fchmod freeaddrinfo futimes gai_strerror getaddrinfo getnameinfo getrusage getttyent inet_aton inet_ntoa innetgr login_getcapbool md5_crypt memmove mkdtemp on_exit openpty rresvport_af setenv seteuid setlogin setproctitle setreuid setrlimit sigaction sigvec snprintf strerror strlcat strlcpy strsep strtok_r vsnprintf vhangup _getpty __b64_ntop)
237dnl Checks for time functions 270dnl Checks for time functions
238AC_CHECK_FUNCS(gettimeofday time) 271AC_CHECK_FUNCS(gettimeofday time)
239dnl Checks for libutil functions 272dnl Checks for libutil functions
@@ -615,7 +648,17 @@ AC_CACHE_CHECK([for sa_family_t], ac_cv_have_sa_family_t, [
615 ], 648 ],
616 [ sa_family_t foo; foo = 1235; ], 649 [ sa_family_t foo; foo = 1235; ],
617 [ ac_cv_have_sa_family_t="yes" ], 650 [ ac_cv_have_sa_family_t="yes" ],
651 [ AC_TRY_COMPILE(
652 [
653#include <sys/types.h>
654#include <sys/socket.h>
655#include <netinet/in.h>
656 ],
657 [ sa_family_t foo; foo = 1235; ],
658 [ ac_cv_have_sa_family_t="yes" ],
659
618 [ ac_cv_have_sa_family_t="no" ] 660 [ ac_cv_have_sa_family_t="no" ]
661 )]
619 ) 662 )
620]) 663])
621if test "x$ac_cv_have_sa_family_t" = "xyes" ; then 664if test "x$ac_cv_have_sa_family_t" = "xyes" ; then
@@ -712,9 +755,7 @@ if test "x$ac_cv_have_struct_addrinfo" = "xyes" ; then
712 AC_DEFINE(HAVE_STRUCT_ADDRINFO) 755 AC_DEFINE(HAVE_STRUCT_ADDRINFO)
713fi 756fi
714 757
715 758dnl Checks for structure members
716# Checks for structure members
717
718OSSH_CHECK_HEADER_FOR_FIELD(ut_host, utmp.h, HAVE_HOST_IN_UTMP) 759OSSH_CHECK_HEADER_FOR_FIELD(ut_host, utmp.h, HAVE_HOST_IN_UTMP)
719OSSH_CHECK_HEADER_FOR_FIELD(ut_host, utmpx.h, HAVE_HOST_IN_UTMPX) 760OSSH_CHECK_HEADER_FOR_FIELD(ut_host, utmpx.h, HAVE_HOST_IN_UTMPX)
720OSSH_CHECK_HEADER_FOR_FIELD(syslen, utmpx.h, HAVE_SYSLEN_IN_UTMPX) 761OSSH_CHECK_HEADER_FOR_FIELD(syslen, utmpx.h, HAVE_SYSLEN_IN_UTMPX)
@@ -732,6 +773,7 @@ OSSH_CHECK_HEADER_FOR_FIELD(ut_exit, utmp.h, HAVE_EXIT_IN_UTMP)
732OSSH_CHECK_HEADER_FOR_FIELD(ut_time, utmp.h, HAVE_TIME_IN_UTMP) 773OSSH_CHECK_HEADER_FOR_FIELD(ut_time, utmp.h, HAVE_TIME_IN_UTMP)
733OSSH_CHECK_HEADER_FOR_FIELD(ut_time, utmpx.h, HAVE_TIME_IN_UTMPX) 774OSSH_CHECK_HEADER_FOR_FIELD(ut_time, utmpx.h, HAVE_TIME_IN_UTMPX)
734OSSH_CHECK_HEADER_FOR_FIELD(ut_tv, utmpx.h, HAVE_TV_IN_UTMPX) 775OSSH_CHECK_HEADER_FOR_FIELD(ut_tv, utmpx.h, HAVE_TV_IN_UTMPX)
776AC_STRUCT_ST_BLKSIZE
735 777
736AC_CACHE_CHECK([for sun_len field in struct sockaddr_un], 778AC_CACHE_CHECK([for sun_len field in struct sockaddr_un],
737 ac_cv_have_sun_len_in_struct_sockaddr_un, [ 779 ac_cv_have_sun_len_in_struct_sockaddr_un, [
@@ -855,7 +897,7 @@ AC_ARG_WITH(xauth,
855 fi 897 fi
856 ], 898 ],
857 [ 899 [
858 AC_PATH_PROG(xauth_path, xauth) 900 AC_PATH_PROG(xauth_path, xauth,,$PATH:/usr/X/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/openwin/bin)
859 if (test ! -z "$xauth_path" && test -x "/usr/openwin/bin/xauth") ; then 901 if (test ! -z "$xauth_path" && test -x "/usr/openwin/bin/xauth") ; then
860 xauth_path="/usr/openwin/bin/xauth" 902 xauth_path="/usr/openwin/bin/xauth"
861 fi 903 fi
@@ -1142,7 +1184,7 @@ AC_ARG_WITH(default-path,
1142 [ --with-default-path=PATH Specify default \$PATH environment for server], 1184 [ --with-default-path=PATH Specify default \$PATH environment for server],
1143 [ 1185 [
1144 if test "x$withval" != "xno" ; then 1186 if test "x$withval" != "xno" ; then
1145 AC_DEFINE_UNQUOTED(USER_PATH, "$withval") 1187 user_path="$withval"
1146 SERVER_PATH_MSG="$withval" 1188 SERVER_PATH_MSG="$withval"
1147 fi 1189 fi
1148 ] 1190 ]
@@ -1183,6 +1225,25 @@ AC_ARG_WITH(4in6,
1183 ] 1225 ]
1184) 1226)
1185 1227
1228AC_MSG_CHECKING(whether to install ssh as suid root)
1229AC_ARG_ENABLE(suid-ssh,
1230[ --enable-suid-ssh Install ssh as suid root (default)
1231 --disable-suid-ssh Install ssh without suid bit],
1232[ case "$enableval" in
1233 no)
1234 AC_MSG_RESULT(no)
1235 SSHMODE=0711
1236 ;;
1237 *) AC_MSG_RESULT(yes)
1238 SSHMODE=04711
1239 ;;
1240 esac ],
1241 AC_MSG_RESULT(yes)
1242 SSHMODE=04711
1243)
1244AC_SUBST(SSHMODE)
1245
1246
1186# Where to place sshd.pid 1247# Where to place sshd.pid
1187piddir=/var/run 1248piddir=/var/run
1188AC_ARG_WITH(pid-dir, 1249AC_ARG_WITH(pid-dir,
@@ -1194,6 +1255,14 @@ AC_ARG_WITH(pid-dir,
1194 ] 1255 ]
1195) 1256)
1196 1257
1258# make sure the directory exists
1259if test ! -d $piddir ; then
1260 piddir=`eval echo ${sysconfdir}`
1261 case $piddir in
1262 NONE/*) piddir=`echo $piddir | sed "s~NONE~$ac_default_prefix~"` ;;
1263 esac
1264fi
1265
1197AC_DEFINE_UNQUOTED(PIDDIR, "$piddir") 1266AC_DEFINE_UNQUOTED(PIDDIR, "$piddir")
1198AC_SUBST(piddir) 1267AC_SUBST(piddir)
1199 1268
diff --git a/defines.h b/defines.h
index a8e2659c1..323ff29b5 100644
--- a/defines.h
+++ b/defines.h
@@ -11,10 +11,12 @@
11#include <sys/types.h> /* For [u]intxx_t */ 11#include <sys/types.h> /* For [u]intxx_t */
12#include <sys/socket.h> /* For SHUT_XXXX */ 12#include <sys/socket.h> /* For SHUT_XXXX */
13#include <sys/param.h> /* For MAXPATHLEN */ 13#include <sys/param.h> /* For MAXPATHLEN */
14#include <sys/un.h> /* For SUN_LEN */
15#include <netinet/in_systm.h> /* For typedefs */ 14#include <netinet/in_systm.h> /* For typedefs */
16#include <netinet/in.h> /* For IPv6 macros */ 15#include <netinet/in.h> /* For IPv6 macros */
17#include <netinet/ip.h> /* For IPTOS macros */ 16#include <netinet/ip.h> /* For IPTOS macros */
17#ifdef HAVE_SYS_UN_H
18# include <sys/un.h> /* For SUN_LEN */
19#endif
18#ifdef HAVE_SYS_BITYPES_H 20#ifdef HAVE_SYS_BITYPES_H
19# include <sys/bitypes.h> /* For u_intXX_t */ 21# include <sys/bitypes.h> /* For u_intXX_t */
20#endif 22#endif
@@ -44,6 +46,7 @@
44#endif 46#endif
45 47
46#include <unistd.h> /* For STDIN_FILENO, etc */ 48#include <unistd.h> /* For STDIN_FILENO, etc */
49#include <termios.h> /* Struct winsize */
47 50
48/* Constants */ 51/* Constants */
49 52
@@ -219,6 +222,23 @@ typedef int mode_t;
219# define ss_family __ss_family 222# define ss_family __ss_family
220#endif /* !defined(HAVE_SS_FAMILY_IN_SS) && defined(HAVE_SA_FAMILY_IN_SS) */ 223#endif /* !defined(HAVE_SS_FAMILY_IN_SS) && defined(HAVE_SA_FAMILY_IN_SS) */
221 224
225#ifndef HAVE_SYS_UN_H
226struct sockaddr_un {
227 short sun_family; /* AF_UNIX */
228 char sun_path[108]; /* path name (gag) */
229};
230#endif /* HAVE_SYS_UN_H */
231
232#if defined(BROKEN_SYS_TERMIO_H) && !defined(_STRUCT_WINSIZE)
233#define _STRUCT_WINSIZE
234struct winsize {
235 unsigned short ws_row; /* rows, in characters */
236 unsigned short ws_col; /* columns, in character */
237 unsigned short ws_xpixel; /* horizontal size, pixels */
238 unsigned short ws_ypixel; /* vertical size, pixels */
239};
240#endif
241
222/* Paths */ 242/* Paths */
223 243
224#ifndef _PATH_BSHELL 244#ifndef _PATH_BSHELL
diff --git a/includes.h b/includes.h
index b7b013745..37881f6b0 100644
--- a/includes.h
+++ b/includes.h
@@ -38,7 +38,6 @@ static /**/const char *const rcsid[] = { (char *)rcsid, "\100(#)" msg }
38#include <errno.h> 38#include <errno.h>
39#include <fcntl.h> 39#include <fcntl.h>
40#include <signal.h> 40#include <signal.h>
41#include <termios.h>
42#include <stdlib.h> 41#include <stdlib.h>
43#include <string.h> 42#include <string.h>
44#include <stdarg.h> 43#include <stdarg.h>
diff --git a/scp.c b/scp.c
index 72949d0ec..356d97e63 100644
--- a/scp.c
+++ b/scp.c
@@ -80,7 +80,9 @@ RCSID("$OpenBSD: scp.c,v 1.40 2000/09/21 11:11:42 markus Exp $");
80#include "ssh.h" 80#include "ssh.h"
81#include "xmalloc.h" 81#include "xmalloc.h"
82 82
83#ifndef _PATH_CP
83#define _PATH_CP "cp" 84#define _PATH_CP "cp"
85#endif
84 86
85/* For progressmeter() -- number of seconds before xfer considered "stalled" */ 87/* For progressmeter() -- number of seconds before xfer considered "stalled" */
86#define STALLTIME 5 88#define STALLTIME 5
@@ -915,12 +917,20 @@ bad: run_err("%s: %s", np, strerror(errno));
915#endif 917#endif
916 if (pflag) { 918 if (pflag) {
917 if (exists || omode != mode) 919 if (exists || omode != mode)
920#ifdef HAVE_FCHMOD
918 if (fchmod(ofd, omode)) 921 if (fchmod(ofd, omode))
922#else /* HAVE_FCHMOD */
923 if (chmod(np, omode))
924#endif /* HAVE_FCHMOD */
919 run_err("%s: set mode: %s", 925 run_err("%s: set mode: %s",
920 np, strerror(errno)); 926 np, strerror(errno));
921 } else { 927 } else {
922 if (!exists && omode != mode) 928 if (!exists && omode != mode)
929#ifdef HAVE_FCHMOD
923 if (fchmod(ofd, omode & ~mask)) 930 if (fchmod(ofd, omode & ~mask))
931#else /* HAVE_FCHMOD */
932 if (chmod(np, omode & ~mask))
933#endif /* HAVE_FCHMOD */
924 run_err("%s: set mode: %s", 934 run_err("%s: set mode: %s",
925 np, strerror(errno)); 935 np, strerror(errno));
926 } 936 }
@@ -1086,6 +1096,7 @@ allocbuf(bp, fd, blksize)
1086 int fd, blksize; 1096 int fd, blksize;
1087{ 1097{
1088 size_t size; 1098 size_t size;
1099#ifdef HAVE_ST_BLKSIZE
1089 struct stat stb; 1100 struct stat stb;
1090 1101
1091 if (fstat(fd, &stb) < 0) { 1102 if (fstat(fd, &stb) < 0) {
@@ -1097,6 +1108,9 @@ allocbuf(bp, fd, blksize)
1097 else 1108 else
1098 size = blksize + (stb.st_blksize - blksize % stb.st_blksize) % 1109 size = blksize + (stb.st_blksize - blksize % stb.st_blksize) %
1099 stb.st_blksize; 1110 stb.st_blksize;
1111#else /* HAVE_ST_BLKSIZE */
1112 size = blksize;
1113#endif /* HAVE_ST_BLKSIZE */
1100 if (bp->cnt >= size) 1114 if (bp->cnt >= size)
1101 return (bp); 1115 return (bp);
1102 if (bp->buf == NULL) 1116 if (bp->buf == NULL)
diff --git a/ssh-agent.c b/ssh-agent.c
index e6fb336ed..479388fab 100644
--- a/ssh-agent.c
+++ b/ssh-agent.c
@@ -638,7 +638,7 @@ check_parent_exists(int sig)
638void 638void
639cleanup_socket(void) 639cleanup_socket(void)
640{ 640{
641 remove(socket_name); 641 unlink(socket_name);
642 rmdir(socket_dir); 642 rmdir(socket_dir);
643} 643}
644 644
diff --git a/ssh.c b/ssh.c
index 5a69115e7..aff79a5bf 100644
--- a/ssh.c
+++ b/ssh.c
@@ -244,7 +244,7 @@ main(int ac, char **av)
244 original_real_uid = getuid(); 244 original_real_uid = getuid();
245 original_effective_uid = geteuid(); 245 original_effective_uid = geteuid();
246 246
247#ifndef HAVE_CYGWIN 247#if !defined(HAVE_SETRLIMIT) || !defined(HAVE_CYGWIN)
248 /* If we are installed setuid root be careful to not drop core. */ 248 /* If we are installed setuid root be careful to not drop core. */
249 if (original_real_uid != original_effective_uid) { 249 if (original_real_uid != original_effective_uid) {
250 struct rlimit rlim; 250 struct rlimit rlim;
diff --git a/sshd.c b/sshd.c
index c11a89609..7fed51c42 100644
--- a/sshd.c
+++ b/sshd.c
@@ -667,6 +667,10 @@ main(int ac, char **av)
667 } 667 }
668 } 668 }
669 669
670#ifdef HAVE_SCO_PROTECTED_PW
671 (void) set_auth_parameters(ac, av);
672#endif
673
670 /* Initialize the log (it is reinitialized below in case we forked). */ 674 /* Initialize the log (it is reinitialized below in case we forked). */
671 if (debug_flag && !inetd_flag) 675 if (debug_flag && !inetd_flag)
672 log_stderr = 1; 676 log_stderr = 1;