Fixed length checks for GetComputerNameA
This commit is contained in:
parent
66ad508b45
commit
68f519ed6c
@ -391,7 +391,7 @@ BOOL GetVersionExW(LPOSVERSIONINFOW lpVersionInformation)
|
||||
BOOL GetComputerNameA(LPSTR lpBuffer, LPDWORD lpnSize)
|
||||
{
|
||||
char* dot;
|
||||
int length;
|
||||
size_t length;
|
||||
char hostname[256];
|
||||
|
||||
if (!lpnSize)
|
||||
@ -403,22 +403,22 @@ BOOL GetComputerNameA(LPSTR lpBuffer, LPDWORD lpnSize)
|
||||
if (gethostname(hostname, sizeof(hostname)) == -1)
|
||||
return FALSE;
|
||||
|
||||
length = (int) strlen(hostname);
|
||||
length = strnlen(hostname, sizeof(hostname));
|
||||
dot = strchr(hostname, '.');
|
||||
|
||||
if (dot)
|
||||
length = (int)(dot - hostname);
|
||||
length = (dot - hostname);
|
||||
|
||||
if ((*lpnSize <= (DWORD) length) || !lpBuffer)
|
||||
{
|
||||
SetLastError(ERROR_BUFFER_OVERFLOW);
|
||||
*lpnSize = length + 1;
|
||||
*lpnSize = (DWORD)(length + 1);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CopyMemory(lpBuffer, hostname, length);
|
||||
lpBuffer[length] = '\0';
|
||||
*lpnSize = length;
|
||||
*lpnSize = (DWORD)length;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user