1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-12-16 11:28:14 +00:00

Fix aliasing issue in storage_set_counter().

This commit is contained in:
Andrew Kozlik 2019-02-11 17:46:46 +01:00
parent 5c2765740d
commit f05a2ff9cc

View File

@ -105,8 +105,8 @@
// The length of the ChaCha20 block in bytes.
#define CHACHA20_BLOCK_SIZE 64
// The length of the counter tail in bytes.
#define COUNTER_TAIL_LEN 8
// The length of the counter tail in words.
#define COUNTER_TAIL_WORDS 2
// Values used in the guard key integrity check.
#define GUARD_KEY_MODULUS 6311
@ -979,9 +979,9 @@ secbool storage_set_counter(const uint16_t key, const uint32_t count)
// The count is stored as a 32-bit integer followed by a tail of "1" bits,
// which is used as a tally.
uint8_t value[sizeof(count) + COUNTER_TAIL_LEN];
uint32_t value[1 + COUNTER_TAIL_WORDS];
memset(value, 0xff, sizeof(value));
*((uint32_t*)value) = count;
value[0] = count;
return storage_set(key, value, sizeof(value));
}