diff --git a/src/libopensc/card.c b/src/libopensc/card.c index 69e9ce54..d38c6a21 100644 --- a/src/libopensc/card.c +++ b/src/libopensc/card.c @@ -447,7 +447,7 @@ int sc_read_binary(sc_card_t *card, unsigned int idx, int sc_write_binary(sc_card_t *card, unsigned int idx, const u8 *buf, size_t count, unsigned long flags) { - size_t max_lc = card->max_send_size; + size_t max_lc = card->max_send_size > 0 ? card->max_send_size : 255; int r; assert(card != NULL && card->ops != NULL && buf != NULL); @@ -489,7 +489,7 @@ int sc_write_binary(sc_card_t *card, unsigned int idx, int sc_update_binary(sc_card_t *card, unsigned int idx, const u8 *buf, size_t count, unsigned long flags) { - size_t max_lc = card->max_send_size; + size_t max_lc = card->max_send_size > 0 ? card->max_send_size : 255; int r; assert(card != NULL && card->ops != NULL && buf != NULL); diff --git a/src/libopensc/iso7816.c b/src/libopensc/iso7816.c index 0fb5cad6..089d7646 100644 --- a/src/libopensc/iso7816.c +++ b/src/libopensc/iso7816.c @@ -119,7 +119,7 @@ static int iso7816_read_binary(sc_card_t *card, return SC_ERROR_OFFSET_TOO_LARGE; } - assert(count <= card->max_recv_size); + assert(count <= (card->max_recv_size > 0 ? card->max_recv_size : 256)); sc_format_apdu(card, &apdu, SC_APDU_CASE_2_SHORT, 0xB0, (idx >> 8) & 0x7F, idx & 0xFF); apdu.le = count; @@ -247,7 +247,7 @@ static int iso7816_write_binary(sc_card_t *card, sc_apdu_t apdu; int r; - assert(count <= card->max_send_size); + assert(count <= (card->max_send_size > 0 ? card->max_send_size : 255)); if (idx > 0x7fff) { sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "invalid EF offset: 0x%X > 0x7FFF", idx); @@ -274,7 +274,7 @@ static int iso7816_update_binary(sc_card_t *card, sc_apdu_t apdu; int r; - assert(count <= card->max_send_size); + assert(count <= (card->max_send_size > 0 ? card->max_send_size : 255)); if (idx > 0x7fff) { sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "invalid EF offset: 0x%X > 0x7FFF", idx); diff --git a/src/libopensc/muscle.h b/src/libopensc/muscle.h index 260d3098..fa0f62d7 100644 --- a/src/libopensc/muscle.h +++ b/src/libopensc/muscle.h @@ -32,8 +32,8 @@ #define MSC_MAX_PIN_COMMAND_LENGTH ((1 + MSC_MAX_PIN_LENGTH) * 2) /* Currently max size handled by muscle driver is 255 ... */ -#define MSC_MAX_READ (MIN(card->reader->driver->max_recv_size,255)) -#define MSC_MAX_SEND (MIN(card->reader->driver->max_send_size,255)) +#define MSC_MAX_READ (card->max_recv_size > 0 ? card->max_recv_size : 255) +#define MSC_MAX_SEND (card->max_send_size > 0 ? card->max_send_size : 255) int msc_list_objects(sc_card_t* card, u8 next, mscfs_file_t* file); int msc_partial_read_object(sc_card_t *card, msc_id objectId, int offset, u8 *data, size_t dataLength);