Module: wine Branch: master Commit: 652090f598facd514fd55106abf54443adcaf4f5 URL: https://source.winehq.org/git/wine.git/?a=commit;h=652090f598facd514fd55106a...
Author: Dmitry Timoshkov dmitry@baikal.ru Date: Thu Mar 1 16:25:44 2018 +0800
secur32: Fix GetComputerObjectNameW for the cases of NULL or insufficient buffer size.
Signed-off-by: Dmitry Timoshkov dmitry@baikal.ru Signed-off-by: Alexandre Julliard julliard@winehq.org
---
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 4408e7c..889883c 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