laforge has submitted this change. ( 
https://gerrit.osmocom.org/c/osmo-ccid-firmware/+/40703?usp=email )

Change subject: 7816 fsm: ensure errors always return a msgb
......................................................................

7816 fsm: ensure errors always return a msgb

This should always be safe to do, since I introduced statically allocated (but 
useless in this case) msgbs for the fsm years ago, and this was just leftover 
code from before that.
The only exception is the internal ISO7816_E_TPDU_CLEAR_REQ.

Change-Id: If32484675a0a10f1504477f5eea00c879ec78f1e
---
M ccid_common/iso7816_fsm.c
1 file changed, 7 insertions(+), 7 deletions(-)

Approvals:
  Jenkins Builder: Verified
  laforge: Looks good to me, approved




diff --git a/ccid_common/iso7816_fsm.c b/ccid_common/iso7816_fsm.c
index f6d2185..0aa9571 100644
--- a/ccid_common/iso7816_fsm.c
+++ b/ccid_common/iso7816_fsm.c
@@ -668,7 +668,7 @@

        if (!msgb_tailroom(atp->atr)) {
                LOGPFSML(fi, LOGL_ERROR, "ATR overflow !?!");
-               osmo_fsm_inst_dispatch(fi->proc.parent, ISO7816_E_SW_ERR_IND, 
NULL);
+               osmo_fsm_inst_dispatch(fi->proc.parent, ISO7816_E_SW_ERR_IND, 
atp->atr);
                return -1;
        }
        msgb_put_u8(atp->atr, byte);
@@ -726,15 +726,15 @@
                default:
                        LOGPFSML(fi, LOGL_ERROR, "Invalid TS received: 
0x%02X\n", byte);
                        /* FIXME: somehow indiicate to user */
-                       osmo_fsm_inst_dispatch(fi->proc.parent, 
ISO7816_E_SW_ERR_IND, NULL);
+                       osmo_fsm_inst_dispatch(fi->proc.parent, 
ISO7816_E_SW_ERR_IND, atp->atr);
                        break;
                }
                atp->i = 0; /* first interface byte sub-group is coming (T0 is 
kind of TD0) */
                break;
        case ISO7816_E_WTIME_EXP:
-               osmo_fsm_inst_dispatch(fi->proc.parent, ISO7816_E_ATR_ERR_IND, 
NULL);
+               osmo_fsm_inst_dispatch(fi->proc.parent, ISO7816_E_ATR_ERR_IND, 
atp->atr);
                break;
-       default:
+       default:
                OSMO_ASSERT(0);
        }
 }
@@ -840,7 +840,7 @@
                                osmo_fsm_inst_dispatch(fi->proc.parent, 
ISO7816_E_ATR_DONE_IND, atp->atr);
                                break;
                        default:
-                               osmo_fsm_inst_dispatch(fi->proc.parent, 
ISO7816_E_ATR_ERR_IND, NULL);
+                               osmo_fsm_inst_dispatch(fi->proc.parent, 
ISO7816_E_ATR_ERR_IND, atp->atr);
                                break;
                }
                break;
@@ -1507,14 +1507,14 @@

 static void tpdu_allstate_action(struct osmo_fsm_inst *fi, uint32_t event, 
void *data)
 {
-       OSMO_ASSERT(fi->fsm == &tpdu_fsm);
+       struct tpdu_fsm_priv *tfp = get_tpdu_fsm_priv(fi);

        switch (event) {
        case ISO7816_E_RX_ERR_IND:
        case ISO7816_E_TX_ERR_IND:
                /* FIXME: handle this in some different way */
                osmo_fsm_inst_state_chg(fi, TPDU_S_DONE, 0, 0);
-               osmo_fsm_inst_dispatch(fi->proc.parent, 
ISO7816_E_TPDU_FAILED_IND, NULL);
+               osmo_fsm_inst_dispatch(fi->proc.parent, 
ISO7816_E_TPDU_FAILED_IND, tfp->tpdu);
                break;
        case ISO7816_E_TPDU_CLEAR_REQ:
                osmo_fsm_inst_state_chg(fi, TPDU_S_INIT, 0, 0);

--
To view, visit https://gerrit.osmocom.org/c/osmo-ccid-firmware/+/40703?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings?usp=email

Gerrit-MessageType: merged
Gerrit-Project: osmo-ccid-firmware
Gerrit-Branch: master
Gerrit-Change-Id: If32484675a0a10f1504477f5eea00c879ec78f1e
Gerrit-Change-Number: 40703
Gerrit-PatchSet: 2
Gerrit-Owner: Hoernchen <ew...@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <lafo...@osmocom.org>
Gerrit-CC: pespin <pes...@sysmocom.de>

Reply via email to