Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2010-08-28 15:22:37 +0400
committerCorinna Vinschen <corinna@vinschen.de>2010-08-28 15:22:37 +0400
commit71d8f118da24bb5a31f406e5fba222a324913b05 (patch)
tree093f51ed610d7333e4a933f68a1ee8900f5438bb /winsup/utils/locale.cc
parent893a8b78fca52a5474fbca9a0b881b622afc5044 (diff)
* 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.
Diffstat (limited to 'winsup/utils/locale.cc')
-rw-r--r--winsup/utils/locale.cc7
1 files changed, 4 insertions, 3 deletions
diff --git a/winsup/utils/locale.cc b/winsup/utils/locale.cc
index 8dbfd9b30..d6d1064a7 100644
--- a/winsup/utils/locale.cc
+++ b/winsup/utils/locale.cc
@@ -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";
}