From 172aea9e727f9d5f1ca91021240197186e626e50 Mon Sep 17 00:00:00 2001 From: stderr64 Date: Mon, 3 Aug 2026 17:17:27 +0300 Subject: Fixed possible buffer overread on hex decoding and made RNG initialization better --- extract_decoded_executable/extractor.c | 2 +- extract_decoded_executable/rng.h | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/extract_decoded_executable/extractor.c b/extract_decoded_executable/extractor.c index 5bda48d..b73787e 100644 --- a/extract_decoded_executable/extractor.c +++ b/extract_decoded_executable/extractor.c @@ -36,7 +36,7 @@ void extract_contained_binary(){ const char *bin_hex = (const char*)BIN_HEX; size_t byte_pos = 0; size_t dec_byte_pos = 0; - char c_byte[2]; + char c_byte[3]; memset( (void*)&c_byte, 0, sizeof(c_byte) ); unsigned char decoded_byte = '\0'; for ( ; dec_byte_pos < hex_byte_count; byte_pos += 2, dec_byte_pos++ ){ diff --git a/extract_decoded_executable/rng.h b/extract_decoded_executable/rng.h index 93fd317..6dbc637 100644 --- a/extract_decoded_executable/rng.h +++ b/extract_decoded_executable/rng.h @@ -14,6 +14,7 @@ struct rngstate{ static struct rngstate global_rng_state; void init_rng(){ + memset( (void*)&global_rng_state, 0, sizeof(struct rngstate) ); uint64_t seed_val = (uint64_t)SEED_VAL; size_t c_idx = 0; for ( ; c_idx < 16; c_idx++ ){ @@ -21,6 +22,7 @@ void init_rng(){ seed_val = seed_val ^ (seed_val >> 16); global_rng_state.state[c_idx] = seed_val; } + global_rng_state.idx = 0; return; } -- cgit v1.3.1-10-gc9f91