Skip to content

Commit 0a0cea2

Browse files
committed
fetcher: only write 32 bytes to hash output
Current binaries overflow into `wchar_t total_bytes_str[22]`, which is not used anywhere after the overflow, so no harm done thankfully. Signed-off-by: Jason A. Donenfeld <[email protected]>
1 parent da2ad6b commit 0a0cea2

File tree

2 files changed

+3
-3
lines changed

2 files changed

+3
-3
lines changed

installer/fetcher/crypto.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2239,14 +2239,14 @@ void blake2b256_update(struct blake2b256_state *state, const uint8_t *in,
22392239
state->buflen += inlen;
22402240
}
22412241

2242-
void blake2b256_final(struct blake2b256_state *state, uint8_t *out)
2242+
void blake2b256_final(struct blake2b256_state *state, uint8_t out[32])
22432243
{
22442244
state->t[0] += state->buflen;
22452245
state->t[1] += (state->t[0] < state->buflen);
22462246
state->f[0] = (uint64_t)-1;
22472247
memset(state->buf + state->buflen, 0, 128 - state->buflen);
22482248
blake2b256_compress(state, state->buf);
22492249

2250-
for (int i = 0; i < 8; ++i)
2250+
for (int i = 0; i < 4; ++i)
22512251
store_le64(out + i * sizeof(state->h[i]), state->h[i]);
22522252
}

installer/fetcher/crypto.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ struct blake2b256_state {
2121
void blake2b256_init(struct blake2b256_state *state);
2222
void blake2b256_update(struct blake2b256_state *state, const uint8_t *in,
2323
unsigned int inlen);
24-
void blake2b256_final(struct blake2b256_state *state, uint8_t *out);
24+
void blake2b256_final(struct blake2b256_state *state, uint8_t out[32]);
2525

2626
bool ed25519_verify(const uint8_t signature[64], const uint8_t public_key[32],
2727
const void *message, size_t message_size);

0 commit comments

Comments
 (0)