[packet.c packet.h sshconnect.c sshd.c]
     remove some lines, simplify.
This commit is contained in:
Ben Lindstrom 2001-06-05 21:09:18 +00:00
parent 4c247550ae
commit 80c6d77085
5 changed files with 66 additions and 159 deletions

View File

@ -72,6 +72,9 @@
- markus@cvs.openbsd.org 2001/05/28 23:25:24 - markus@cvs.openbsd.org 2001/05/28 23:25:24
[channels.c] [channels.c]
cleanup, typo cleanup, typo
- markus@cvs.openbsd.org 2001/05/28 23:58:35
[packet.c packet.h sshconnect.c sshd.c]
remove some lines, simplify.
20010528 20010528
- (tim) [conifgure.in] add setvbuf test needed for sftp-int.c - (tim) [conifgure.in] add setvbuf test needed for sftp-int.c
@ -5502,4 +5505,4 @@
- Wrote replacements for strlcpy and mkdtemp - Wrote replacements for strlcpy and mkdtemp
- Released 1.0pre1 - Released 1.0pre1
$Id: ChangeLog,v 1.1244 2001/06/05 20:56:47 mouring Exp $ $Id: ChangeLog,v 1.1245 2001/06/05 21:09:18 mouring Exp $

207
packet.c
View File

