Alexandre Julliard : kernelbase: Remove trailing dot in GetComputerNameExW() when domain name is empty.

Alexandre Julliard julliard at winehq.org
Sun Jan 5 13:18:20 CST 2020


Module: wine
Branch: master
Commit: b276bda5a21df595973e3ad5552c66a1799f5d3c
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=b276bda5a21df595973e3ad5552c66a1799f5d3c

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Sun Jan  5 17:30:34 2020 +0100

kernelbase: Remove trailing dot in GetComputerNameExW() when domain name is empty.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48293
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/kernelbase/registry.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/dlls/kernelbase/registry.c b/dlls/kernelbase/registry.c
index 72b7711714..137c0efb88 100644
--- a/dlls/kernelbase/registry.c
+++ b/dlls/kernelbase/registry.c
@@ -3146,13 +3146,15 @@ BOOL WINAPI GetComputerNameExW( COMPUTER_NAME_FORMAT type, WCHAR *name, DWORD *l
     case ComputerNameDnsFullyQualified:
     case ComputerNamePhysicalDnsFullyQualified:
     {
-        WCHAR buffer[256];
-        DWORD size = ARRAY_SIZE(buffer);
+        WCHAR *domain, buffer[256];
+        DWORD size = ARRAY_SIZE(buffer) - 1;
 
         if (!GetComputerNameExW( ComputerNameDnsHostname, buffer, &size )) return FALSE;
-        lstrcatW( buffer, L"." );
-        size = ARRAY_SIZE(buffer) - lstrlenW(buffer);
-        if (!GetComputerNameExW( ComputerNameDnsDomain, buffer + lstrlenW(buffer), &size )) return FALSE;
+        domain = buffer + lstrlenW(buffer);
+        *domain++ = '.';
+        size = ARRAY_SIZE(buffer) - (domain - buffer);
+        if (!GetComputerNameExW( ComputerNameDnsDomain, domain, &size )) return FALSE;
+        if (!*domain) domain[-1] = 0;
         size = lstrlenW(buffer);
         if (name && size < *len)
         {




More information about the wine-cvs mailing list