changeset 1773:c3ca130d193a

fuzzing - avoid sha1 for random seed every iteration
author Matt Johnston <matt@ucc.asn.au>
date Sun, 01 Nov 2020 14:01:37 +0800
parents 0cc85b4a4abb
children 833bf9947603
files dbrandom.c
diffstat 1 files changed, 11 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/dbrandom.c	Thu Oct 29 23:00:52 2020 +0800
+++ b/dbrandom.c	Sun Nov 01 14:01:37 2020 +0800
@@ -151,12 +151,17 @@
 
 #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;
 }