From 19e29d6035570ef98f34dadcc8073a7e1e849f7f Mon Sep 17 00:00:00 2001 From: Uwe Bonnes Date: Mon, 20 Feb 2006 14:08:26 +0100 Subject: [PATCH] ntdll: Remove spaces at end of name in import_dll. --- dlls/ntdll/loader.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c index 00817ffb134..e5a92365b5f 100644 --- a/dlls/ntdll/loader.c +++ b/dlls/ntdll/loader.c @@ -449,7 +449,7 @@ static WINE_MODREF *import_dll( HMODULE module, const IMAGE_IMPORT_DESCRIPTOR *d IMAGE_THUNK_DATA *thunk_list; WCHAR buffer[32]; const char *name = get_rva( module, descr->Name ); - DWORD len = strlen(name) + 1; + DWORD len = strlen(name); PVOID protect_base; SIZE_T protect_size = 0; DWORD protect_old; @@ -460,16 +460,20 @@ static WINE_MODREF *import_dll( HMODULE module, const IMAGE_IMPORT_DESCRIPTOR *d else import_list = thunk_list; - if (len * sizeof(WCHAR) <= sizeof(buffer)) + while (len && name[len-1] == ' ') len--; /* remove trailing spaces */ + + if (len * sizeof(WCHAR) < sizeof(buffer)) { ascii_to_unicode( buffer, name, len ); + buffer[len] = 0; status = load_dll( load_path, buffer, 0, &wmImp ); } else /* need to allocate a larger buffer */ { - WCHAR *ptr = RtlAllocateHeap( GetProcessHeap(), 0, len * sizeof(WCHAR) ); + WCHAR *ptr = RtlAllocateHeap( GetProcessHeap(), 0, (len + 1) * sizeof(WCHAR) ); if (!ptr) return NULL; ascii_to_unicode( ptr, name, len ); + ptr[len] = 0; status = load_dll( load_path, ptr, 0, &wmImp ); RtlFreeHeap( GetProcessHeap(), 0, ptr ); }