File openssh-6.6p1-out_of_seq_newkeys.patch of Package openssh.10219
# HG changeset patch
# Parent 6e355f042064d4c0f176912fbc8c505f65a4cc6c
diff --git a/openssh-6.6p1/kex.c b/openssh-6.6p1/kex.c
--- a/openssh-6.6p1/kex.c
+++ b/openssh-6.6p1/kex.c
@@ -287,16 +287,17 @@ kex_finish(Kex *kex)
/* packet_write_wait(); */
debug("SSH2_MSG_NEWKEYS sent");
debug("expecting SSH2_MSG_NEWKEYS");
packet_read_expect(SSH2_MSG_NEWKEYS);
packet_check_eom();
debug("SSH2_MSG_NEWKEYS received");
+ set_newkeys(MODE_IN);
kex->done = 1;
buffer_clear(&kex->peer);
/* buffer_clear(&kex->my); */
kex->flags &= ~KEX_INIT_SENT;
free(kex->name);
kex->name = NULL;
}
diff --git a/openssh-6.6p1/packet.c b/openssh-6.6p1/packet.c
--- a/openssh-6.6p1/packet.c
+++ b/openssh-6.6p1/packet.c
@@ -1451,20 +1451,17 @@ packet_read_poll2(u_int32_t *seqnr_p)
}
/*
* get packet type, implies consume.
* return length of payload (without type field)
*/
type = buffer_get_char(&active_state->incoming_packet);
if (type < SSH2_MSG_MIN || type >= SSH2_MSG_LOCAL_MIN)
packet_disconnect("Invalid ssh2 packet type: %d", type);
- if (type == SSH2_MSG_NEWKEYS)
- set_newkeys(MODE_IN);
- else if (type == SSH2_MSG_USERAUTH_SUCCESS &&
- !active_state->server_side)
+ if (type == SSH2_MSG_USERAUTH_SUCCESS && !active_state->server_side)
packet_enable_delayed_compress();
#ifdef PACKET_DEBUG
fprintf(stderr, "read/plain[%d]:\r\n", type);
buffer_dump(&active_state->incoming_packet);
#endif
/* reset for next packet */
active_state->packlen = 0;
return type;