summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstderr64 <stderr64@null.net>2026-08-03 17:17:27 +0300
committerstderr64 <stderr64@null.net>2026-08-03 17:17:27 +0300
commit172aea9e727f9d5f1ca91021240197186e626e50 (patch)
tree5595f3fe3bb211218b1793599eedcb14d538560a
parent93bf2805ba66b628d0187637c85f86f2ae7eb4a1 (diff)
downloadexperiments-master.tar.gz
experiments-master.tar.zst
Fixed possible buffer overread on hex decoding and made RNG initialization better HEAD master
-rw-r--r--extract_decoded_executable/extractor.c2
-rw-r--r--extract_decoded_executable/rng.h2
2 files changed, 3 insertions, 1 deletions
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;
}