[PATCH 1/2] secur32: Fix GetComputerObjectNameW for the cases of NULL or insufficient buffer size.

Dmitry Timoshkov dmitry at baikal.ru
Thu Mar 1 02:25:44 CST 2018


Signed-off-by: Dmitry Timoshkov <dmitry at baikal.ru>
---
 dlls/secur32/secur32.c | 28 ++++++++++------------------
 1 file changed, 10 insertions(+), 18 deletions(-)

diff --git a/dlls/secur32/secur32.c b/dlls/secur32/secur32.c
index 4408e7cf83..889883c2bd 100644
--- a/dlls/secur32/secur32.c
+++ b/dlls/secur32/secur32.c
@@ -996,29 +996,21 @@ BOOLEAN WINAPI GetComputerObjectNameW(
                 if (GetComputerNameW(name, &size))
                 {
                     DWORD len = domainInfo->Name.Length + size + 3;
-                    if (lpNameBuffer)
+                    if (lpNameBuffer && *nSize >= len)
                     {
-                        if (*nSize < len)
-                        {
-                            *nSize = len;
-                            SetLastError(ERROR_INSUFFICIENT_BUFFER);
-                            status = FALSE;
-                        }
-                        else
-                        {
-                            WCHAR bs[] = { '\\', 0 };
-                            WCHAR ds[] = { '$', 0 };
-                            lstrcpyW(lpNameBuffer, domainInfo->Name.Buffer);
-                            lstrcatW(lpNameBuffer, bs);
-                            lstrcatW(lpNameBuffer, name);
-                            lstrcatW(lpNameBuffer, ds);
-                            status = TRUE;
-                        }
+                        WCHAR bs[] = { '\\', 0 };
+                        WCHAR ds[] = { '$', 0 };
+                        lstrcpyW(lpNameBuffer, domainInfo->Name.Buffer);
+                        lstrcatW(lpNameBuffer, bs);
+                        lstrcatW(lpNameBuffer, name);
+                        lstrcatW(lpNameBuffer, ds);
+                        status = TRUE;
                     }
                     else	/* just requesting length required */
                     {
                         *nSize = len;
-                        status = TRUE;
+                        SetLastError(ERROR_INSUFFICIENT_BUFFER);
+                        status = FALSE;
                     }
                 }
                 else
-- 
2.16.2




More information about the wine-devel mailing list