From a2bc4b6be96c81c235e79252cd1af83681fff92b Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Tue, 2 Jan 2024 01:57:39 +0100 Subject: [PATCH] Fix byte overwrite for long chained RAPDU. Signed-off-by: Pol Henarejos --- src/apdu.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/apdu.c b/src/apdu.c index 5f9a354..896ff44 100644 --- a/src/apdu.c +++ b/src/apdu.c @@ -173,6 +173,7 @@ void apdu_thread() { card_init_core1(); while (1) { uint32_t m = 0; + int proc = 0; queue_remove_blocking(&usb_to_card_q, &m); if (m == EV_VERIFY_CMD_AVAILABLE || m == EV_MODIFY_CMD_AVAILABLE) { @@ -183,11 +184,12 @@ void apdu_thread() { break; } - process_apdu(); + proc = process_apdu(); done: ; - - apdu_finish(); + if (proc == 1) { + apdu_finish(); + } finished_data_size = apdu_next(); uint32_t flag = EV_EXEC_FINISHED; queue_add_blocking(&card_to_usb_q, &flag);