X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/93b581bd031b2270deb7f45440e61a1044fe94da..c85623f918b8a6c639afc15604414f9b113bb20d:/sshrand.c diff --git a/sshrand.c b/sshrand.c index 7c401af4..e2386669 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)); @@ -41,7 +42,7 @@ struct RandPool { static struct RandPool pool; 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 = smalloc(POOLSIZE / 2); random_stir(); - *data = pool.pool + pool.poolpos; + memcpy(buf, pool.pool + pool.poolpos, POOLSIZE / 2); *len = POOLSIZE / 2; + *data = buf; + random_stir(); }