diff options
author | Markus Friedl <markus@cvs.openbsd.org> | 2005-06-16 08:00:01 +0000 |
---|---|---|
committer | Markus Friedl <markus@cvs.openbsd.org> | 2005-06-16 08:00:01 +0000 |
commit | 8432919c2ea4aea3fa64e5c5177ba4c5742df562 (patch) | |
tree | 1b3f0f653388b104a95d0817116cd19a5439698e /usr.bin/ssh | |
parent | 2e3d8feb783cb3e45c3a81ea6935fe9e5b17943a (diff) |
don't exit if getpeername fails for forwarded ports; bugzilla #1054; ok djm
Diffstat (limited to 'usr.bin/ssh')
-rw-r--r-- | usr.bin/ssh/canohost.c | 4 | ||||
-rw-r--r-- | usr.bin/ssh/channels.c | 6 | ||||
-rw-r--r-- | usr.bin/ssh/sshd.c | 7 |
3 files changed, 10 insertions, 7 deletions
diff --git a/usr.bin/ssh/canohost.c b/usr.bin/ssh/canohost.c index 7b1f0c7419d..630a1ace7c2 100644 --- a/usr.bin/ssh/canohost.c +++ b/usr.bin/ssh/canohost.c @@ -12,7 +12,7 @@ */ #include "includes.h" -RCSID("$OpenBSD: canohost.c,v 1.42 2005/02/18 03:05:53 djm Exp $"); +RCSID("$OpenBSD: canohost.c,v 1.43 2005/06/16 08:00:00 markus Exp $"); #include "packet.h" #include "xmalloc.h" @@ -307,7 +307,7 @@ get_sock_port(int sock, int local) } else { if (getpeername(sock, (struct sockaddr *)&from, &fromlen) < 0) { debug("getpeername failed: %.100s", strerror(errno)); - cleanup_exit(255); + return -1; } } /* Return port number. */ diff --git a/usr.bin/ssh/channels.c b/usr.bin/ssh/channels.c index dcc161d1147..6ff0043e41e 100644 --- a/usr.bin/ssh/channels.c +++ b/usr.bin/ssh/channels.c @@ -39,7 +39,7 @@ */ #include "includes.h" -RCSID("$OpenBSD: channels.c,v 1.215 2005/06/16 03:38:36 djm Exp $"); +RCSID("$OpenBSD: channels.c,v 1.216 2005/06/16 08:00:00 markus Exp $"); #include "ssh.h" #include "ssh1.h" @@ -1177,7 +1177,7 @@ port_open_helper(Channel *c, char *rtype) int direct; char buf[1024]; char *remote_ipaddr = get_peer_ipaddr(c->sock); - u_short remote_port = get_peer_port(c->sock); + int remote_port = get_peer_port(c->sock); direct = (strcmp(rtype, "direct-tcpip") == 0); @@ -1207,7 +1207,7 @@ port_open_helper(Channel *c, char *rtype) } /* originator host and port */ packet_put_cstring(remote_ipaddr); - packet_put_int(remote_port); + packet_put_int((u_int)remote_port); packet_send(); } else { packet_start(SSH_MSG_PORT_OPEN); diff --git a/usr.bin/ssh/sshd.c b/usr.bin/ssh/sshd.c index 229666409f2..9603ab24583 100644 --- a/usr.bin/ssh/sshd.c +++ b/usr.bin/ssh/sshd.c @@ -42,7 +42,7 @@ */ #include "includes.h" -RCSID("$OpenBSD: sshd.c,v 1.309 2005/04/06 09:43:59 djm Exp $"); +RCSID("$OpenBSD: sshd.c,v 1.310 2005/06/16 08:00:00 markus Exp $"); #include <openssl/dh.h> #include <openssl/bn.h> @@ -1556,7 +1556,10 @@ main(int ac, char **av) setsockopt(sock_in, SOL_SOCKET, SO_KEEPALIVE, &on, sizeof(on)) < 0) error("setsockopt SO_KEEPALIVE: %.100s", strerror(errno)); - remote_port = get_remote_port(); + if ((remote_port = get_remote_port()) < 0) { + debug("get_remote_port failed"); + cleanup_exit(255); + } remote_ip = get_remote_ipaddr(); #ifdef LIBWRAP |