From 652090f598facd514fd55106abf54443adcaf4f5 Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Thu, 1 Mar 2018 16:25:44 +0800 Subject: [PATCH] secur32: Fix GetComputerObjectNameW for the cases of NULL or insufficient buffer size. Signed-off-by: Dmitry Timoshkov Signed-off-by: Alexandre Julliard --- 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 4408e7cf831..889883c2bdb 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.11.4.GIT