Hoernchen has uploaded this change for review.
7816fsm: Handle unexpected procedure bytes gracefully
Dispatch TPDU_FAILED_IND and don't assert for wrong procedure bytes.
Closes:SYS#8050
Change-Id: Ic53814540775f902fce644a5565a7bd2f177a7fe
---
M ccid_common/iso7816_fsm.c
1 file changed, 7 insertions(+), 3 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ccid-firmware refs/changes/76/42776/1
diff --git a/ccid_common/iso7816_fsm.c b/ccid_common/iso7816_fsm.c
index bad827a..3202a80 100644
--- a/ccid_common/iso7816_fsm.c
+++ b/ccid_common/iso7816_fsm.c
@@ -1370,8 +1370,11 @@
card_uart_ctrl(ip->uart, CUART_CTL_RX_TIMER_HINT, 1);
osmo_fsm_inst_state_chg(fi, TPDU_S_RX_SINGLE, 0, 0);
}
- } else
- OSMO_ASSERT(0);
+ } else {
+ LOGPFSML(fi, LOGL_ERROR, "Unexpected byte 0x%02x in procedure state (INS=0x%02x)\n", byte, tpduh->ins);
+ osmo_fsm_inst_state_chg(fi, TPDU_S_DONE, 0, 0);
+ osmo_fsm_inst_dispatch(fi->proc.parent, ISO7816_E_TPDU_FAILED_IND, tfp->tpdu);
+ }
break;
default:
OSMO_ASSERT(0);
@@ -1588,7 +1591,8 @@
S(TPDU_S_RX_SINGLE) |
S(TPDU_S_TX_REMAINING) |
S(TPDU_S_TX_SINGLE) |
- S(TPDU_S_SW2),
+ S(TPDU_S_SW2) |
+ S(TPDU_S_DONE),
.action = tpdu_s_procedure_action,
},
[TPDU_S_TX_REMAINING] = {
To view, visit change 42776. To unsubscribe, or for help writing mail filters, visit settings.