libcacard: Fix bug detected with 'smatch'
RFC PATCH 1/1 libcacard: Fix bug detected with 'smatch'
'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.
---
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(-)
libcacard/card_7816.c +3 -3
@@ -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); } }
Signature · 1 line
1.7.1
Stumbled over this while throwing out old mail. Copying Marc-André and Jeremy.
Quoted 50 lines · Thomas Huth
'smatch' complains about two bugs and one style issue in
card_7816.c:
libcacard/card_7816.c:273vcard_apdu_set_length()warn: should this be a bitwise op?libcacard/card_7816.c:295vcard_apdu_set_length()warn: should this be a bitwise op?libcacard/card_7816.c:661vcard7816_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 <[email protected]>---
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(-)libcacard/card_7816.c +3
-3@@ -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); } }
Hi
Quoted 3 lines · Markus Armbruster
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).
Quoted 52 lines
Quoted 50 lines · Thomas Huth
'smatch' complains about two bugs and one style issue in
card_7816.c:
libcacard/card_7816.c:273vcard_apdu_set_length()warn: should this be a bitwise op?libcacard/card_7816.c:295vcard_apdu_set_length()warn: should this be a bitwise op?libcacard/card_7816.c:661vcard7816_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 <[email protected]>---
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(-)libcacard/card_7816.c +3
-3@@ -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); } }
Signature · 1 line
Marc-André Lureau
Quoted 9 lines · Marc-André Lureau
Hi
Quoted 3 lines · Markus Armbruster
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).
Copying Thomas at his current e-mail address.