ChangeSet ID: 21553 CVSROOT: /opt/cvs-commit Module name: wine Changes by: julliard@winehq.org 2005/11/29 10:42:01
Modified files: dlls/ntdll : loader.c
Log message: Check for a valid module before attempting to read the export directory in LdrGetProcedureAddress.
Patch: http://cvs.winehq.org/patch.py?id=21553
Old revision New revision Changes Path 1.109 1.110 +4 -7 wine/dlls/ntdll/loader.c
Index: wine/dlls/ntdll/loader.c diff -u -p wine/dlls/ntdll/loader.c:1.109 wine/dlls/ntdll/loader.c:1.110 --- wine/dlls/ntdll/loader.c:1.109 29 Nov 2005 16:42: 1 -0000 +++ wine/dlls/ntdll/loader.c 29 Nov 2005 16:42: 1 -0000 @@ -1181,8 +1181,10 @@ NTSTATUS WINAPI LdrGetProcedureAddress(H
RtlEnterCriticalSection( &loader_section );
- if ((exports = RtlImageDirectoryEntryToData( module, TRUE, - IMAGE_DIRECTORY_ENTRY_EXPORT, &exp_size ))) + /* check if the module itself is invalid to return the proper error */ + if (!get_modref( module )) ret = STATUS_DLL_NOT_FOUND; + else if ((exports = RtlImageDirectoryEntryToData( module, TRUE, + IMAGE_DIRECTORY_ENTRY_EXPORT, &exp_size ))) { void *proc = name ? find_named_export( module, exports, exp_size, name->Buffer, -1 ) : find_ordinal_export( module, exports, exp_size, ord - exports->Base ); @@ -1192,11 +1194,6 @@ NTSTATUS WINAPI LdrGetProcedureAddress(H ret = STATUS_SUCCESS; } } - else - { - /* check if the module itself is invalid to return the proper error */ - if (!get_modref( module )) ret = STATUS_DLL_NOT_FOUND; - }
RtlLeaveCriticalSection( &loader_section ); return ret;