diff --git a/storage.c b/storage.c index d37d964664..9cb396cbf5 100644 --- a/storage.c +++ b/storage.c @@ -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)); }