* loadlib.h: New header implementing safe LoadLibrary calls.

Include throughout files using LoadLibrary function.
	* cygcheck.cc (dump_sysinfo): Retrieve kernel32.dll handle via
	GetModuleHandle, rather than using LoadLibrary.
	* cygpath.cc (get_long_name): Ditto.
	(do_sysfolders): Append .dll suffix in LoadLibrary call.
	* ldh.cc (WinMain): Use LoadLibraryExW with DONT_RESOLVE_DLL_REFERENCES
	to avoid loading malicious library code.
	* locale.cc (print_locale_with_codeset): Change way to retrieve
	kernel32.dll path.
This commit is contained in:
Corinna Vinschen
2010-08-28 11:22:37 +00:00
parent 893a8b78fc
commit 71d8f118da
13 changed files with 95 additions and 15 deletions

View File

@@ -126,9 +126,10 @@ print_locale_with_codeset (int verbose, loc_t *locale, bool utf8,
if (!sysroot)
{
char sysbuf[PATH_MAX];
stpcpy (stpcpy (sysbuf, getenv ("SYSTEMROOT")),
"\\system32\\kernel32.dll");
sysroot = (const char *) cygwin_create_path (CCP_WIN_A_TO_POSIX, sysbuf);
HMODULE k32 = GetModuleHandleW (L"kernel32.dll");
if (GetModuleFileName (k32, sysbuf, PATH_MAX))
sysroot = (const char *) cygwin_create_path (CCP_WIN_A_TO_POSIX,
sysbuf);
if (!sysroot)
sysroot = "kernel32.dll";
}