Dmitry Timoshkov : secur32: Fix GetComputerObjectNameW for the cases of NULL or insufficient buffer size.
Module: wine Branch: master Commit: 652090f598facd514fd55106abf54443adcaf4f5 URL: https://source.winehq.org/git/wine.git/?a=commit;h=652090f598facd514fd55106a... Author: Dmitry Timoshkov <dmitry(a)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(a)baikal.ru> Signed-off-by: Alexandre Julliard <julliard(a)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
participants (1)
-
Alexandre Julliard