From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Alisher Alikhodjaev Date: Tue, 2 May 2023 14:20:57 -0700 Subject: [PATCH] OOBW in rw_i93_send_to_upper() Bug: 271849189 Test: tag r/w (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:dc9d09e1698725712628d394bf9be4c9003579e8) Merged-In: I1d55954e56a3f995f8dd48bf484fe9fce02b2ed1 Change-Id: I1d55954e56a3f995f8dd48bf484fe9fce02b2ed1 Change-Id: Ia10491e388a495a164462c73ced7ea1965808860 --- SN100x/src/nfc/tags/rw_i93.cc | 9 +++++++++ src/nfc/tags/rw_i93.cc | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/SN100x/src/nfc/tags/rw_i93.cc b/SN100x/src/nfc/tags/rw_i93.cc index 9eb4458f..5bf497ad 100755 --- a/SN100x/src/nfc/tags/rw_i93.cc +++ b/SN100x/src/nfc/tags/rw_i93.cc @@ -467,6 +467,15 @@ void rw_i93_send_to_upper(NFC_HDR* p_resp) { case I93_CMD_GET_MULTI_BLK_SEC: case I93_CMD_EXT_GET_MULTI_BLK_SEC: + if (UINT16_MAX - length < NFC_HDR_SIZE) { + rw_data.i93_cmd_cmpl.status = NFC_STATUS_FAILED; + rw_data.i93_cmd_cmpl.command = p_i93->sent_cmd; + rw_cb.tcb.i93.sent_cmd = 0; + + event = RW_I93_CMD_CMPL_EVT; + break; + } + /* forward tag data or security status */ p_buff = (NFC_HDR*)GKI_getbuf((uint16_t)(length + NFC_HDR_SIZE)); diff --git a/src/nfc/tags/rw_i93.cc b/src/nfc/tags/rw_i93.cc index a648bb9a..a9c220d6 100644 --- a/src/nfc/tags/rw_i93.cc +++ b/src/nfc/tags/rw_i93.cc @@ -528,6 +528,15 @@ void rw_i93_send_to_upper(NFC_HDR* p_resp) { case I93_CMD_GET_MULTI_BLK_SEC: case I93_CMD_EXT_GET_MULTI_BLK_SEC: + if (UINT16_MAX - length < NFC_HDR_SIZE) { + rw_data.i93_cmd_cmpl.status = NFC_STATUS_FAILED; + rw_data.i93_cmd_cmpl.command = p_i93->sent_cmd; + rw_cb.tcb.i93.sent_cmd = 0; + + event = RW_I93_CMD_CMPL_EVT; + break; + } + /* forward tag data or security status */ p_buff = (NFC_HDR*)GKI_getbuf((uint16_t)(length + NFC_HDR_SIZE));