qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] Retrieve the correct TD byte when checking an A


From: Marc-André Lureau
Subject: Re: [Qemu-devel] [PATCH] Retrieve the correct TD byte when checking an ATR.
Date: Mon, 19 Jan 2015 17:11:15 +0100

On Mon, Jan 19, 2015 at 3:57 PM, Jeremy White <address@hidden> wrote:
> A physical smartcard with an ATR of
>   3B 95 95 40 FF AE 01 0E 00 00
> was parsed incorrectly.
>
> The '40' should have been the second TD; instead
> the FF is used, incorrectly.

The second TD? There is only one here, T0 = 0x95 & 0xf0 >> 4 = b1001

>
> Signed-off-by: Jeremy White <address@hidden>
> ---
>  hw/usb/ccid-card-passthru.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/hw/usb/ccid-card-passthru.c b/hw/usb/ccid-card-passthru.c
> index 10f1d30..2ae3b81 100644
> --- a/hw/usb/ccid-card-passthru.c
> +++ b/hw/usb/ccid-card-passthru.c
> @@ -168,8 +168,8 @@ static int check_atr(PassthruState *card, uint8_t *data, 
> int len)
>              opt_bytes++;
>          }
>          if (td & 0x8) {
> -            opt_bytes++;
>              td = data[opt_bytes + 2] >> 4;
> +            opt_bytes++;
>          }
>      }
>      if (len < 2 + historical_length + opt_bytes) {
> --
> 1.7.10.4
>
>

That looks correct, opt_bytes before incrementing points to the current TD.

Reviewed-by: Marc-André Lureau <address@hidden>

-- 
Marc-André Lureau



reply via email to

[Prev in Thread] Current Thread [Next in Thread]