Merge Android 12
Bug: 202323961
Merged-In: Ib5136d6b1d938fdfdd7789ee8c45834b44ed33d3
Change-Id: If0bf21490878eea261edd5f9b9593fa3c4fd8e8f
diff --git a/pn8x/halimpl/hal/phNxpNciHal.cc b/pn8x/halimpl/hal/phNxpNciHal.cc
index 37b0aa3..1ce5b87 100644
--- a/pn8x/halimpl/hal/phNxpNciHal.cc
+++ b/pn8x/halimpl/hal/phNxpNciHal.cc
@@ -2484,10 +2484,15 @@
******************************************************************************/
int phNxpNciHal_check_ncicmd_write_window(uint16_t cmd_len, uint8_t* p_cmd) {
- UNUSED(cmd_len);
NFCSTATUS status = NFCSTATUS_FAILED;
int sem_timedout = 2, s;
struct timespec ts;
+
+ if (cmd_len < 1) {
+ android_errorWriteLog(0x534e4554, "153880357");
+ return NFCSTATUS_FAILED;
+ }
+
if ((p_cmd[0] & 0xF0) == 0x20) {
clock_gettime(CLOCK_REALTIME, &ts);
ts.tv_sec += sem_timedout;
diff --git a/pn8x/halimpl/hal/phNxpNciHal_ext.cc b/pn8x/halimpl/hal/phNxpNciHal_ext.cc
index 3feaa01..59b6007 100644
--- a/pn8x/halimpl/hal/phNxpNciHal_ext.cc
+++ b/pn8x/halimpl/hal/phNxpNciHal_ext.cc
@@ -576,6 +576,13 @@
status = NFCSTATUS_FAILED;
goto clean_and_return;
}
+
+ if (cmd_len < 3) {
+ android_errorWriteLog(0x534e4554, "153880630");
+ status = NFCSTATUS_FAILED;
+ goto clean_and_return;
+ }
+
/* No NTF expected for OMAPI command */
if (p_cmd[0] == 0x2F && p_cmd[1] == 0x1 && p_cmd[2] == 0x01) {
nxpncihal_ctrl.nci_info.wait_for_ntf = FALSE;
@@ -703,7 +710,8 @@
}
}
- if (bEnableMfcReader && p_cmd_data[0] == 0x21 && p_cmd_data[1] == 0x00) {
+ if (*cmd_len <= (NCI_MAX_DATA_LEN - 3) && bEnableMfcReader &&
+ p_cmd_data[0] == 0x21 && p_cmd_data[1] == 0x00) {
NXPLOG_NCIHAL_D("Going through extns - Adding Mifare in RF Discovery");
p_cmd_data[2] += 3;
p_cmd_data[3] += 1;
@@ -814,7 +822,8 @@
phNxpNciHal_print_packet("RECV", p_rsp_data, 5);
// status = NFCSTATUS_FAILED;
NXPLOG_NCIHAL_D("> Going through workaround - Dirty Set Config - End ");
- } else if (p_cmd_data[0] == 0x21 && p_cmd_data[1] == 0x00) {
+ } else if (*cmd_len <= (NCI_MAX_DATA_LEN - 3) && p_cmd_data[0] == 0x21 &&
+ p_cmd_data[1] == 0x00) {
NXPLOG_NCIHAL_D(
"> Going through workaround - Add Mifare Classic in Discovery Map");
p_cmd_data[*cmd_len] = 0x80;
diff --git a/pn8x/halimpl/utils/NfccPowerTracker.cpp b/pn8x/halimpl/utils/NfccPowerTracker.cpp
index 4275114..b467d3d 100644
--- a/pn8x/halimpl/utils/NfccPowerTracker.cpp
+++ b/pn8x/halimpl/utils/NfccPowerTracker.cpp
@@ -126,10 +126,19 @@
ALOGD_IF(nfc_debug_enabled,
"NfccPowerTracker::ProcessCmd: Enter, Received len :%d", len);
bool screenStateCommand;
+
+ if (len < 4) {
+ android_errorWriteLog(0x534e4554, "153879824");
+ return;
+ }
if (cmd[0] == 0x20 && cmd[1] == 0x09) {
screenStateCommand = true;
} else {
screenStateCommand = false;
+ if (len < 8) {
+ android_errorWriteLog(0x534e4554, "153879824");
+ return;
+ }
}
if (screenStateCommand && (cmd[3] == 0x00 || cmd[3] == 0x02)) {