summaryrefslogtreecommitdiff
path: root/usr.bin/ssh
diff options
context:
space:
mode:
authorMarkus Friedl <markus@cvs.openbsd.org>2005-06-16 08:00:01 +0000
committerMarkus Friedl <markus@cvs.openbsd.org>2005-06-16 08:00:01 +0000
commit8432919c2ea4aea3fa64e5c5177ba4c5742df562 (patch)
tree1b3f0f653388b104a95d0817116cd19a5439698e /usr.bin/ssh
parent2e3d8feb783cb3e45c3a81ea6935fe9e5b17943a (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.c4
-rw-r--r--usr.bin/ssh/channels.c6
-rw-r--r--usr.bin/ssh/sshd.c7
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