Skip to content

Commit f0881aa

Browse files
committed
fixed #500 - Including TTY_OP_END in terminal_modes triggers ‘Packet integrity error’ due to duplicate sentinel
1 parent 98b7e91 commit f0881aa

File tree

3 files changed

+8
-4
lines changed

3 files changed

+8
-4
lines changed

russh/src/client/session.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,11 +128,13 @@ impl Session {
128128

129129
((1 + 5 * terminal_modes.len()) as u32).encode(&mut enc.write)?;
130130
for &(code, value) in terminal_modes {
131+
if code == Pty::TTY_OP_END {
132+
continue;
133+
}
131134
(code as u8).encode(&mut enc.write)?;
132135
value.encode(&mut enc.write)?;
133136
}
134-
// 0 code (to terminate the list)
135-
0u8.encode(&mut enc.write)?;
137+
(Pty::TTY_OP_END as u8).encode(&mut enc.write)?;
136138
});
137139
}
138140
}

russh/src/keys/format/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,8 +144,9 @@ pub fn encode_pkcs8_pem_encrypted<W: Write>(
144144

145145
#[cfg(feature = "rsa")]
146146
fn decode_rsa_pkcs1_der(secret: &[u8]) -> Result<ssh_key::private::RsaKeypair, Error> {
147-
use pkcs1::DecodeRsaPrivateKey;
148147
use std::convert::TryInto;
149148

149+
use pkcs1::DecodeRsaPrivateKey;
150+
150151
Ok(rsa::RsaPrivateKey::from_pkcs1_der(secret)?.try_into()?)
151152
}

russh/src/session.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,8 @@ impl<C> CommonSession<C> {
134134
self.strict_kex = self.strict_kex || newkeys.names.strict_kex;
135135

136136
// Reset compression state
137-
enc.client_compression.init_compress(self.packet_writer.compress());
137+
enc.client_compression
138+
.init_compress(self.packet_writer.compress());
138139
enc.server_compression.init_decompress(&mut enc.decompress);
139140
}
140141
}

0 commit comments

Comments
 (0)