summaryrefslogtreecommitdiff
path: root/usr.bin
diff options
context:
space:
mode:
authorMarkus Friedl <markus@cvs.openbsd.org>1999-11-24 20:07:26 +0000
committerMarkus Friedl <markus@cvs.openbsd.org>1999-11-24 20:07:26 +0000
commit4b10d86ce45d8d0e289df3099f0f0091beb12447 (patch)
treecba3d1ac33a1b7bc8b018891676e13234308a37d /usr.bin
parentf1215d467b4e6729039195e7478cb53285eacf17 (diff)
fix packet_integrity_check() for !have_hostname_in_open.
report from mrwizard@psu.edu via djm@ibs.com.au
Diffstat (limited to 'usr.bin')
-rw-r--r--usr.bin/ssh/channels.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/usr.bin/ssh/channels.c b/usr.bin/ssh/channels.c
index c0f3854ce80..1db2e920473 100644
--- a/usr.bin/ssh/channels.c
+++ b/usr.bin/ssh/channels.c
@@ -16,7 +16,7 @@
*/
#include "includes.h"
-RCSID("$Id: channels.c,v 1.28 1999/11/24 20:02:11 markus Exp $");
+RCSID("$Id: channels.c,v 1.29 1999/11/24 20:07:25 markus Exp $");
#include "ssh.h"
#include "packet.h"
@@ -1020,13 +1020,16 @@ channel_input_port_open(int payload_len)
host_port = packet_get_int();
/* Get remote originator name. */
- if (have_hostname_in_open)
+ if (have_hostname_in_open) {
originator_string = packet_get_string(&originator_len);
- else
+ originator_len += 4; /* size of packet_int */
+ } else {
originator_string = xstrdup("unknown (remote did not supply name)");
+ originator_len = 0; /* no originator supplied */
+ }
packet_integrity_check(payload_len,
- 4 + 4 + host_len + 4 + 4 + originator_len,
+ 4 + 4 + host_len + 4 + originator_len,
SSH_MSG_PORT_OPEN);
/* Check if opening that port is permitted. */
@@ -1225,13 +1228,16 @@ x11_input_open(int payload_len)
remote_channel = packet_get_int();
/* Get remote originator name. */
- if (have_hostname_in_open)
+ if (have_hostname_in_open) {
remote_host = packet_get_string(&remote_len);
- else
+ remote_len += 4;
+ } else {
remote_host = xstrdup("unknown (remote did not supply name)");
+ remote_len = 0;
+ }
debug("Received X11 open request.");
- packet_integrity_check(payload_len, 4 + 4 + remote_len, SSH_SMSG_X11_OPEN);
+ packet_integrity_check(payload_len, 4 + remote_len, SSH_SMSG_X11_OPEN);
/* Try to open a socket for the local X server. */
display = getenv("DISPLAY");