summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoshan Pius <rpius@google.com>2022-04-14 17:48:49 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2022-04-14 17:48:49 +0000
commit666303418ba951836478f24190b6de43a2b207f0 (patch)
treee5f2808caae875bc5317b9e10c6239c0253e745c
parent1e1fb2a725bfa9b2d7d04ec1da355d3ae499fb9a (diff)
parent2276af0a8c6e80fc63ab020508878dfaa9595c74 (diff)
downloaduwb-666303418ba951836478f24190b6de43a2b207f0.tar.gz
uwb(uci-rust): Fix error checking in build_set_app_config_cmd am: 2276af0a8c
Original change: https://googleplex-android-review.googlesource.com/c/platform/external/uwb/+/17756877 Change-Id: Ie3ad20eb896e61c18823c888867267bf674798e3 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--src/rust/uci/uci_hmsgs.rs12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/rust/uci/uci_hmsgs.rs b/src/rust/uci/uci_hmsgs.rs
index 9b2f57d..538b679 100644
--- a/src/rust/uci/uci_hmsgs.rs
+++ b/src/rust/uci/uci_hmsgs.rs
@@ -71,15 +71,19 @@ pub fn build_set_app_config_cmd(
no_of_params: u32,
mut app_configs: &[u8],
) -> Result<SessionSetAppConfigCmdBuilder, UwbErr> {
- if no_of_params != app_configs.len().try_into()? {
- return Err(UwbErr::InvalidArgs);
- }
let mut tlvs = Vec::new();
+ let received_tlvs_len = app_configs.len();
+ let mut parsed_tlvs_len = 0;
for _ in 0..no_of_params {
let tlv = AppConfigTlv::parse(app_configs)?;
- app_configs = &app_configs[tlv.v.len() + 2..];
+ app_configs = app_configs.get(tlv.v.len() + 2..).ok_or(UwbErr::InvalidArgs)?;
+ parsed_tlvs_len += tlv.v.len() + 2;
tlvs.push(tlv);
}
+ if parsed_tlvs_len != received_tlvs_len {
+ error!("Parsed TLV len: {:?}, received len: {:?}", parsed_tlvs_len, received_tlvs_len);
+ return Err(UwbErr::InvalidArgs);
+ }
Ok(SessionSetAppConfigCmdBuilder { session_id, tlvs })
}