Allow ASN.1 decoding if the file seems incomplete

Some cards (e.g., BELPIC) have a hardcoded file length that does not
match the actual file length (e.g., 65535 bytes), and simply return the
data that is actually on the card when asked.

It is useful to still be able to do an ASN.1 decode in that case.

Signed-off-by: Wouter Verhelst <w@uter.be>
This commit is contained in:
Wouter Verhelst 2015-12-01 16:20:17 +01:00
parent 56d52afb17
commit 5de1ec4518
1 changed files with 8 additions and 3 deletions

View File

@ -1720,12 +1720,17 @@ static int do_asn1(int argc, char **argv)
goto err;
}
if ((size_t)r != len) {
printf("expecting %lu, got only %d bytes.\n", (unsigned long) len, r);
goto err;
printf("WARNING: expecting %lu, got %d bytes.\n", (unsigned long) len, r);
/* some cards return a bogus value for file length. As
* long as the actual length is not higher than the expected
* length, continue */
if(r > len) {
goto err;
}
}
/* asn1 dump */
sc_asn1_print_tags(buf, len);
sc_asn1_print_tags(buf, r);
err = 0;
err: