Skip to content

Commit f8420a9

Browse files
Cerberus Merlinapaillier-ledger
authored andcommitted
fix: Out-of-bounds read on zero-length int8 EIP-712 fields during display formatting
1 parent d0275cf commit f8420a9

1 file changed

Lines changed: 8 additions & 0 deletions

File tree

src/features/sign_message_eip712/ui_logic.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -477,6 +477,10 @@ static bool ui_712_format_int(const uint8_t *data,
477477
if (!first) {
478478
return false;
479479
}
480+
if (length < 1) {
481+
apdu_response_code = SWO_INCORRECT_DATA;
482+
return false;
483+
}
480484
if (length > field_ptr->type_size) {
481485
apdu_response_code = SWO_INCORRECT_DATA;
482486
return false;
@@ -506,6 +510,10 @@ static bool ui_712_format_int(const uint8_t *data,
506510
snprintf(strings.tmp.tmp, sizeof(strings.tmp.tmp), "%d", value16);
507511
break;
508512
case 8:
513+
if (length != sizeof(int8_t)) {
514+
apdu_response_code = SWO_INCORRECT_DATA;
515+
return false;
516+
}
509517
value8 = (int8_t) data[0];
510518
snprintf(strings.tmp.tmp, sizeof(strings.tmp.tmp), "%d", value8);
511519
break;

0 commit comments

Comments
 (0)