X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/32874aeac8dacbca26663777b39a79efc5d8dc4b..fc0f17db91f32c7504756e92a411a60d2ef0e264:/noise.c diff --git a/noise.c b/noise.c index 856974bc..1b1d1f5e 100644 --- a/noise.c +++ b/noise.c @@ -3,7 +3,6 @@ * generator. */ -#include #include #include "putty.h" @@ -11,12 +10,6 @@ #include "storage.h" /* - * GetSystemPowerStatus function. - */ -typedef BOOL(WINAPI * gsps_t) (LPSYSTEM_POWER_STATUS); -static gsps_t gsps; - -/* * This function is called once, at PuTTY startup, and will do some * seriously silly things like listing directories and getting disk * free space and a process snapshot. @@ -27,7 +20,6 @@ void noise_get_heavy(void (*func) (void *, int)) HANDLE srch; WIN32_FIND_DATA finddata; char winpath[MAX_PATH + 3]; - HMODULE mod; GetWindowsDirectory(winpath, sizeof(winpath)); strcat(winpath, "\\*"); @@ -40,12 +32,8 @@ void noise_get_heavy(void (*func) (void *, int)) } read_random_seed(func); - - gsps = NULL; - mod = GetModuleHandle("KERNEL32"); - if (mod) { - gsps = (gsps_t) GetProcAddress(mod, "GetSystemPowerStatus"); - } + /* Update the seed immediately, in case another instance uses it. */ + random_save_seed(); } void random_save_seed(void) @@ -53,8 +41,11 @@ void random_save_seed(void) int len; void *data; - random_get_savedata(&data, &len); - write_random_seed(data, len); + if (random_active) { + random_get_savedata(&data, &len); + write_random_seed(data, len); + sfree(data); + } } /* @@ -67,21 +58,12 @@ void noise_get_light(void (*func) (void *, int)) SYSTEMTIME systime; DWORD adjust[2]; BOOL rubbish; - SYSTEM_POWER_STATUS pwrstat; GetSystemTime(&systime); func(&systime, sizeof(systime)); GetSystemTimeAdjustment(&adjust[0], &adjust[1], &rubbish); func(&adjust, sizeof(adjust)); - - /* - * Call GetSystemPowerStatus if present. - */ - if (gsps) { - if (gsps(&pwrstat)) - func(&pwrstat, sizeof(pwrstat)); - } } /* @@ -127,7 +109,7 @@ void noise_regular(void) * counter to the noise pool. It gets the scan code or mouse * position passed in. */ -void noise_ultralight(DWORD data) +void noise_ultralight(unsigned long data) { DWORD wintime; LARGE_INTEGER perftime;