diff --git a/src/libopensc/pkcs15.c b/src/libopensc/pkcs15.c index ebf50ca9..daa59f11 100644 --- a/src/libopensc/pkcs15.c +++ b/src/libopensc/pkcs15.c @@ -564,7 +564,10 @@ int sc_pkcs15_bind(struct sc_card *card, err = sc_select_file(card, &tmppath, &p15card->file_tokeninfo); if (err) goto error; - err = sc_read_binary(card, 0, buf, p15card->file_tokeninfo->size, 0); + + if ((len = p15card->file_tokeninfo->size) > sizeof(buf)) + len = sizeof(buf); + err = sc_read_binary(card, 0, buf, len, 0); if (err < 0) goto error; if (err <= 2) {