From 19e29d6035570ef98f34dadcc8073a7e1e849f7f Mon Sep 17 00:00:00 2001
From: Uwe Bonnes <bon@elektron.ikp.physik.tu-darmstadt.de>
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 );
     }
-- 
GitLab