summaryrefslogtreecommitdiffstats
path: root/crypto/rand/rand_win.c
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2000-09-18 01:48:38 +0000
committerRichard Levitte <levitte@openssl.org>2000-09-18 01:48:38 +0000
commit362f2b69ff57b95481e6641fd3cd79df7efb55a7 (patch)
tree2b2fdc60cb04b939b8cac2766e08d82bde197cfd /crypto/rand/rand_win.c
parent3c184d8180f59ac3a2b9baf72f06f1912fabbc89 (diff)
Jeffrey Altman reminds us to initialize some variables and ercommends the use of LOadLibrary instead of GetModuleHandle
Diffstat (limited to 'crypto/rand/rand_win.c')
-rw-r--r--crypto/rand/rand_win.c28
1 files changed, 19 insertions, 9 deletions
diff --git a/crypto/rand/rand_win.c b/crypto/rand/rand_win.c
index 5ef197341f..5793098a7c 100644
--- a/crypto/rand/rand_win.c
+++ b/crypto/rand/rand_win.c
@@ -184,17 +184,17 @@ int RAND_poll(void)
HWND h;
HMODULE advapi, kernel, user, netapi;
- CRYPTACQUIRECONTEXT acquire;
- CRYPTGENRANDOM gen;
- CRYPTRELEASECONTEXT release;
- NETSTATGET netstatget;
- NETFREE netfree;
+ CRYPTACQUIRECONTEXT acquire = 0;
+ CRYPTGENRANDOM gen = 0;
+ CRYPTRELEASECONTEXT release = 0;
+ NETSTATGET netstatget = 0;
+ NETFREE netfree = 0;
/* load functions dynamically - not available on all systems */
- advapi = GetModuleHandle("ADVAPI32.DLL");
- kernel = GetModuleHandle("KERNEL32.DLL");
- user = GetModuleHandle("USER32.DLL");
- netapi = GetModuleHandle("NETAPI32.DLL");
+ advapi = LoadLibrary("ADVAPI32.DLL");
+ kernel = LoadLibrary("KERNEL32.DLL");
+ user = LoadLibrary("USER32.DLL");
+ netapi = LoadLibrary("NETAPI32.DLL");
if (netapi)
{
@@ -218,6 +218,9 @@ int RAND_poll(void)
}
}
+ if (netapi)
+ FreeLibrary(netapi);
+
/* Read Performance Statistics from NT/2000 registry */
/* The size of the performance data can vary from call to call */
/* so we must guess the size of the buffer to use and increase */
@@ -289,6 +292,9 @@ int RAND_poll(void)
}
}
+ if (advapi)
+ FreeLibrary(advapi);
+
/* timer data */
readtimer();
@@ -347,6 +353,8 @@ int RAND_poll(void)
w = queue(QS_ALLEVENTS);
RAND_add(&w, sizeof(w), 0);
}
+
+ FreeLibrary(user);
}
/* Toolhelp32 snapshot: enumerate processes, threads, modules and heap
@@ -443,6 +451,8 @@ int RAND_poll(void)
CloseHandle(handle);
}
+
+ FreeLibrary(kernel);
}
#ifdef DEBUG