diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2010-08-28 15:22:37 +0400 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2010-08-28 15:22:37 +0400 |
commit | 71d8f118da24bb5a31f406e5fba222a324913b05 (patch) | |
tree | 093f51ed610d7333e4a933f68a1ee8900f5438bb /winsup/utils/cygpath.cc | |
parent | 893a8b78fca52a5474fbca9a0b881b622afc5044 (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/cygpath.cc')
-rw-r--r-- | winsup/utils/cygpath.cc | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/winsup/utils/cygpath.cc b/winsup/utils/cygpath.cc index 449c5436e..63606a9df 100644 --- a/winsup/utils/cygpath.cc +++ b/winsup/utils/cygpath.cc @@ -28,6 +28,7 @@ details. */ #include <ddk/winddk.h> #include <ddk/ntifs.h> #include "wide_path.h" +#include "loadlib.h" static const char version[] = "$Revision$"; @@ -452,7 +453,7 @@ get_long_name (const char *filename, DWORD& len) { char *sbuf; wchar_t buf[32768]; - static HINSTANCE k32 = LoadLibrary ("kernel32.dll"); + static HINSTANCE k32 = GetModuleHandleW (L"kernel32.dll"); static DWORD (WINAPI *GetLongPathName) (LPCWSTR, LPWSTR, DWORD) = (DWORD (WINAPI *) (LPCWSTR, LPWSTR, DWORD)) GetProcAddress (k32, "GetLongPathNameW"); if (!GetLongPathName) @@ -610,7 +611,7 @@ do_sysfolders (char option) break; case 'H': - k32 = LoadLibrary ("userenv"); + k32 = LoadLibrary ("userenv.dll"); if (k32) GetProfilesDirectoryAPtrW = (BOOL (*) (LPWSTR, LPDWORD)) GetProcAddress (k32, "GetProfilesDirectoryW"); |