From 99b2762cd9a9f4ff224c03995b98deaf9401c415 Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Mon, 10 Mar 2025 11:35:50 +0000 Subject: [PATCH] Fix sending error responses --- .../protocols/type_4_tag/type_4_tag_listener_i.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/lib/nfc/protocols/type_4_tag/type_4_tag_listener_i.c b/lib/nfc/protocols/type_4_tag/type_4_tag_listener_i.c index b18189f1e..a5557f95f 100644 --- a/lib/nfc/protocols/type_4_tag/type_4_tag_listener_i.c +++ b/lib/nfc/protocols/type_4_tag/type_4_tag_listener_i.c @@ -200,6 +200,8 @@ Type4TagError type_4_tag_listener_handle_apdu(Type4TagListener* instance, const BitBuffer* rx_buffer) { Type4TagError error = Type4TagErrorNone; + bit_buffer_reset(instance->tx_buffer); + do { typedef struct { uint8_t cla_ins[2]; @@ -297,18 +299,18 @@ Type4TagError } } - bit_buffer_reset(instance->tx_buffer); - error = handler(instance, apdu->p1, apdu->p2, lc, data, le); + } while(false); + if(bit_buffer_get_size_bytes(instance->tx_buffer) > 0) { const Iso14443_4aError iso14443_4a_error = iso14443_4a_listener_send_block(instance->iso14443_4a_listener, instance->tx_buffer); - // Show unknown command on screen - if(error == Type4TagErrorCustomCommand) break; - - error = type_4_tag_process_error(iso14443_4a_error); - } while(false); + // Keep error flag to show unknown command on screen + if(error != Type4TagErrorCustomCommand) { + error = type_4_tag_process_error(iso14443_4a_error); + } + } return error; }