diff options
author | Andy Polyakov <appro@openssl.org> | 2010-01-19 13:48:18 +0000 |
---|---|---|
committer | Andy Polyakov <appro@openssl.org> | 2010-01-19 13:48:18 +0000 |
commit | 7a6e0901ff254fb444d3f5241c9d0eaeea4eaf82 (patch) | |
tree | 41f1b744de49d749dbfb9c1dbc54c88bf8865edf /crypto/rand/rand_win.c | |
parent | 91fdacb2c34e05f0a31fd3b51b4cb59538157682 (diff) |
rand_win.c: handle GetTickCount wrap-around.
Diffstat (limited to 'crypto/rand/rand_win.c')
-rw-r--r-- | crypto/rand/rand_win.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/crypto/rand/rand_win.c b/crypto/rand/rand_win.c index efe0f89070..3fac961922 100644 --- a/crypto/rand/rand_win.c +++ b/crypto/rand/rand_win.c @@ -463,7 +463,7 @@ int RAND_poll(void) PROCESSENTRY32 p; THREADENTRY32 t; MODULEENTRY32 m; - DWORD stoptime = 0; + DWORD starttime = 0; snap = (CREATETOOLHELP32SNAPSHOT) GetProcAddress(kernel, "CreateToolhelp32Snapshot"); @@ -496,7 +496,7 @@ int RAND_poll(void) */ ZeroMemory(&hlist, sizeof(HEAPLIST32)); hlist.dwSize = sizeof(HEAPLIST32); - if (good) stoptime = GetTickCount() + MAXDELAY; + if (good) starttime = GetTickCount(); #ifdef _MSC_VER if (heaplist_first(handle, &hlist)) { @@ -536,7 +536,7 @@ int RAND_poll(void) ex_cnt_limit--; } } while (heaplist_next(handle, &hlist) - && GetTickCount() < stoptime + && (GetTickCount()-starttime)<MAXDELAY && ex_cnt_limit > 0); } @@ -559,7 +559,7 @@ int RAND_poll(void) && --entrycnt > 0); } } while (heaplist_next(handle, &hlist) - && GetTickCount() < stoptime); + && (GetTickCount()-starttime)<MAXDELAY); } #endif @@ -570,11 +570,11 @@ int RAND_poll(void) */ p.dwSize = sizeof(PROCESSENTRY32); - if (good) stoptime = GetTickCount() + MAXDELAY; + if (good) starttime = GetTickCount(); if (process_first(handle, &p)) do RAND_add(&p, p.dwSize, 9); - while (process_next(handle, &p) && GetTickCount() < stoptime); + while (process_next(handle, &p) && (GetTickCount()-starttime)<MAXDELAY); /* thread walking */ /* THREADENTRY32 contains 6 fields that will change @@ -582,11 +582,11 @@ int RAND_poll(void) * 1 byte of entropy. */ t.dwSize = sizeof(THREADENTRY32); - if (good) stoptime = GetTickCount() + MAXDELAY; + if (good) starttime = GetTickCount(); if (thread_first(handle, &t)) do RAND_add(&t, t.dwSize, 6); - while (thread_next(handle, &t) && GetTickCount() < stoptime); + while (thread_next(handle, &t) && (GetTickCount()-starttime)<MAXDELAY); /* module walking */ /* MODULEENTRY32 contains 9 fields that will change @@ -594,12 +594,12 @@ int RAND_poll(void) * 1 byte of entropy. */ m.dwSize = sizeof(MODULEENTRY32); - if (good) stoptime = GetTickCount() + MAXDELAY; + if (good) starttime = GetTickCount(); if (module_first(handle, &m)) do RAND_add(&m, m.dwSize, 9); while (module_next(handle, &m) - && (GetTickCount() < stoptime)); + && (GetTickCount()-starttime)<MAXDELAY); if (close_snap) close_snap(handle); else |