oops, make EVP ctr mode work again
[oweals/openssl.git] / crypto / rand / rand_win.c
index efe0f8907059d8a4bde8a4559226fe6a26dd5776..5198351cf34ea99b562c146ad040eb9f7215ff69 100644 (file)
@@ -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))
                                {
@@ -527,6 +527,7 @@ int RAND_poll(void)
                                                        RAND_add(&hentry,
                                                                hentry.dwSize, 5);
                                                while (heap_next(&hentry)
+                                               && (!good || (GetTickCount()-starttime)<MAXDELAY)
                                                        && --entrycnt > 0);
                                                }
                                                }
@@ -536,7 +537,7 @@ int RAND_poll(void)
                                                        ex_cnt_limit--;
                                                }
                                        } while (heaplist_next(handle, &hlist) 
-                                               && GetTickCount() < stoptime 
+                                               && (!good || (GetTickCount()-starttime)<MAXDELAY)
                                                && ex_cnt_limit > 0);
                                }
 
@@ -559,7 +560,7 @@ int RAND_poll(void)
                                                        && --entrycnt > 0);
                                                }
                                        } while (heaplist_next(handle, &hlist) 
-                                               && GetTickCount() < stoptime);
+                                               && (!good || (GetTickCount()-starttime)<MAXDELAY));
                                }
 #endif
 
@@ -570,11 +571,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) && (!good || (GetTickCount()-starttime)<MAXDELAY));
 
                        /* thread walking */
                         /* THREADENTRY32 contains 6 fields that will change
@@ -582,11 +583,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) && (!good || (GetTickCount()-starttime)<MAXDELAY));
 
                        /* module walking */
                         /* MODULEENTRY32 contains 9 fields that will change
@@ -594,12 +595,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));
+                                               && (!good || (GetTickCount()-starttime)<MAXDELAY));
                        if (close_snap)
                                close_snap(handle);
                        else