diff --git a/client/src/cmdhfseos.c b/client/src/cmdhfseos.c index ddd2657a1..8021b7375 100644 --- a/client/src/cmdhfseos.c +++ b/client/src/cmdhfseos.c @@ -43,6 +43,7 @@ static uint8_t zeros[16] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; #define MAX_DIVERSIFIER_LEN 16 +#define MAX_OID_LEN 32 static int CmdHelp(const char *Cmd); @@ -849,7 +850,7 @@ static int select_ADF_decrypt(const char *selectADFOID, uint8_t *CRYPTOGRAM_encr // Skip synthesized IV for (int i = iv_size * 2; i < CRYPTOGRAM_decrypted_data_length; i++) { // ADF OID tag - if (CRYPTOGRAM_decrypted_data[i] == 0x06 && CRYPTOGRAM_decrypted_data[i + 1] < 20) { + if (CRYPTOGRAM_decrypted_data[i] == 0x06 && CRYPTOGRAM_decrypted_data[i + 1] <= MAX_OID_LEN) { adf_length = ((CRYPTOGRAM_decrypted_data[i + 1])); diversifier_length = CRYPTOGRAM_decrypted_data[i + adf_length + 3]; if (*diversifier_length_out < diversifier_length) {