rand_win.c: handle GetTickCount wrap-around.
This commit is contained in:
parent
91fdacb2c3
commit
7a6e0901ff
1 changed files with 10 additions and 10 deletions
|
@ -463,7 +463,7 @@ int RAND_poll(void)
|
||||||
PROCESSENTRY32 p;
|
PROCESSENTRY32 p;
|
||||||
THREADENTRY32 t;
|
THREADENTRY32 t;
|
||||||
MODULEENTRY32 m;
|
MODULEENTRY32 m;
|
||||||
DWORD stoptime = 0;
|
DWORD starttime = 0;
|
||||||
|
|
||||||
snap = (CREATETOOLHELP32SNAPSHOT)
|
snap = (CREATETOOLHELP32SNAPSHOT)
|
||||||
GetProcAddress(kernel, "CreateToolhelp32Snapshot");
|
GetProcAddress(kernel, "CreateToolhelp32Snapshot");
|
||||||
|
@ -496,7 +496,7 @@ int RAND_poll(void)
|
||||||
*/
|
*/
|
||||||
ZeroMemory(&hlist, sizeof(HEAPLIST32));
|
ZeroMemory(&hlist, sizeof(HEAPLIST32));
|
||||||
hlist.dwSize = sizeof(HEAPLIST32);
|
hlist.dwSize = sizeof(HEAPLIST32);
|
||||||
if (good) stoptime = GetTickCount() + MAXDELAY;
|
if (good) starttime = GetTickCount();
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
if (heaplist_first(handle, &hlist))
|
if (heaplist_first(handle, &hlist))
|
||||||
{
|
{
|
||||||
|
@ -536,7 +536,7 @@ int RAND_poll(void)
|
||||||
ex_cnt_limit--;
|
ex_cnt_limit--;
|
||||||
}
|
}
|
||||||
} while (heaplist_next(handle, &hlist)
|
} while (heaplist_next(handle, &hlist)
|
||||||
&& GetTickCount() < stoptime
|
&& (GetTickCount()-starttime)<MAXDELAY
|
||||||
&& ex_cnt_limit > 0);
|
&& ex_cnt_limit > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -559,7 +559,7 @@ int RAND_poll(void)
|
||||||
&& --entrycnt > 0);
|
&& --entrycnt > 0);
|
||||||
}
|
}
|
||||||
} while (heaplist_next(handle, &hlist)
|
} while (heaplist_next(handle, &hlist)
|
||||||
&& GetTickCount() < stoptime);
|
&& (GetTickCount()-starttime)<MAXDELAY);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -570,11 +570,11 @@ int RAND_poll(void)
|
||||||
*/
|
*/
|
||||||
p.dwSize = sizeof(PROCESSENTRY32);
|
p.dwSize = sizeof(PROCESSENTRY32);
|
||||||
|
|
||||||
if (good) stoptime = GetTickCount() + MAXDELAY;
|
if (good) starttime = GetTickCount();
|
||||||
if (process_first(handle, &p))
|
if (process_first(handle, &p))
|
||||||
do
|
do
|
||||||
RAND_add(&p, p.dwSize, 9);
|
RAND_add(&p, p.dwSize, 9);
|
||||||
while (process_next(handle, &p) && GetTickCount() < stoptime);
|
while (process_next(handle, &p) && (GetTickCount()-starttime)<MAXDELAY);
|
||||||
|
|
||||||
/* thread walking */
|
/* thread walking */
|
||||||
/* THREADENTRY32 contains 6 fields that will change
|
/* THREADENTRY32 contains 6 fields that will change
|
||||||
|
@ -582,11 +582,11 @@ int RAND_poll(void)
|
||||||
* 1 byte of entropy.
|
* 1 byte of entropy.
|
||||||
*/
|
*/
|
||||||
t.dwSize = sizeof(THREADENTRY32);
|
t.dwSize = sizeof(THREADENTRY32);
|
||||||
if (good) stoptime = GetTickCount() + MAXDELAY;
|
if (good) starttime = GetTickCount();
|
||||||
if (thread_first(handle, &t))
|
if (thread_first(handle, &t))
|
||||||
do
|
do
|
||||||
RAND_add(&t, t.dwSize, 6);
|
RAND_add(&t, t.dwSize, 6);
|
||||||
while (thread_next(handle, &t) && GetTickCount() < stoptime);
|
while (thread_next(handle, &t) && (GetTickCount()-starttime)<MAXDELAY);
|
||||||
|
|
||||||
/* module walking */
|
/* module walking */
|
||||||
/* MODULEENTRY32 contains 9 fields that will change
|
/* MODULEENTRY32 contains 9 fields that will change
|
||||||
|
@ -594,12 +594,12 @@ int RAND_poll(void)
|
||||||
* 1 byte of entropy.
|
* 1 byte of entropy.
|
||||||
*/
|
*/
|
||||||
m.dwSize = sizeof(MODULEENTRY32);
|
m.dwSize = sizeof(MODULEENTRY32);
|
||||||
if (good) stoptime = GetTickCount() + MAXDELAY;
|
if (good) starttime = GetTickCount();
|
||||||
if (module_first(handle, &m))
|
if (module_first(handle, &m))
|
||||||
do
|
do
|
||||||
RAND_add(&m, m.dwSize, 9);
|
RAND_add(&m, m.dwSize, 9);
|
||||||
while (module_next(handle, &m)
|
while (module_next(handle, &m)
|
||||||
&& (GetTickCount() < stoptime));
|
&& (GetTickCount()-starttime)<MAXDELAY);
|
||||||
if (close_snap)
|
if (close_snap)
|
||||||
close_snap(handle);
|
close_snap(handle);
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in a new issue