From: Dāvis Mosāns davispuh@gmail.com
--- dlls/kernelbase/loader.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/dlls/kernelbase/loader.c b/dlls/kernelbase/loader.c index 59b91596f13..7aff6bb9412 100644 --- a/dlls/kernelbase/loader.c +++ b/dlls/kernelbase/loader.c @@ -531,11 +531,25 @@ HMODULE WINAPI DECLSPEC_HOTPATCH LoadLibraryExW( LPCWSTR name, HANDLE file, DWOR UNICODE_STRING str; HMODULE module;
- if (!name) + if (!name || file) { + // file must be NULL SetLastError( ERROR_INVALID_PARAMETER ); return 0; } + + if ((flags & LOAD_LIBRARY_AS_DATAFILE) && (flags & LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE)) { + // Mutually exclusive + SetLastError( ERROR_INVALID_PARAMETER ); + return 0; + } + + if ((flags & LOAD_LIBRARY_SEARCH_DEFAULT_DIRS) && (flags & LOAD_WITH_ALTERED_SEARCH_PATH)) { + // Can't mix default dirs with altered path + SetLastError( ERROR_INVALID_PARAMETER ); + return 0; + } + RtlInitUnicodeString( &str, name ); if (str.Buffer[str.Length/sizeof(WCHAR) - 1] != ' ') return load_library( &str, flags );