Later, Jeffrey changed his mind. Apparently, GetCursorInfo exists but
authorRichard Levitte <levitte@openssl.org>
Fri, 15 Sep 2000 11:33:14 +0000 (11:33 +0000)
committerRichard Levitte <levitte@openssl.org>
Fri, 15 Sep 2000 11:33:14 +0000 (11:33 +0000)
doesn't quite work on WinNT 4 earlier than SP6.  It works fine on
Windows 98 and Windows 2000.

I'm disabling it for now.  What's really needed is some kind of check
to see if GetCursorInfo is safe to call, or alternatively, GetCursor
or GetCursorPos could be used, according to Jeffrey.

crypto/rand/rand_win.c

index 5dc186f78d8116a35f526126ae9db5d645a7cdd8..e9fc37c5671268816438bf94633a812579ed6b86 100644 (file)
@@ -242,9 +242,11 @@ int RAND_poll(void)
                {
                GETCURSORINFO cursor;
                GETFOREGROUNDWINDOW win;
+               GETQUEUESTATUS queue;
 
                win = (GETFOREGROUNDWINDOW) GetProcAddress(user, "GetForegroundWindow");
                cursor = (GETCURSORINFO) GetProcAddress(user, "GetCursorInfo");
+               queue = (GETQUEUESTATUS) GetProcAddress(user, "GetQueueStatus");
 
                if (win)
                {
@@ -253,13 +255,23 @@ int RAND_poll(void)
                        RAND_add(&h, sizeof(h), 0);
                }
 
+#if 0
                if (cursor)
                        {
                        /* cursor position */
                         PCURSORINFO p = (PCURSORINFO) buf;
                         p->cbSize = sizeof(CURSORINFO);
                        if (cursor(p))
-                            RAND_add(p+sizeof(p->cbSize), p->cbSize-sizeof(p->cbSize), 0);
+                               RAND_add(p+sizeof(p->cbSize),
+                                       p->cbSize-sizeof(p->cbSize), 0);
+                       }
+#endif
+
+               if (queue)
+                       {
+                       /* message queue status */
+                       w = queue(QS_ALLEVENTS);
+                       RAND_add(&w, sizeof(w), 0);
                        }
                }