From 508f8a9fced369f60e6f0c0f62176ea9427fbf42 Mon Sep 17 00:00:00 2001 From: Jakub Jelen Date: Wed, 22 Apr 2020 10:03:32 +0200 Subject: [PATCH] iso7816: Do not recurse if no data was returned Thanks oss-fuzz https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=20399 --- src/libopensc/iso7816.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libopensc/iso7816.c b/src/libopensc/iso7816.c index a8aad766..10311250 100644 --- a/src/libopensc/iso7816.c +++ b/src/libopensc/iso7816.c @@ -161,7 +161,7 @@ iso7816_read_binary(struct sc_card *card, unsigned int idx, u8 *buf, size_t coun LOG_FUNC_RETURN(ctx, apdu.resplen); LOG_TEST_RET(ctx, r, "Check SW error"); - if (apdu.resplen < count) { + if (apdu.resplen > 0 && apdu.resplen < count) { r = iso7816_read_binary(card, idx + apdu.resplen, buf + apdu.resplen, count - apdu.resplen, flags); /* Ignore all but 'corrupted data' errors */ if (r == SC_ERROR_CORRUPTED_DATA)