@ -37,7 +37,7 @@
*/ */
#include "includes.h" #include "includes.h"
RCSID("$OpenBSD: packet.c,v 1.61 2001/04/05 10:42:51 markus Exp $"); RCSID("$OpenBSD: packet.c,v 1.62 2001/05/28 23:58:35 markus Exp $");
#include "xmalloc.h" #include "xmalloc.h"
#include "buffer.h" #include "buffer.h"
@ -75,12 +75,6 @@ RCSID("$OpenBSD: packet.c,v 1.61 2001/04/05 10:42:51 markus Exp $");
static int connection_in = -1; static int connection_in = -1;
static int connection_out = -1; static int connection_out = -1;
/*
* Cipher type. This value is only used to determine whether to pad the
* packets with zeroes or random data.
*/
static int cipher_type = SSH_CIPHER_NONE;
/* Protocol flags for the remote side. */ /* Protocol flags for the remote side. */
static u_int remote_protocol_flags = 0; static u_int remote_protocol_flags = 0;
@ -118,20 +112,9 @@ static int initialized = 0;
/* Set to true if the connection is interactive. */ /* Set to true if the connection is interactive. */
static int interactive_mode = 0; static int interactive_mode = 0;
/* True if SSH2 packet format is used */
int use_ssh2_packet_format = 0;
/* Session key information for Encryption and MAC */ /* Session key information for Encryption and MAC */
Newkeys *newkeys[MODE_MAX]; Newkeys *newkeys[MODE_MAX];
void
packet_set_ssh2_format(void)
{
DBG(debug("use_ssh2_packet_format"));
use_ssh2_packet_format = 1;
newkeys[MODE_IN] = newkeys[MODE_OUT] = NULL;
}
/* /*
* Sets the descriptors used for communication. Disables encryption until * Sets the descriptors used for communication. Disables encryption until
* packet_set_encryption_key is called. * packet_set_encryption_key is called.
@ -144,9 +127,9 @@ packet_set_connection(int fd_in, int fd_out)
fatal("packet_set_connection: cannot load cipher 'none'"); fatal("packet_set_connection: cannot load cipher 'none'");
connection_in = fd_in; connection_in = fd_in;
connection_out = fd_out; connection_out = fd_out;
cipher_type = SSH_CIPHER_NONE;
cipher_init(&send_context, none, (u_char *) "", 0, NULL, 0); cipher_init(&send_context, none, (u_char *) "", 0, NULL, 0);
cipher_init(&receive_context, none, (u_char *) "", 0, NULL, 0); cipher_init(&receive_context, none, (u_char *) "", 0, NULL, 0);
newkeys[MODE_IN] = newkeys[MODE_OUT] = NULL;
if (!initialized) { if (!initialized) {
initialized = 1; initialized = 1;
buffer_init(&input); buffer_init(&input);
@ -290,7 +273,7 @@ packet_init_compression()
void void
packet_start_compression(int level) packet_start_compression(int level)
{ {
if (packet_compression && !use_ssh2_packet_format) if (packet_compression && !compat20)
fatal("Compression already enabled."); fatal("Compression already enabled.");
packet_compression = 1; packet_compression = 1;
packet_init_compression(); packet_init_compression();
@ -298,44 +281,11 @@ packet_start_compression(int level)
buffer_compress_init_recv(); buffer_compress_init_recv();
} }
/*
* Encrypts the given number of bytes, copying from src to dest. bytes is
* known to be a multiple of 8.
*/
void
packet_encrypt(CipherContext * cc, void *dest, void *src,
u_int bytes)
{
cipher_encrypt(cc, dest, src, bytes);
}
/*
* Decrypts the given number of bytes, copying from src to dest. bytes is
* known to be a multiple of 8.
*/
void
packet_decrypt(CipherContext *context, void *dest, void *src, u_int bytes)
{
/*
* Cryptographic attack detector for ssh - Modifications for packet.c
* (C)1998 CORE-SDI, Buenos Aires Argentina Ariel Futoransky(futo@core-sdi.com)
*/
if (!compat20 &&
context->cipher->number != SSH_CIPHER_NONE &&
detect_attack(src, bytes, NULL) == DEATTACK_DETECTED)
packet_disconnect("crc32 compensation attack: network attack detected");
cipher_decrypt(context, dest, src, bytes);
}
/* /*
* Causes any further packets to be encrypted using the given key. The same * Causes any further packets to be encrypted using the given key. The same
* key is used for both sending and reception. However, both directions are * key is used for both sending and reception. However, both directions are
* encrypted independently of each other. * encrypted independently of each other.
*/ */
void void
packet_set_encryption_key(const u_char *key, u_int keylen, packet_set_encryption_key(const u_char *key, u_int keylen,
int number) int number)
@ -349,61 +299,33 @@ packet_set_encryption_key(const u_char *key, u_int keylen,
cipher_init(&send_context, cipher, key, keylen, NULL, 0); cipher_init(&send_context, cipher, key, keylen, NULL, 0);
} }
/* Starts constructing a packet to send. */ /* Start constructing a packet to send. */
void void
packet_start1(int type) packet_start(u_char type)
{ {
char buf[9]; u_char buf[9];
int len;
buffer_clear(&outgoing_packet);
memset(buf, 0, 8);
buf[8] = type;
buffer_append(&outgoing_packet, buf, 9);
}
void
packet_start2(int type)
{
char buf[4+1+1];
buffer_clear(&outgoing_packet);
memset(buf, 0, sizeof buf);
/* buf[0..3] = payload_len; */
/* buf[4] = pad_len; */
buf[5] = type & 0xff;
buffer_append(&outgoing_packet, buf, sizeof buf);
}
void
packet_start(int type)
{
DBG(debug("packet_start[%d]", type)); DBG(debug("packet_start[%d]", type));
if (use_ssh2_packet_format) len = compat20 ? 6 : 9;
packet_start2(type); memset(buf, 0, len - 1);
else buf[len - 1] = type;
packet_start1(type); buffer_clear(&outgoing_packet);
buffer_append(&outgoing_packet, buf, len);
} }
/* Appends a character to the packet data. */ /* Append payload. */
void void
packet_put_char(int value) packet_put_char(int value)
{ {
char ch = value; char ch = value;
buffer_append(&outgoing_packet, &ch, 1); buffer_append(&outgoing_packet, &ch, 1);
} }
/* Appends an integer to the packet data. */
void void
packet_put_int(u_int value) packet_put_int(u_int value)
{ {
buffer_put_int(&outgoing_packet, value); buffer_put_int(&outgoing_packet, value);
} }
/* Appends a string to packet data. */
void void
packet_put_string(const char *buf, u_int len) packet_put_string(const char *buf, u_int len)
{ {
@ -414,16 +336,11 @@ packet_put_cstring(const char *str)
{ {
buffer_put_string(&outgoing_packet, str, strlen(str)); buffer_put_string(&outgoing_packet, str, strlen(str));
} }
void void
packet_put_raw(const char *buf, u_int len) packet_put_raw(const char *buf, u_int len)
{ {
buffer_append(&outgoing_packet, buf, len); buffer_append(&outgoing_packet, buf, len);
} }
/* Appends an arbitrary precision integer to packet data. */
void void
packet_put_bignum(BIGNUM * value) packet_put_bignum(BIGNUM * value)
{ {
@ -468,7 +385,7 @@ packet_send1(void)
/* Insert padding. Initialized to zero in packet_start1() */ /* Insert padding. Initialized to zero in packet_start1() */
padding = 8 - len % 8; padding = 8 - len % 8;
if (cipher_type != SSH_CIPHER_NONE) { if (send_context.cipher->number != SSH_CIPHER_NONE) {
cp = buffer_ptr(&outgoing_packet); cp = buffer_ptr(&outgoing_packet);
for (i = 0; i < padding; i++) { for (i = 0; i < padding; i++) {
if (i % 4 == 0) if (i % 4 == 0)
@ -494,7 +411,7 @@ packet_send1(void)
PUT_32BIT(buf, len); PUT_32BIT(buf, len);
buffer_append(&output, buf, 4); buffer_append(&output, buf, 4);
buffer_append_space(&output, &cp, buffer_len(&outgoing_packet)); buffer_append_space(&output, &cp, buffer_len(&outgoing_packet));
packet_encrypt(&send_context, cp, buffer_ptr(&outgoing_packet), cipher_encrypt(&send_context, cp, buffer_ptr(&outgoing_packet),
buffer_len(&outgoing_packet)); buffer_len(&outgoing_packet));
#ifdef PACKET_DEBUG #ifdef PACKET_DEBUG
@ -568,12 +485,11 @@ void
packet_send2(void) packet_send2(void)
{ {
static u_int32_t seqnr = 0; static u_int32_t seqnr = 0;
u_char *macbuf = NULL; u_char type, *ucp, *macbuf = NULL;
char *cp; char *cp;
u_int packet_length = 0; u_int packet_length = 0;
u_int i, padlen, len; u_int i, padlen, len;
u_int32_t rand = 0; u_int32_t rand = 0;
int type;
Enc *enc = NULL; Enc *enc = NULL;
Mac *mac = NULL; Mac *mac = NULL;
Comp *comp = NULL; Comp *comp = NULL;
@ -586,8 +502,8 @@ packet_send2(void)
} }
block_size = enc ? enc->cipher->block_size : 8; block_size = enc ? enc->cipher->block_size : 8;
cp = buffer_ptr(&outgoing_packet); ucp = (u_char *) buffer_ptr(&outgoing_packet);
type = cp[5] & 0xff; type = ucp[5];
#ifdef PACKET_DEBUG #ifdef PACKET_DEBUG
fprintf(stderr, "plain: "); fprintf(stderr, "plain: ");
@ -633,9 +549,9 @@ packet_send2(void)
} }
/* packet_length includes payload, padding and padding length field */ /* packet_length includes payload, padding and padding length field */
packet_length = buffer_len(&outgoing_packet) - 4; packet_length = buffer_len(&outgoing_packet) - 4;
cp = buffer_ptr(&outgoing_packet); ucp = (u_char *)buffer_ptr(&outgoing_packet);
PUT_32BIT(cp, packet_length); PUT_32BIT(ucp, packet_length);
cp[4] = padlen & 0xff; ucp[4] = padlen;
DBG(debug("send: len %d (includes padlen %d)", packet_length+4, padlen)); DBG(debug("send: len %d (includes padlen %d)", packet_length+4, padlen));
/* compute MAC over seqnr and packet(length fields, payload, padding) */ /* compute MAC over seqnr and packet(length fields, payload, padding) */
@ -647,7 +563,7 @@ packet_send2(void)
} }
/* encrypt packet and append to output buffer. */ /* encrypt packet and append to output buffer. */
buffer_append_space(&output, &cp, buffer_len(&outgoing_packet)); buffer_append_space(&output, &cp, buffer_len(&outgoing_packet));
packet_encrypt(&send_context, cp, buffer_ptr(&outgoing_packet), cipher_encrypt(&send_context, cp, buffer_ptr(&outgoing_packet),
buffer_len(&outgoing_packet)); buffer_len(&outgoing_packet));
/* append unencrypted MAC */ /* append unencrypted MAC */
if (mac && mac->enabled) if (mac && mac->enabled)
@ -668,7 +584,7 @@ packet_send2(void)
void void
packet_send() packet_send()
{ {
if (use_ssh2_packet_format) if (compat20)
packet_send2(); packet_send2();
else else
packet_send1(); packet_send1();
@ -699,7 +615,7 @@ packet_read(int *payload_len_ptr)
for (;;) { for (;;) {
/* Try to read a packet from the buffer. */ /* Try to read a packet from the buffer. */
type = packet_read_poll(payload_len_ptr); type = packet_read_poll(payload_len_ptr);
if (!use_ssh2_packet_format && ( if (!compat20 && (
type == SSH_SMSG_SUCCESS type == SSH_SMSG_SUCCESS
|| type == SSH_SMSG_FAILURE || type == SSH_SMSG_FAILURE
|| type == SSH_CMSG_EOF || type == SSH_CMSG_EOF
@ -772,8 +688,8 @@ int
packet_read_poll1(int *payload_len_ptr) packet_read_poll1(int *payload_len_ptr)
{ {
u_int len, padded_len; u_int len, padded_len;
u_char *ucp; u_char *ucp, type;
char buf[8], *cp; char *cp;
u_int checksum, stored_checksum; u_int checksum, stored_checksum;
/* Check if input size is less than minimum packet size. */ /* Check if input size is less than minimum packet size. */
@ -795,10 +711,20 @@ packet_read_poll1(int *payload_len_ptr)
/* Consume packet length. */ /* Consume packet length. */
buffer_consume(&input, 4); buffer_consume(&input, 4);
/* Copy data to incoming_packet. */ /*
* Cryptographic attack detector for ssh
* (C)1998 CORE-SDI, Buenos Aires Argentina
* Ariel Futoransky(futo@core-sdi.com)
*/
if (receive_context.cipher->number != SSH_CIPHER_NONE &&
detect_attack(buffer_ptr(&input), padded_len, NULL) == DEATTACK_DETECTED)
packet_disconnect("crc32 compensation attack: network attack detected");
/* Decrypt data to incoming_packet. */
buffer_clear(&incoming_packet); buffer_clear(&incoming_packet);
buffer_append_space(&incoming_packet, &cp, padded_len); buffer_append_space(&incoming_packet, &cp, padded_len);
packet_decrypt(&receive_context, cp, buffer_ptr(&input), padded_len); cipher_decrypt(&receive_context, cp, buffer_ptr(&input), padded_len);
buffer_consume(&input, padded_len); buffer_consume(&input, padded_len);
#ifdef PACKET_DEBUG #ifdef PACKET_DEBUG
@ -814,7 +740,6 @@ packet_read_poll1(int *payload_len_ptr)
buffer_consume(&incoming_packet, 8 - len % 8); buffer_consume(&incoming_packet, 8 - len % 8);
/* Test check bytes. */ /* Test check bytes. */
if (len != buffer_len(&incoming_packet)) if (len != buffer_len(&incoming_packet))
packet_disconnect("packet_read_poll: len %d != buffer_len %d.", packet_disconnect("packet_read_poll: len %d != buffer_len %d.",
len, buffer_len(&incoming_packet)); len, buffer_len(&incoming_packet));
@ -825,7 +750,6 @@ packet_read_poll1(int *payload_len_ptr)
packet_disconnect("Corrupted check bytes on input."); packet_disconnect("Corrupted check bytes on input.");
buffer_consume_end(&incoming_packet, 4); buffer_consume_end(&incoming_packet, 4);
/* If using packet compression, decompress the packet. */
if (packet_compression) { if (packet_compression) {
buffer_clear(&compression_buffer); buffer_clear(&compression_buffer);
buffer_uncompress(&incoming_packet, &compression_buffer); buffer_uncompress(&incoming_packet, &compression_buffer);
@ -833,14 +757,9 @@ packet_read_poll1(int *payload_len_ptr)
buffer_append(&incoming_packet, buffer_ptr(&compression_buffer), buffer_append(&incoming_packet, buffer_ptr(&compression_buffer),
buffer_len(&compression_buffer)); buffer_len(&compression_buffer));
} }
/* Get packet type. */ type = buffer_get_char(&incoming_packet);
buffer_get(&incoming_packet, &buf[0], 1);
/* Return length of payload (without type field). */
*payload_len_ptr = buffer_len(&incoming_packet); *payload_len_ptr = buffer_len(&incoming_packet);
return type;
/* Return type. */
return (u_char) buf[0];
} }
int int
@ -849,10 +768,8 @@ packet_read_poll2(int *payload_len_ptr)
static u_int32_t seqnr = 0; static u_int32_t seqnr = 0;
static u_int packet_length = 0; static u_int packet_length = 0;
u_int padlen, need; u_int padlen, need;
u_char buf[8], *macbuf; u_char *macbuf, *ucp, type;
u_char *ucp;
char *cp; char *cp;
int type;
int maclen, block_size; int maclen, block_size;
Enc *enc = NULL; Enc *enc = NULL;
Mac *mac = NULL; Mac *mac = NULL;
@ -875,7 +792,7 @@ packet_read_poll2(int *payload_len_ptr)
return SSH_MSG_NONE; return SSH_MSG_NONE;
buffer_clear(&incoming_packet); buffer_clear(&incoming_packet);
buffer_append_space(&incoming_packet, &cp, block_size); buffer_append_space(&incoming_packet, &cp, block_size);
packet_decrypt(&receive_context, cp, buffer_ptr(&input), cipher_decrypt(&receive_context, cp, buffer_ptr(&input),
block_size); block_size);
ucp = (u_char *) buffer_ptr(&incoming_packet); ucp = (u_char *) buffer_ptr(&incoming_packet);
packet_length = GET_32BIT(ucp); packet_length = GET_32BIT(ucp);
@ -904,7 +821,7 @@ packet_read_poll2(int *payload_len_ptr)
buffer_dump(&input); buffer_dump(&input);
#endif #endif
buffer_append_space(&incoming_packet, &cp, need); buffer_append_space(&incoming_packet, &cp, need);
packet_decrypt(&receive_context, cp, buffer_ptr(&input), need); cipher_decrypt(&receive_context, cp, buffer_ptr(&input), need);
buffer_consume(&input, need); buffer_consume(&input, need);
/* /*
* compute MAC over seqnr and packet, * compute MAC over seqnr and packet,
@ -924,7 +841,7 @@ packet_read_poll2(int *payload_len_ptr)
/* get padlen */ /* get padlen */
cp = buffer_ptr(&incoming_packet) + 4; cp = buffer_ptr(&incoming_packet) + 4;
padlen = *cp & 0xff; padlen = (u_char) *cp;
DBG(debug("input: padlen %d", padlen)); DBG(debug("input: padlen %d", padlen));
if (padlen < 4) if (padlen < 4)
packet_disconnect("Corrupted padlen %d on input.", padlen); packet_disconnect("Corrupted padlen %d on input.", padlen);
@ -946,37 +863,30 @@ packet_read_poll2(int *payload_len_ptr)
* get packet type, implies consume. * get packet type, implies consume.
* return length of payload (without type field) * return length of payload (without type field)
*/ */
buffer_get(&incoming_packet, (char *)&buf[0], 1); type = buffer_get_char(&incoming_packet);
*payload_len_ptr = buffer_len(&incoming_packet);
/* reset for next packet */
packet_length = 0;
/* extract packet type */
type = (u_char)buf[0];
if (type == SSH2_MSG_NEWKEYS) if (type == SSH2_MSG_NEWKEYS)
set_newkeys(MODE_IN); set_newkeys(MODE_IN);
*payload_len_ptr = buffer_len(&incoming_packet);
#ifdef PACKET_DEBUG #ifdef PACKET_DEBUG
fprintf(stderr, "read/plain[%d]:\r\n", type); fprintf(stderr, "read/plain[%d]:\r\n", type);
buffer_dump(&incoming_packet); buffer_dump(&incoming_packet);
#endif #endif
return (u_char)type; /* reset for next packet */
packet_length = 0;
return type;
} }
int int
packet_read_poll(int *payload_len_ptr) packet_read_poll(int *payload_len_ptr)
{ {
char *msg;
for (;;) {
int type = use_ssh2_packet_format ?
packet_read_poll2(payload_len_ptr):
packet_read_poll1(payload_len_ptr);
if(compat20) {
int reason; int reason;
if (type != 0) u_char type;
char *msg;
for (;;) {
if (compat20) {
type = packet_read_poll2(payload_len_ptr);
if (type)
DBG(debug("received packet type %d", type)); DBG(debug("received packet type %d", type));
switch(type) { switch(type) {
case SSH2_MSG_IGNORE: case SSH2_MSG_IGNORE:
@ -1002,6 +912,7 @@ packet_read_poll(int *payload_len_ptr)
break; break;
} }
} else { } else {
type = packet_read_poll1(payload_len_ptr);
switch(type) { switch(type) {
case SSH_MSG_IGNORE: case SSH_MSG_IGNORE:
break; break;
@ -1018,7 +929,7 @@ packet_read_poll(int *payload_len_ptr)
xfree(msg); xfree(msg);
break; break;
default: default:
if (type != 0) if (type)
DBG(debug("received packet type %d", type)); DBG(debug("received packet type %d", type));
return type; return type;
break; break;
@ -1345,7 +1256,7 @@ packet_inject_ignore(int sumlen)
int blocksize, padlen, have, need, nb, mini, nbytes; int blocksize, padlen, have, need, nb, mini, nbytes;
Enc *enc = NULL; Enc *enc = NULL;
if (use_ssh2_packet_format == 0) if (compat20 == 0)
return; return;
have = buffer_len(&outgoing_packet); have = buffer_len(&outgoing_packet);

View File

@ -11,7 +11,7 @@
* called by a name other than "ssh" or "Secure Shell". * called by a name other than "ssh" or "Secure Shell".
*/ */
/* RCSID("$OpenBSD: packet.h,v 1.22 2001/04/14 16:33:20 stevesk Exp $"); */ /* RCSID("$OpenBSD: packet.h,v 1.23 2001/05/28 23:58:35 markus Exp $"); */
#ifndef PACKET_H #ifndef PACKET_H
#define PACKET_H #define PACKET_H
@ -71,7 +71,7 @@ void packet_set_interactive(int interactive);
int packet_is_interactive(void); int packet_is_interactive(void);
/* Starts constructing a packet to send. */ /* Starts constructing a packet to send. */
void packet_start(int type); void packet_start(u_char type);
/* Appends a character to the packet data. */ /* Appends a character to the packet data. */
void packet_put_char(int ch); void packet_put_char(int ch);
@ -208,9 +208,6 @@ do { \
int packet_connection_is_on_socket(void); int packet_connection_is_on_socket(void);
int packet_connection_is_ipv4(void); int packet_connection_is_ipv4(void);
/* enable SSH2 packet format */
void packet_set_ssh2_format(void);
/* returns remaining payload bytes */ /* returns remaining payload bytes */
int packet_remaining(void); int packet_remaining(void);

View File

@ -13,7 +13,7 @@
*/ */
#include "includes.h" #include "includes.h"
RCSID("$OpenBSD: sshconnect.c,v 1.105 2001/04/30 11:18:52 markus Exp $"); RCSID("$OpenBSD: sshconnect.c,v 1.106 2001/05/28 23:58:35 markus Exp $");
#include <openssl/bn.h> #include <openssl/bn.h>
@ -430,8 +430,6 @@ ssh_exchange_identification(void)
fatal("Protocol major versions differ: %d vs. %d", fatal("Protocol major versions differ: %d vs. %d",
(options.protocol & SSH_PROTO_2) ? PROTOCOL_MAJOR_2 : PROTOCOL_MAJOR_1, (options.protocol & SSH_PROTO_2) ? PROTOCOL_MAJOR_2 : PROTOCOL_MAJOR_1,
remote_major); remote_major);
if (compat20)
packet_set_ssh2_format();
/* Send our own protocol version identification. */ /* Send our own protocol version identification. */
snprintf(buf, sizeof buf, "SSH-%d.%d-%.100s\n", snprintf(buf, sizeof buf, "SSH-%d.%d-%.100s\n",
compat20 ? PROTOCOL_MAJOR_2 : PROTOCOL_MAJOR_1, compat20 ? PROTOCOL_MAJOR_2 : PROTOCOL_MAJOR_1,

4
sshd.c
View File

@ -40,7 +40,7 @@
*/ */
#include "includes.h" #include "includes.h"
RCSID("$OpenBSD: sshd.c,v 1.197 2001/05/19 19:43:57 stevesk Exp $"); RCSID("$OpenBSD: sshd.c,v 1.198 2001/05/28 23:58:35 markus Exp $");
#include <openssl/dh.h> #include <openssl/dh.h>
#include <openssl/bn.h> #include <openssl/bn.h>
@ -435,8 +435,6 @@ sshd_exchange_identification(int sock_in, int sock_out)
server_version_string, client_version_string); server_version_string, client_version_string);
fatal_cleanup(); fatal_cleanup();
} }
if (compat20)
packet_set_ssh2_format();
} }