On Mon, Aug 7, 2017 at 6:48 PM, Carlos Palminha <CARLOS.PALMINHA(a)synopsys.com> wrote:
Fixed some nasty unhandled exceptions when loading libraries that don't have .dll extension.
Problem was caused by wrong string size calculation.
Signed-off-by: Carlos Palminha <palminha(a)synopsys.com> --- dlls/ntdll/loader.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c index dd1f74c0fc..8fc464bcd7 100644 --- a/dlls/ntdll/loader.c +++ b/dlls/ntdll/loader.c @@ -2141,7 +2141,7 @@ static NTSTATUS find_dll_file( const WCHAR *load_path, const WCHAR *libname, if (!(ext = strrchrW( libname, '.')) || strchrW( ext, '/' ) || strchrW( ext, '\\')) { if (!(dllname = RtlAllocateHeap( GetProcessHeap(), 0, - (strlenW(libname) * sizeof(WCHAR)) + sizeof(dllW) ))) + (strlenW(libname) * sizeof(WCHAR)) + strlenW(dllW) )))
This doesn't look right. After the change it allocates less memory than before. Notice that strlenW(dllW) == 4 and sizeof(dllW) == 10.
return STATUS_NO_MEMORY; strcpyW( dllname, libname ); strcatW( dllname, dllW ); -- 2.11.0