diff --git a/loader/pe_resource.c b/loader/pe_resource.c index 3dce489dde4..95af38d9b9b 100644 --- a/loader/pe_resource.c +++ b/loader/pe_resource.c @@ -12,10 +12,12 @@ #include #include + #include "wine/winestring.h" #include "wine/unicode.h" #include "windef.h" #include "winnls.h" +#include "winerror.h" #include "module.h" #include "heap.h" #include "task.h" @@ -24,6 +26,8 @@ #include "neexe.h" #include "debugtools.h" +DEFAULT_DEBUG_CHANNEL(resource); + /********************************************************************** * get_resdir * @@ -35,6 +39,12 @@ static IMAGE_RESOURCE_DIRECTORY* get_resdir( HMODULE hmod ) IMAGE_RESOURCE_DIRECTORY *ret = NULL; if (!hmod) hmod = GetModuleHandleA( NULL ); + else if (!HIWORD(hmod)) + { + FIXME("Enumeration of 16-bit resources is not supported\n"); + SetLastError(ERROR_INVALID_HANDLE); + return NULL; + } dir = &PE_HEADER(hmod)->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_RESOURCE]; if (dir->Size && dir->VirtualAddress) ret = (IMAGE_RESOURCE_DIRECTORY *)((char *)hmod + dir->VirtualAddress);