Snap for 6123600 from b964543eee101a9e7fa40ab28cce21057d230acc to qt-qpr2-release
Change-Id: Ic204e7f208b677e4cb3fccdf99af8f596ffd9240
diff --git a/src/nfc/tags/rw_i93.cc b/src/nfc/tags/rw_i93.cc
index 132df3a..a1b487a 100644
--- a/src/nfc/tags/rw_i93.cc
+++ b/src/nfc/tags/rw_i93.cc
@@ -2232,8 +2232,11 @@
block_number = (p_i93->ndef_tlv_start_offset + 1) / p_i93->block_size;
- if (rw_i93_send_cmd_write_single_block(block_number, p) ==
- NFC_STATUS_OK) {
+ if (length < p_i93->block_size) {
+ android_errorWriteLog(0x534e4554, "143109193");
+ rw_i93_handle_error(NFC_STATUS_FAILED);
+ } else if (rw_i93_send_cmd_write_single_block(block_number, p) ==
+ NFC_STATUS_OK) {
/* update next writing offset */
p_i93->rw_offset = (block_number + 1) * p_i93->block_size;
p_i93->sub_state = RW_I93_SUBSTATE_WRITE_NDEF;
@@ -2387,8 +2390,11 @@
block_number = (p_i93->rw_offset / p_i93->block_size);
- if (rw_i93_send_cmd_write_single_block(block_number, p) ==
- NFC_STATUS_OK) {
+ if (length < p_i93->block_size) {
+ android_errorWriteLog(0x534e4554, "143155861");
+ rw_i93_handle_error(NFC_STATUS_FAILED);
+ } else if (rw_i93_send_cmd_write_single_block(block_number, p) ==
+ NFC_STATUS_OK) {
/* set offset to the beginning of next block */
p_i93->rw_offset +=
p_i93->block_size - (p_i93->rw_offset % p_i93->block_size);
@@ -2823,7 +2829,10 @@
/* mark CC as read-only */
*(p + 1) |= I93_ICODE_CC_READ_ONLY;
- if (rw_i93_send_cmd_write_single_block(0, p) == NFC_STATUS_OK) {
+ if (length < p_i93->block_size) {
+ android_errorWriteLog(0x534e4554, "143106535");
+ rw_i93_handle_error(NFC_STATUS_FAILED);
+ } else if (rw_i93_send_cmd_write_single_block(0, p) == NFC_STATUS_OK) {
p_i93->sub_state = RW_I93_SUBSTATE_WAIT_UPDATE_CC;
} else {
rw_i93_handle_error(NFC_STATUS_FAILED);