restore backward compatibility: try READ BINARY in case of a unknown file type

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3039 c6295689-39f2-0310-b995-f0e70906c6a9
This commit is contained in:
nils 2006-10-02 16:49:26 +00:00
parent 4a296307ac
commit e2dea71ad4
1 changed files with 9 additions and 18 deletions

View File

@ -1608,16 +1608,7 @@ int sc_pkcs15_read_file(struct sc_pkcs15_card *p15card,
r = SC_ERROR_OUT_OF_MEMORY; r = SC_ERROR_OUT_OF_MEMORY;
goto fail_unlock; goto fail_unlock;
} }
if (file->ef_structure == SC_FILE_EF_TRANSPARENT) { if (file->ef_structure == SC_FILE_EF_LINEAR_VARIABLE_TLV) {
r = sc_read_binary(p15card->card, offset, data, len, 0);
if (r < 0) {
free(data);
goto fail_unlock;
}
/* sc_read_binary may return less than requested */
len = r;
} else if (file->ef_structure == SC_FILE_EF_LINEAR_VARIABLE_TLV)
{
int i; int i;
size_t l, record_len; size_t l, record_len;
unsigned char *head; unsigned char *head;
@ -1653,14 +1644,14 @@ int sc_pkcs15_read_file(struct sc_pkcs15_card *p15card,
len = head-data; len = head-data;
r = len; r = len;
} else { } else {
sc_error(p15card->card->ctx, r = sc_read_binary(p15card->card, offset, data, len, 0);
"can't read file %s of type %d\n", if (r < 0) {
sc_print_path(&file->path), free(data);
file->ef_structure); goto fail_unlock;
r=-1; }
free(data); /* sc_read_binary may return less than requested */
goto fail_unlock; len = r;
} }
sc_unlock(p15card->card); sc_unlock(p15card->card);
/* Return of release file */ /* Return of release file */