[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 6/8] usb-ccid: Fix chaining fields in CCID USB messa
From: |
Stefan Fritsch |
Subject: |
[Qemu-devel] [PATCH 6/8] usb-ccid: Fix chaining fields in CCID USB messages |
Date: |
Thu, 20 Jul 2017 10:25:21 +0200 |
From: Stefan Fritsch <address@hidden>
Incoming packets should never need chaining (bChainParamter => 0).
If they ever do we will have to fix this later. Zero is still better
than an uninitialized value.
Warn if outgoing packets try to use chaining (wLevelParameter != 0).
As we are doing APDU level exchanges, the driver should not need to
set these bits.
Signed-off-by: Stefan Fritsch <address@hidden>
Signed-off-by: Christian Ehrhardt <address@hidden>
---
hw/usb/dev-smartcard-reader.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/hw/usb/dev-smartcard-reader.c b/hw/usb/dev-smartcard-reader.c
index bc4dc35d3f..974ecad18d 100644
--- a/hw/usb/dev-smartcard-reader.c
+++ b/hw/usb/dev-smartcard-reader.c
@@ -826,6 +826,7 @@ static void ccid_write_data_block(USBCCIDState *s, uint8_t
slot, uint8_t seq,
p->b.hdr.bSeq = seq;
p->b.bStatus = ccid_calc_status(s);
p->b.bError = s->bError;
+ p->bChainParameter = 0;
if (p->b.bError) {
DPRINTF(s, D_VERBOSE, "error %d\n", p->b.bError);
}
@@ -1027,6 +1028,10 @@ static void ccid_on_apdu_from_guest(USBCCIDState *s,
CCID_XferBlock *recv)
len = le32_to_cpu(recv->hdr.dwLength);
DPRINTF(s, 1, "%s: seq %d, len %d\n", __func__,
recv->hdr.bSeq, len);
+ if (le16_to_cpu(recv->wLevelParameter)) {
+ DPRINTF(s, D_WARN, "Unsupported non-zero level Parameter %x\n",
+ __func__, le16_to_cpu(recv->wLevelParameter));
+ }
ccid_add_pending_answer(s, (CCID_Header *)recv);
if (s->card && len <= BULK_OUT_DATA_SIZE) {
ccid_card_apdu_from_guest(s->card, recv->abData, len);
--
2.11.0
- [Qemu-devel] [PATCH 0/8] usb-ccid: Misc fixes and T=1 support, Stefan Fritsch, 2017/07/20
- [Qemu-devel] [PATCH 1/8] usb-ccid: Add support to dump all USB packets, Stefan Fritsch, 2017/07/20
- [Qemu-devel] [PATCH 2/8] usb-ccid: Fix USB packet generation for 64-Bytes sized packets., Stefan Fritsch, 2017/07/20
- [Qemu-devel] [PATCH 4/8] usb-ccid: Fix ATR parsing, Stefan Fritsch, 2017/07/20
- [Qemu-devel] [PATCH 6/8] usb-ccid: Fix chaining fields in CCID USB messages,
Stefan Fritsch <=
- [Qemu-devel] [PATCH 5/8] usb-ccid: Fix USB descriptor, Stefan Fritsch, 2017/07/20
- [Qemu-devel] [PATCH 7/8] usb-ccid: Increase ccid max APDU size, Stefan Fritsch, 2017/07/20
- [Qemu-devel] [PATCH 3/8] usb-ccid: Set protocol parameters based on card ATR, Stefan Fritsch, 2017/07/20
- [Qemu-devel] [PATCH 8/8] usb-ccid: Reduce logging at level WARN, Stefan Fritsch, 2017/07/20
- Re: [Qemu-devel] [PATCH 0/8] usb-ccid: Misc fixes and T=1 support, no-reply, 2017/07/20