[KERNEL32] SetComputerNameExW: Truncate the computer name
authorEric Kohl <eric.kohl@reactos.org>
Sun, 12 Dec 2021 16:40:52 +0000 (17:40 +0100)
committerEric Kohl <eric.kohl@reactos.org>
Sun, 12 Dec 2021 16:40:52 +0000 (17:40 +0100)
This fixes the SetComputerNameExW api test.

dll/win32/kernel32/client/compname.c

index 2b4b335..8b9a549 100644 (file)
@@ -648,6 +648,7 @@ WINAPI
 SetComputerNameExW(COMPUTER_NAME_FORMAT NameType,
                    LPCWSTR lpBuffer)
 {
+    WCHAR szShortName[MAX_COMPUTERNAME_LENGTH + 1];
     BOOL ret1, ret2;
 
     if (!IsValidComputerName(NameType, lpBuffer))
@@ -670,17 +671,19 @@ SetComputerNameExW(COMPUTER_NAME_FORMAT NameType,
                                              L"NV Hostname",
                                              lpBuffer);
 
+            RtlStringCchCopyNW(szShortName, ARRAYSIZE(szShortName), lpBuffer, MAX_COMPUTERNAME_LENGTH);
             ret2 = SetComputerNameToRegistry(L"\\Registry\\Machine\\System\\CurrentControlSet"
                                              L"\\Control\\ComputerName\\ComputerName",
                                              L"ComputerName",
-                                             lpBuffer);
+                                             szShortName);
             return (ret1 && ret2);
 
         case ComputerNamePhysicalNetBIOS:
+            RtlStringCchCopyNW(szShortName, ARRAYSIZE(szShortName), lpBuffer, MAX_COMPUTERNAME_LENGTH);
             return SetComputerNameToRegistry(L"\\Registry\\Machine\\System\\CurrentControlSet"
                                              L"\\Control\\ComputerName\\ComputerName",
                                              L"ComputerName",
-                                             lpBuffer);
+                                             szShortName);
 
         default:
             SetLastError(ERROR_INVALID_PARAMETER);