aboutsummaryrefslogtreecommitdiff
path: root/crypto/rand/rand_win.c
diff options
context:
space:
mode:
authorAndy Polyakov <appro@openssl.org>2010-01-19 13:48:18 +0000
committerAndy Polyakov <appro@openssl.org>2010-01-19 13:48:18 +0000
commit7a6e0901ff254fb444d3f5241c9d0eaeea4eaf82 (patch)
tree41f1b744de49d749dbfb9c1dbc54c88bf8865edf /crypto/rand/rand_win.c
parent91fdacb2c34e05f0a31fd3b51b4cb59538157682 (diff)
downloadopenssl-7a6e0901ff254fb444d3f5241c9d0eaeea4eaf82.zip
openssl-7a6e0901ff254fb444d3f5241c9d0eaeea4eaf82.tar.gz
openssl-7a6e0901ff254fb444d3f5241c9d0eaeea4eaf82.tar.bz2
rand_win.c: handle GetTickCount wrap-around.
Diffstat (limited to 'crypto/rand/rand_win.c')
-rw-r--r--crypto/rand/rand_win.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/crypto/rand/rand_win.c b/crypto/rand/rand_win.c
index efe0f89..3fac961 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