From: Markus Armbruster Date: Fri, 23 May 2014 11:24:35 +0000 (+0200) Subject: libcacard/vreader: Drop broken recovery from failed assertion X-Git-Tag: v2.1.0-rc0~105^2~8 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fa5912a17b51b807c4ec78a4aa914891c7770781;p=thirdparty%2Fqemu.git libcacard/vreader: Drop broken recovery from failed assertion We suppress some code when we got unexpected status and assertion checking is off: assert(card_status == VCARD_DONE); if (card_status == VCARD_DONE) { int size = MIN(*receive_buf_len, response->b_total_len); memcpy(receive_buf, response->b_data, size); *receive_buf_len = size; } Such "recovery" is of dubious value even when it works. This one doesn't: it fails to assign to receive_buf[] and *receive_buf_len, which the callers expect. Make the code unconditional. Signed-off-by: Markus Armbruster Reviewed-by: Alon Levy Signed-off-by: Michael Tokarev --- diff --git a/libcacard/vreader.c b/libcacard/vreader.c index 9304a2824d5..93b01c8601e 100644 --- a/libcacard/vreader.c +++ b/libcacard/vreader.c @@ -284,11 +284,9 @@ vreader_xfr_bytes(VReader *reader, } } assert(card_status == VCARD_DONE); - if (card_status == VCARD_DONE) { - int size = MIN(*receive_buf_len, response->b_total_len); - memcpy(receive_buf, response->b_data, size); - *receive_buf_len = size; - } + int size = MIN(*receive_buf_len, response->b_total_len); + memcpy(receive_buf, response->b_data, size); + *receive_buf_len = size; vcard_response_delete(response); vcard_apdu_delete(apdu); vcard_free(card); /* free our reference */