From 1ac071e44948dca3a395400fded01d75113bee8e Mon Sep 17 00:00:00 2001 From: Foxushka <135865149+Foxushka@users.noreply.github.com> Date: Thu, 7 Sep 2023 20:07:38 +0300 Subject: [PATCH] block_count can't be move than 0xFF, simplify code --- firmware/application/src/app_cmd.c | 13 +++++-------- software/script/chameleon_cmd.py | 3 +-- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/firmware/application/src/app_cmd.c b/firmware/application/src/app_cmd.c index fa2d1f9..2348b8a 100644 --- a/firmware/application/src/app_cmd.c +++ b/firmware/application/src/app_cmd.c @@ -579,12 +579,11 @@ data_frame_tx_t *cmd_processor_set_mf1_emulator_block(uint16_t cmd, uint16_t sta } data_frame_tx_t *cmd_processor_get_mf1_emulator_block(uint16_t cmd, uint16_t status, uint16_t length, uint8_t *data) { - if (length == 3) { + if (length == 2) { uint8_t block_index = data[0]; - uint16_t block_count = data[1] | (data[2] << 8); - if (block_count == 0 || block_index + block_count > NFC_TAG_MF1_BLOCK_MAX) { - status = STATUS_PAR_ERR; - } else { + uint8_t block_count = data[1]; + + if (block_count != 0 && (uint16_t) block_index + block_count < NFC_TAG_MF1_BLOCK_MAX) { tag_data_buffer_t *buffer = get_buffer_by_tag_type(TAG_TYPE_MIFARE_4096); nfc_tag_mf1_information_t *info = (nfc_tag_mf1_information_t *)buffer->buffer; uint16_t result_length = block_count * NFC_TAG_MF1_DATA_SIZE; @@ -596,11 +595,9 @@ data_frame_tx_t *cmd_processor_get_mf1_emulator_block(uint16_t cmd, uint16_t sta return data_frame_make(cmd, status, result_length, result_buffer); } - } else { - status = STATUS_PAR_ERR; } - return data_frame_make(cmd, status, 0, NULL); + return data_frame_make(cmd, STATUS_PAR_ERR, 0, NULL); } data_frame_tx_t *cmd_processor_set_mf1_anti_collision_res(uint16_t cmd, uint16_t status, uint16_t length, uint8_t *data) { diff --git a/software/script/chameleon_cmd.py b/software/script/chameleon_cmd.py index e769c90..1986f26 100644 --- a/software/script/chameleon_cmd.py +++ b/software/script/chameleon_cmd.py @@ -631,8 +631,7 @@ class ChameleonCMD: """ Gets data for selected block range """ - data = struct.pack('