Skip to content

Commit d95d245

Browse files
[Audit] Fix Safe account
1 parent af1e623 commit d95d245

File tree

2 files changed

+9
-6
lines changed

2 files changed

+9
-6
lines changed

src_features/provide_safe_account/cmd_safe_account.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,10 @@ uint16_t handle_safe_account(uint8_t p1,
5252
sw = APDU_RESPONSE_OK; // No error for P1_SAFE_DESCRIPTOR if SAFE_DESC is NULL
5353
}
5454
break;
55+
default:
56+
PRINTF("Error: Invalid P2 (%u)\n", p2);
57+
sw = APDU_RESPONSE_INVALID_P1_P2;
58+
break;
5559
}
5660

5761
if (sw != APDU_RESPONSE_OK) {

src_features/provide_safe_account/signer_descriptor.c

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ enum {
3737

3838
typedef struct {
3939
signers_descriptor_t *signers;
40-
uint8_t addess_count;
40+
uint8_t address_count;
4141
uint8_t sig_size;
4242
uint8_t *sig;
4343
cx_sha256_t hash_ctx;
@@ -142,11 +142,11 @@ static bool handle_challenge(const s_tlv_data *data, s_signer_ctx *context) {
142142
static bool handle_address(const s_tlv_data *data, s_signer_ctx *context) {
143143
CHECK_FIELD_LENGTH("ADDRESS", data->length, ADDRESS_LENGTH);
144144
CHECK_EMPTY_BUFFER("ADDRESS", data->value, data->length);
145-
if (context->addess_count >= SAFE_DESC->signers_count) {
145+
if (context->address_count >= SAFE_DESC->signers_count) {
146146
PRINTF("Error: Too many addresses in Signer descriptor!\n");
147147
return false;
148148
}
149-
COPY_FIELD(context->signers->data[context->addess_count++].address, data);
149+
COPY_FIELD(context->signers->data[context->address_count++].address, data);
150150
context->rcv_flags |= SET_BIT(BIT_ADDRESS);
151151
return true;
152152
}
@@ -225,7 +225,7 @@ static void print_signer_info(const s_signer_ctx *context) {
225225

226226
PRINTF("****************************************************************************\n");
227227
PRINTF("[SAFE ACCOUNT] - Retrieved Signer Descriptor:\n");
228-
for (i = 0; i < context->addess_count; i++) {
228+
for (i = 0; i < context->address_count; i++) {
229229
PRINTF("[SAFE ACCOUNT] - Address[%d]: %.*h\n",
230230
i,
231231
ADDRESS_LENGTH,
@@ -250,7 +250,7 @@ static bool verify_signer_struct(const s_signer_ctx *context) {
250250
PRINTF("Error: Signature verification failed for Signer descriptor!\n");
251251
return false;
252252
}
253-
if (context->addess_count < SAFE_DESC->signers_count) {
253+
if (context->address_count < SAFE_DESC->signers_count) {
254254
PRINTF("Error: Too few addresses in Signer descriptor!\n");
255255
return false;
256256
}
@@ -347,7 +347,6 @@ bool handle_signer_tlv_payload(const uint8_t *payload, uint16_t size) {
347347
void clear_signer_descriptor(void) {
348348
if (SIGNER_DESC.data != NULL) {
349349
app_mem_free(SIGNER_DESC.data);
350-
SIGNER_DESC.data = NULL;
351350
}
352351
explicit_bzero(&SIGNER_DESC, sizeof(SIGNER_DESC));
353352
}

0 commit comments

Comments
 (0)