From 91ae892f91b4a1d1f4a3595702999528dadf2677 Mon Sep 17 00:00:00 2001 From: akallabeth Date: Mon, 16 Dec 2024 17:11:54 +0100 Subject: [PATCH] [winpr,sysinfo] fix use of GetComputerNameExA The buffer must be large enough to hold MAX_COMPUTERNAME_LENGTH characters, so the buffer needs to be of size MAX_COMPUTERNAME_LENGTH + 1 or larger to hold the '\0' terminated string. --- channels/rdpdr/client/rdpdr_main.c | 2 +- libfreerdp/core/settings.c | 2 +- winpr/libwinpr/sysinfo/test/TestGetComputerName.c | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/channels/rdpdr/client/rdpdr_main.c b/channels/rdpdr/client/rdpdr_main.c index 1681722d3..dd7a13566 100644 --- a/channels/rdpdr/client/rdpdr_main.c +++ b/channels/rdpdr/client/rdpdr_main.c @@ -1165,7 +1165,7 @@ static UINT rdpdr_process_connect(rdpdrPlugin* rdpdr) name = freerdp_settings_get_string(settings, FreeRDP_ComputerName); if (!name) { - DWORD size = sizeof(rdpdr->computerName) - 1; + DWORD size = ARRAYSIZE(rdpdr->computerName); if (!GetComputerNameExA(ComputerNameNetBIOS, rdpdr->computerName, &size)) return ERROR_INTERNAL_ERROR; } diff --git a/libfreerdp/core/settings.c b/libfreerdp/core/settings.c index b397b32b6..ab56db3f9 100644 --- a/libfreerdp/core/settings.c +++ b/libfreerdp/core/settings.c @@ -321,7 +321,7 @@ static void settings_load_hkey_local_machine(rdpSettings* settings) static BOOL settings_init_computer_name(rdpSettings* settings) { CHAR computerName[MAX_COMPUTERNAME_LENGTH + 1] = { 0 }; - DWORD nSize = MAX_COMPUTERNAME_LENGTH; + DWORD nSize = ARRAYSIZE(computerName); if (!GetComputerNameExA(ComputerNameNetBIOS, computerName, &nSize)) return FALSE; diff --git a/winpr/libwinpr/sysinfo/test/TestGetComputerName.c b/winpr/libwinpr/sysinfo/test/TestGetComputerName.c index 0f45faf94..716f46aa2 100644 --- a/winpr/libwinpr/sysinfo/test/TestGetComputerName.c +++ b/winpr/libwinpr/sysinfo/test/TestGetComputerName.c @@ -24,9 +24,9 @@ static BOOL Test_GetComputerName(void) * */ - CHAR netbiosName1[MAX_COMPUTERNAME_LENGTH + 1]; - CHAR netbiosName2[MAX_COMPUTERNAME_LENGTH + 1]; - const DWORD netbiosBufferSize = sizeof(netbiosName1) / sizeof(CHAR); + CHAR netbiosName1[MAX_COMPUTERNAME_LENGTH + 1] = { 0 }; + CHAR netbiosName2[MAX_COMPUTERNAME_LENGTH + 1] = { 0 }; + const size_t netbiosBufferSize = ARRAYSIZE(netbiosName1); DWORD dwSize = 0; DWORD dwNameLength = 0; DWORD dwError = 0;