laforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ccid-firmware/+/42157?usp=email )
Change subject: ccid: Fix CCID RDR_to_PC_Parameters (missing bProtocolNum) ......................................................................
ccid: Fix CCID RDR_to_PC_Parameters (missing bProtocolNum)
Our RDR_to_PC_Parameters message was broken, as it was missing the bProtocolNum value after the header. Let's fix that.
Change-Id: I67d5cb876d20b29f4759d5b194606f34b8b966c4 --- M ccid_common/ccid_device.c M ccid_common/ccid_proto.h 2 files changed, 7 insertions(+), 4 deletions(-)
Approvals: lynxis lazus: Looks good to me, approved laforge: Looks good to me, but someone else must approve Jenkins Builder: Verified
diff --git a/ccid_common/ccid_device.c b/ccid_common/ccid_device.c index bf131a9..8a53860 100644 --- a/ccid_common/ccid_device.c +++ b/ccid_common/ccid_device.c @@ -264,11 +264,12 @@ const struct ccid_pars_decoded *dec_par) { struct msgb *msg = ccid_msgb_alloc(); - struct ccid_rdr_to_pc_parameters *par = - (struct ccid_rdr_to_pc_parameters *) msgb_put(msg, sizeof(par->hdr)+sizeof(par->abProtocolData.t0)); + struct ccid_rdr_to_pc_parameters *par = (struct ccid_rdr_to_pc_parameters *)msgb_put( + msg, sizeof(par->hdr) + sizeof(par->bProtocolNum) + sizeof(par->abProtocolData.t0)); uint8_t sts = (cmd_sts & CCID_CMD_STATUS_MASK) | icc_status;
SET_HDR_IN(par, RDR_to_PC_Parameters, slot_nr, seq, sts, err); + par->bProtocolNum = CCID_PROTOCOL_NUM_T0; if (dec_par) { osmo_store32le(sizeof(par->abProtocolData.t0), &par->hdr.hdr.dwLength); encode_ccid_pars_t0(&par->abProtocolData.t0, dec_par); @@ -286,11 +287,12 @@ const struct ccid_pars_decoded *dec_par) { struct msgb *msg = ccid_msgb_alloc(); - struct ccid_rdr_to_pc_parameters *par = - (struct ccid_rdr_to_pc_parameters *) msgb_put(msg, sizeof(par->hdr)+sizeof(par->abProtocolData.t1)); + struct ccid_rdr_to_pc_parameters *par = (struct ccid_rdr_to_pc_parameters *)msgb_put( + msg, sizeof(par->hdr) + sizeof(par->bProtocolNum) + sizeof(par->abProtocolData.t1)); uint8_t sts = (cmd_sts & CCID_CMD_STATUS_MASK) | icc_status;
SET_HDR_IN(par, RDR_to_PC_Parameters, slot_nr, seq, sts, err); + par->bProtocolNum = CCID_PROTOCOL_NUM_T1; if (dec_par) { osmo_store32le(sizeof(par->abProtocolData.t1), &par->hdr.hdr.dwLength); encode_ccid_pars_t1(&par->abProtocolData.t1, dec_par); diff --git a/ccid_common/ccid_proto.h b/ccid_common/ccid_proto.h index e26a051..ac03938 100644 --- a/ccid_common/ccid_proto.h +++ b/ccid_common/ccid_proto.h @@ -333,6 +333,7 @@ /* Section 6.2.3 RDR_to_PC_Parameters */ struct ccid_rdr_to_pc_parameters { struct ccid_header_in hdr; + uint8_t bProtocolNum; union { struct ccid_proto_data_t0 t0; struct ccid_proto_data_t1 t1;