summaryrefslogtreecommitdiffhomepage
path: root/dbrandom.c
diff options
context:
space:
mode:
Diffstat (limited to 'dbrandom.c')
-rw-r--r--dbrandom.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/dbrandom.c b/dbrandom.c
index faada2a..7aaa42b 100644
--- a/dbrandom.c
+++ b/dbrandom.c
@@ -151,12 +151,17 @@ static void write_urandom()
#if DROPBEAR_FUZZ
void fuzz_seed(const unsigned char* dat, unsigned int len) {
- hash_state hs;
- sha1_init(&hs);
- sha1_process(&hs, "fuzzfuzzfuzz", strlen("fuzzfuzzfuzz"));
- sha1_process(&hs, dat, len);
- sha1_done(&hs, hashpool);
-
+ static unsigned char keep_pool[SHA1_HASH_SIZE];
+ static int once = 0;
+ if (!once) {
+ once = 1;
+ hash_state hs;
+ sha1_init(&hs);
+ sha1_process(&hs, "fuzzfuzzfuzz", strlen("fuzzfuzzfuzz"));
+ sha1_process(&hs, dat, len);
+ sha1_done(&hs, keep_pool);
+ }
+ memcpy(hashpool, keep_pool, sizeof(keep_pool));
counter = 0;
donerandinit = 1;
}