mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-01-10 09:58:01 +00:00
27 lines
666 B
C
27 lines
666 B
C
|
/*
|
||
|
* Wrapper function to load a DLL out of c:\windows\system32 without
|
||
|
* going through the full DLL search path. (Hence no attack is
|
||
|
* possible by placing a substitute DLL earlier on that path.)
|
||
|
*/
|
||
|
|
||
|
#include "putty.h"
|
||
|
|
||
|
HMODULE load_system32_dll(const char *libname)
|
||
|
{
|
||
|
static char *sysdir = NULL;
|
||
|
static size_t sysdirsize = 0;
|
||
|
char *fullpath;
|
||
|
HMODULE ret;
|
||
|
|
||
|
if (!sysdir) {
|
||
|
size_t len;
|
||
|
while ((len = GetSystemDirectory(sysdir, sysdirsize)) >= sysdirsize)
|
||
|
sgrowarray(sysdir, sysdirsize, len);
|
||
|
}
|
||
|
|
||
|
fullpath = dupcat(sysdir, "\\", libname);
|
||
|
ret = LoadLibrary(fullpath);
|
||
|
sfree(fullpath);
|
||
|
return ret;
|
||
|
}
|