Fix data checks.

Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
This commit is contained in:
Pol Henarejos
2025-05-13 01:04:48 +02:00
parent 58a9d9cf97
commit b62573a6bd
2 changed files with 3 additions and 8 deletions

View File

@@ -127,7 +127,7 @@ int cmd_keypair_gen() {
}
else if (P1(apdu) == 0x81) { //read
file_t *ef = search_by_fid(fid + 3, NULL, SPECIFY_EF);
if (!ef || !ef->data) {
if (!file_has_data(ef)) {
return SW_REFERENCE_NOT_FOUND();
}
res_APDU_size = file_get_size(ef);

View File

@@ -28,12 +28,7 @@ int parse_do(uint16_t *fids, int mode) {
data_len = ((int (*)(const file_t *, int))(ef->data))((const file_t *) ef, mode);
}
else {
if (ef->data) {
data_len = file_get_size(ef);
}
else {
data_len = 0;
}
data_len = file_get_size(ef);
if (mode == 1) {
if (fids[0] > 1 && res_APDU_size > 0) {
if (fids[i + 1] < 0x0100) {
@@ -45,7 +40,7 @@ int parse_do(uint16_t *fids, int mode) {
}
res_APDU_size += format_tlv_len(data_len, res_APDU + res_APDU_size);
}
if (ef->data) {
if (file_has_data(ef)) {
memcpy(res_APDU + res_APDU_size, file_get_data(ef), data_len);
}
res_APDU_size += data_len;