Skip to content

Commit d2e315e

Browse files
author
Isaiah Becker-Mayer
committed
Merge branch 'feat/deactivate-all' into feat/dynamic-resize
2 parents 83be7c8 + 66ceda2 commit d2e315e

File tree

4 files changed

+9
-0
lines changed

4 files changed

+9
-0
lines changed

crates/ironrdp-pdu/src/ber.rs

+4
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ pub(crate) fn read_enumerated(stream: &mut ReadCursor<'_>, count: u8) -> PduResu
133133
return Err(invalid_message_err!("len", "invalid enumerated len"));
134134
}
135135

136+
ensure_size!(in: stream, size: 1);
136137
let enumerated = stream.read_u8();
137138
if enumerated == u8::MAX || enumerated + 1 > count {
138139
return Err(invalid_message_err!("enumerated", "invalid enumerated value"));
@@ -203,6 +204,8 @@ pub(crate) fn write_bool(stream: &mut WriteCursor<'_>, value: bool) -> PduResult
203204
let mut size = 0;
204205
size += write_universal_tag(stream, Tag::Boolean, Pc::Primitive)?;
205206
size += write_length(stream, 1)?;
207+
208+
ensure_size!(in: stream, size: 1);
206209
stream.write_u8(if value { 0xFF } else { 0x00 });
207210
size += 1;
208211

@@ -217,6 +220,7 @@ pub(crate) fn read_bool(stream: &mut ReadCursor<'_>) -> PduResult<bool> {
217220
return Err(invalid_message_err!("len", "invalid integer len"));
218221
}
219222

223+
ensure_size!(in: stream, size: 1);
220224
Ok(stream.read_u8() != 0)
221225
}
222226

crates/ironrdp-pdu/src/gcc/security_data.rs

+1
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,7 @@ impl<'de> PduDecode<'de> for ServerSecurityData {
171171
));
172172
}
173173

174+
ensure_size!(in: src, size: SERVER_RANDOM_LEN);
174175
let server_random = src.read_array();
175176

176177
ensure_size!(in: src, size: server_cert_len);

crates/ironrdp-pdu/src/rdp/server_license/client_platform_challenge_response.rs

+1
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ impl<'de> PduDecode<'de> for ClientPlatformChallengeResponse {
152152
ensure_size!(in: src, size: encrypted_hwid_blob.length);
153153
let encrypted_hwid = src.read_slice(encrypted_hwid_blob.length).into();
154154

155+
ensure_size!(in: src, size: MAC_SIZE);
155156
let mac_data = src.read_slice(MAC_SIZE).into();
156157

157158
Ok(Self {

crates/ironrdp-pdu/src/rdp/server_license/server_license_request/cert.rs

+3
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ impl PduEncode for X509CertificateChain {
6969

7070
impl<'de> PduDecode<'de> for X509CertificateChain {
7171
fn decode(src: &mut ReadCursor<'de>) -> PduResult<Self> {
72+
ensure_size!(in: src, size: 4);
7273
let certificate_count = cast_length!("certArrayLen", src.read_u32())?;
7374
if !(MIN_CERTIFICATE_AMOUNT..MAX_CERTIFICATE_AMOUNT).contains(&certificate_count) {
7475
return Err(invalid_message_err!("certArrayLen", "invalid x509 certificate amount"));
@@ -139,6 +140,8 @@ impl PduEncode for ProprietaryCertificate {
139140

140141
impl<'de> PduDecode<'de> for ProprietaryCertificate {
141142
fn decode(src: &mut ReadCursor<'de>) -> PduResult<Self> {
143+
ensure_size!(in: src, size: PROP_CERT_NO_BLOBS_SIZE);
144+
142145
let signature_algorithm_id = src.read_u32();
143146
if signature_algorithm_id != SIGNATURE_ALGORITHM_RSA {
144147
return Err(invalid_message_err!("sigAlgId", "invalid signature algorithm ID"));

0 commit comments

Comments
 (0)