[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC PATCH] libcacard: Fix bug detected with 'smatch'
From: |
Marc-André Lureau |
Subject: |
Re: [Qemu-devel] [RFC PATCH] libcacard: Fix bug detected with 'smatch' |
Date: |
Mon, 14 Sep 2015 14:46:19 +0200 |
Hi
On Mon, Sep 14, 2015 at 2:11 PM, Markus Armbruster <address@hidden> wrote:
> Stumbled over this while throwing out old mail. Copying Marc-André and
> Jeremy.
>
Thanks, the patch is applied in my libcacard "next" branch
(https://github.com/elmarco/libcacard/tree/next).
> Thomas Huth <address@hidden> writes:
>
>> 'smatch' complains about two bugs and one style issue in card_7816.c:
>>
>> libcacard/card_7816.c:273 vcard_apdu_set_length() warn: should this be a
>> bitwise op?
>> libcacard/card_7816.c:295 vcard_apdu_set_length() warn: should this be a
>> bitwise op?
>> libcacard/card_7816.c:661 vcard7816_vm_process_apdu() warn: inconsistent
>> indenting
>>
>> ... and indeed, the code seems to be wrong here. Let's fix this
>> by using a bitwise OR instead of logical OR and by indenting
>> the code with the right level.
>>
>> Signed-off-by: Thomas Huth <address@hidden>
>> ---
>> Please note that this is compile-tested only. I don't have a clue
>> about that libcacard stuff, so if you feel confident in this area,
>> please have a look whether this change really makes sense.
>> ---
>> libcacard/card_7816.c | 6 +++---
>> 1 files changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/libcacard/card_7816.c b/libcacard/card_7816.c
>> index 814fa16..0f7a006 100644
>> --- a/libcacard/card_7816.c
>> +++ b/libcacard/card_7816.c
>> @@ -270,7 +270,7 @@ vcard_apdu_set_length(VCardAPDU *apdu)
>> }
>> /* calculate the first extended value. Could be either Le or Lc
>> */
>> Le = (apdu->a_header->ah_body[0] << 8)
>> - || apdu->a_header->ah_body[1];
>> + | apdu->a_header->ah_body[1];
>> if (L == 3) {
>> /* 2E extended, return data only */
>> /* zero maps to 65536 */
>> @@ -292,7 +292,7 @@ vcard_apdu_set_length(VCardAPDU *apdu)
>> if (L == Le+5) {
>> /* 4E extended, parameters and return data */
>> Le = (apdu->a_data[apdu->a_len-2] << 8)
>> - || apdu->a_data[apdu->a_len-1];
>> + | apdu->a_data[apdu->a_len-1];
>> apdu->a_Le = Le ? Le : 65536;
>> return VCARD7816_STATUS_SUCCESS;
>> }
>> @@ -657,7 +657,7 @@ vcard7816_vm_process_apdu(VCard *card, VCardAPDU *apdu,
>> }
>> }
>> } else {
>> - status = vcard_emul_login(card, apdu->a_body,
>> apdu->a_Lc);
>> + status = vcard_emul_login(card, apdu->a_body, apdu->a_Lc);
>> *response = vcard_make_response(status);
>> }
>> }
--
Marc-André Lureau