From b62573a6bd9c2fe8a8bd4d72ffc4ecf469935c69 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Tue, 13 May 2025 01:04:48 +0200 Subject: [PATCH] Fix data checks. Signed-off-by: Pol Henarejos --- src/openpgp/cmd_keypair_gen.c | 2 +- src/openpgp/do.c | 9 ++------- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/src/openpgp/cmd_keypair_gen.c b/src/openpgp/cmd_keypair_gen.c index 23a91a4..3cc3fea 100644 --- a/src/openpgp/cmd_keypair_gen.c +++ b/src/openpgp/cmd_keypair_gen.c @@ -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); diff --git a/src/openpgp/do.c b/src/openpgp/do.c index 470d952..c90761a 100644 --- a/src/openpgp/do.c +++ b/src/openpgp/do.c @@ -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;