diff options
author | Roshan Pius <rpius@google.com> | 2022-04-14 17:48:49 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2022-04-14 17:48:49 +0000 |
commit | 666303418ba951836478f24190b6de43a2b207f0 (patch) | |
tree | e5f2808caae875bc5317b9e10c6239c0253e745c | |
parent | 1e1fb2a725bfa9b2d7d04ec1da355d3ae499fb9a (diff) | |
parent | 2276af0a8c6e80fc63ab020508878dfaa9595c74 (diff) | |
download | uwb-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.rs | 12 |
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 }) } |