diff options
-rw-r--r-- | CREDITS | 3 | ||||
-rw-r--r-- | ChangeLog | 2 | ||||
-rw-r--r-- | Makefile.in | 30 | ||||
-rw-r--r-- | acconfig.h | 6 | ||||
-rw-r--r-- | auth-passwd.c | 16 | ||||
-rw-r--r-- | authfile.c | 2 | ||||
-rw-r--r-- | channels.c | 4 | ||||
-rw-r--r-- | configure.in | 87 | ||||
-rw-r--r-- | defines.h | 22 | ||||
-rw-r--r-- | includes.h | 1 | ||||
-rw-r--r-- | scp.c | 14 | ||||
-rw-r--r-- | ssh-agent.c | 2 | ||||
-rw-r--r-- | ssh.c | 2 | ||||
-rw-r--r-- | sshd.c | 4 |
14 files changed, 164 insertions, 31 deletions
@@ -62,13 +62,14 @@ Pavel Troller <patrol@omni.sinus.cz> - Bugfixes | |||
62 | Pekka Savola <pekkas@netcore.fi> - Bugfixes | 62 | Pekka Savola <pekkas@netcore.fi> - Bugfixes |
63 | Peter Kocks <peter.kocks@baygate.com> - Makefile fixes | 63 | Peter Kocks <peter.kocks@baygate.com> - Makefile fixes |
64 | Phil Hands <phil@hands.com> - Debian scripts, assorted patches | 64 | Phil Hands <phil@hands.com> - Debian scripts, assorted patches |
65 | Phil Karn <karn@ka9q.ampr.org> - Autoconf fix | 65 | Phil Karn <karn@ka9q.ampr.org> - Autoconf fixes |
66 | Phill Camp <P.S.S.Camp@ukc.ac.uk> - login code fix | 66 | Phill Camp <P.S.S.Camp@ukc.ac.uk> - login code fix |
67 | Rip Loomis <loomisg@cist.saic.com> - Solaris package support, fixes | 67 | Rip Loomis <loomisg@cist.saic.com> - Solaris package support, fixes |
68 | SAKAI Kiyotaka <ksakai@kso.netwk.ntt-at.co.jp> - Multiple bugfixes | 68 | SAKAI Kiyotaka <ksakai@kso.netwk.ntt-at.co.jp> - Multiple bugfixes |
69 | Simon Wilkinson <sxw@dcs.ed.ac.uk> - PAM fixes | 69 | Simon Wilkinson <sxw@dcs.ed.ac.uk> - PAM fixes |
70 | Svante Signell <svante.signell@telia.com> - Bugfixes | 70 | Svante Signell <svante.signell@telia.com> - Bugfixes |
71 | Thomas Neumann <tom@smart.ruhr.de> - Shadow passwords | 71 | Thomas Neumann <tom@smart.ruhr.de> - Shadow passwords |
72 | Tim Rice <tim@multitalents.net> - Portability & SCO fixes | ||
72 | Tom Bertelson's <tbert@abac.com> - AIX auth fixes | 73 | Tom Bertelson's <tbert@abac.com> - AIX auth fixes |
73 | Tor-Ake Fransson <torake@hotmail.com> - AIX support | 74 | Tor-Ake Fransson <torake@hotmail.com> - AIX support |
74 | Tudor Bosman <tudorb@jm.nu> - MD5 password support | 75 | Tudor Bosman <tudorb@jm.nu> - MD5 password support |
@@ -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 | ||
8 | 20000926 | 10 | 20000926 |
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 | |||
20 | CC=@CC@ | 20 | CC=@CC@ |
21 | LD=@LD@ | 21 | LD=@LD@ |
22 | PATHS=-DETCDIR=\"$(sysconfdir)\" -DSSH_PROGRAM=\"$(SSH_PROGRAM)\" -DSSH_ASKPASS_DEFAULT=\"$(ASKPASS_PROGRAM)\" | 22 | PATHS=-DETCDIR=\"$(sysconfdir)\" -DSSH_PROGRAM=\"$(SSH_PROGRAM)\" -DSSH_ASKPASS_DEFAULT=\"$(ASKPASS_PROGRAM)\" |
23 | CFLAGS=@CFLAGS@ -I. -I$(srcdir) $(PATHS) @DEFS@ | 23 | CFLAGS=@CFLAGS@ $(PATHS) @DEFS@ |
24 | LIBS=@LIBS@ | 24 | LIBS=@LIBS@ |
25 | AR=@AR@ | 25 | AR=@AR@ |
26 | RANLIB=@RANLIB@ | 26 | RANLIB=@RANLIB@ |
@@ -29,6 +29,7 @@ PERL=@PERL@ | |||
29 | ENT=@ENT@ | 29 | ENT=@ENT@ |
30 | LDFLAGS=-L. @LDFLAGS@ | 30 | LDFLAGS=-L. @LDFLAGS@ |
31 | EXEEXT=@EXEEXT@ | 31 | EXEEXT=@EXEEXT@ |
32 | SSH_MODE= @SSHMODE@ | ||
32 | 33 | ||
33 | INSTALL_SSH_PRNG_CMDS=@INSTALL_SSH_PRNG_CMDS@ | 34 | INSTALL_SSH_PRNG_CMDS=@INSTALL_SSH_PRNG_CMDS@ |
34 | 35 | ||
@@ -121,13 +122,13 @@ distprep: catman-do | |||
121 | install: manpages $(TARGETS) install-files host-key | 122 | install: manpages $(TARGETS) install-files host-key |
122 | 123 | ||
123 | install-files: | 124 | install-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 | ||
172 | host-key-force: ssh-keygen$(EXEEXT) | 174 | host-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 | ||
176 | uninstallall: uninstall | 178 | uninstallall: 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() | |||
2139 | void | 2139 | void |
2140 | cleanup_socket(void) | 2140 | cleanup_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) | |||
13 | AC_SUBST(PERL) | 13 | AC_SUBST(PERL) |
14 | AC_PATH_PROG(ENT, ent) | 14 | AC_PATH_PROG(ENT, ent) |
15 | AC_SUBST(ENT) | 15 | AC_SUBST(ENT) |
16 | AC_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 |
18 | if test ! -z "$LOGIN_PROGRAM" ; then | 19 | if test ! -z "$LOGIN_PROGRAM" ; then |
@@ -36,6 +37,8 @@ if test "$GCC" = "yes"; then | |||
36 | CFLAGS="$CFLAGS -Wall" | 37 | CFLAGS="$CFLAGS -Wall" |
37 | fi | 38 | fi |
38 | 39 | ||
40 | CFLAGS="$CFLAGS -I. -I${srcdir-.}" | ||
41 | |||
39 | # Check for some target-specific stuff | 42 | # Check for some target-specific stuff |
40 | case "$host" in | 43 | case "$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 | |||
230 | fi | 263 | fi |
231 | 264 | ||
232 | # Checks for header files. | 265 | # Checks for header files. |
233 | AC_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) | 266 | AC_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 | ||
235 | dnl Checks for library functions. | 268 | dnl Checks for library functions. |
236 | AC_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) | 269 | AC_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) |
237 | dnl Checks for time functions | 270 | dnl Checks for time functions |
238 | AC_CHECK_FUNCS(gettimeofday time) | 271 | AC_CHECK_FUNCS(gettimeofday time) |
239 | dnl Checks for libutil functions | 272 | dnl 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 | ]) |
621 | if test "x$ac_cv_have_sa_family_t" = "xyes" ; then | 664 | if 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) |
713 | fi | 756 | fi |
714 | 757 | ||
715 | 758 | dnl Checks for structure members | |
716 | # Checks for structure members | ||
717 | |||
718 | OSSH_CHECK_HEADER_FOR_FIELD(ut_host, utmp.h, HAVE_HOST_IN_UTMP) | 759 | OSSH_CHECK_HEADER_FOR_FIELD(ut_host, utmp.h, HAVE_HOST_IN_UTMP) |
719 | OSSH_CHECK_HEADER_FOR_FIELD(ut_host, utmpx.h, HAVE_HOST_IN_UTMPX) | 760 | OSSH_CHECK_HEADER_FOR_FIELD(ut_host, utmpx.h, HAVE_HOST_IN_UTMPX) |
720 | OSSH_CHECK_HEADER_FOR_FIELD(syslen, utmpx.h, HAVE_SYSLEN_IN_UTMPX) | 761 | OSSH_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) | |||
732 | OSSH_CHECK_HEADER_FOR_FIELD(ut_time, utmp.h, HAVE_TIME_IN_UTMP) | 773 | OSSH_CHECK_HEADER_FOR_FIELD(ut_time, utmp.h, HAVE_TIME_IN_UTMP) |
733 | OSSH_CHECK_HEADER_FOR_FIELD(ut_time, utmpx.h, HAVE_TIME_IN_UTMPX) | 774 | OSSH_CHECK_HEADER_FOR_FIELD(ut_time, utmpx.h, HAVE_TIME_IN_UTMPX) |
734 | OSSH_CHECK_HEADER_FOR_FIELD(ut_tv, utmpx.h, HAVE_TV_IN_UTMPX) | 775 | OSSH_CHECK_HEADER_FOR_FIELD(ut_tv, utmpx.h, HAVE_TV_IN_UTMPX) |
776 | AC_STRUCT_ST_BLKSIZE | ||
735 | 777 | ||
736 | AC_CACHE_CHECK([for sun_len field in struct sockaddr_un], | 778 | AC_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 | ||
1228 | AC_MSG_CHECKING(whether to install ssh as suid root) | ||
1229 | AC_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 | ) | ||
1244 | AC_SUBST(SSHMODE) | ||
1245 | |||
1246 | |||
1186 | # Where to place sshd.pid | 1247 | # Where to place sshd.pid |
1187 | piddir=/var/run | 1248 | piddir=/var/run |
1188 | AC_ARG_WITH(pid-dir, | 1249 | AC_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 | ||
1259 | if 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 | ||
1264 | fi | ||
1265 | |||
1197 | AC_DEFINE_UNQUOTED(PIDDIR, "$piddir") | 1266 | AC_DEFINE_UNQUOTED(PIDDIR, "$piddir") |
1198 | AC_SUBST(piddir) | 1267 | AC_SUBST(piddir) |
1199 | 1268 | ||
@@ -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 | ||
226 | struct 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 | ||
234 | struct 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> |
@@ -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) | |||
638 | void | 638 | void |
639 | cleanup_socket(void) | 639 | cleanup_socket(void) |
640 | { | 640 | { |
641 | remove(socket_name); | 641 | unlink(socket_name); |
642 | rmdir(socket_dir); | 642 | rmdir(socket_dir); |
643 | } | 643 | } |
644 | 644 | ||
@@ -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; |
@@ -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; |