X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/32874aeac8dacbca26663777b39a79efc5d8dc4b..9ec95c23db58dac88a48fae594ea978c148d1c61:/sshrand.c diff --git a/sshrand.c b/sshrand.c index 3014da4f..524bbd43 100644 --- a/sshrand.c +++ b/sshrand.c @@ -2,6 +2,7 @@ * cryptographic random number generator for PuTTY's ssh client */ +#include "putty.h" #include "ssh.h" void noise_get_heavy(void (*func) (void *, int)); @@ -39,9 +40,9 @@ struct RandPool { }; static struct RandPool pool; -static int random_active = 0; +int random_active = 0; -void random_stir(void) +static void random_stir(void) { word32 block[HASHINPUT / sizeof(word32)]; word32 digest[HASHSIZE / sizeof(word32)]; @@ -201,7 +202,10 @@ int random_byte(void) void random_get_savedata(void **data, int *len) { + void *buf = snewn(POOLSIZE / 2, char); random_stir(); - *data = pool.pool + pool.poolpos; + memcpy(buf, pool.pool + pool.poolpos, POOLSIZE / 2); *len = POOLSIZE / 2; + *data = buf; + random_stir(); }