diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/libs/zbxsysinfo/common/system.c | 20 | ||||
| -rw-r--r-- | src/libs/zbxwin32/perfmon.c | 7 |
2 files changed, 19 insertions, 8 deletions
diff --git a/src/libs/zbxsysinfo/common/system.c b/src/libs/zbxsysinfo/common/system.c index aa8d00d6..8119ed83 100644 --- a/src/libs/zbxsysinfo/common/system.c +++ b/src/libs/zbxsysinfo/common/system.c @@ -54,7 +54,10 @@ int SYSTEM_UNAME(const char *cmd, const char *param, unsigned flags, AGENT_R #if defined(_WINDOWS) DWORD dwSize; char *cpuType, - computerName[MAX_COMPUTERNAME_LENGTH], + + /* NOTE: The buffer size should be large enough to contain MAX_COMPUTERNAME_LENGTH + 1 characters.*/ + computerName[MAX_COMPUTERNAME_LENGTH + 1], + osVersion[256], buffer[MAX_STRING_LEN]; SYSTEM_INFO @@ -62,8 +65,10 @@ int SYSTEM_UNAME(const char *cmd, const char *param, unsigned flags, AGENT_R OSVERSIONINFO versionInfo; - dwSize = MAX_COMPUTERNAME_LENGTH; - GetComputerName(computerName,&dwSize); + dwSize = sizeof(computerName); + + if( 0 == GetComputerName(computerName,&dwSize)) + computerName[0] = '\0'; versionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&versionInfo); @@ -165,11 +170,14 @@ int SYSTEM_HOSTNAME(const char *cmd, const char *param, unsigned flags, AGEN { #if defined(_WINDOWS) DWORD dwSize; - char buffer[MAX_COMPUTERNAME_LENGTH]; + + /* NOTE: The buffer size should be large enough to contain MAX_COMPUTERNAME_LENGTH + 1 characters.*/ + char buffer[MAX_COMPUTERNAME_LENGTH + 1]; - dwSize = MAX_COMPUTERNAME_LENGTH; - GetComputerName(buffer, &dwSize); + dwSize = sizeof(buffer); + if( 0 == GetComputerName(buffer, &dwSize) ) + buffer[0] = '\0'; SET_STR_RESULT(result, strdup(buffer)); diff --git a/src/libs/zbxwin32/perfmon.c b/src/libs/zbxwin32/perfmon.c index 24225f66..2b1ca83d 100644 --- a/src/libs/zbxwin32/perfmon.c +++ b/src/libs/zbxwin32/perfmon.c @@ -32,7 +32,9 @@ char *GetCounterName(DWORD index) { PERFCOUNTER *counterName; DWORD dwSize; - char hostname[MAX_COMPUTERNAME_LENGTH]; + + /* NOTE: The buffer size should be large enough to contain MAX_COMPUTERNAME_LENGTH + 1 characters.*/ + char hostname[MAX_COMPUTERNAME_LENGTH +1 + 2]; /* +2 for '\\' symbols */ counterName = PerfCounterList; while(counterName!=NULL) @@ -50,9 +52,10 @@ char *GetCounterName(DWORD index) hostname[0] = hostname[1] = '\\'; dwSize = sizeof(hostname) - 2; - if(GetComputerName(hostname + 2, &dwSize)==0) + if( 0 == GetComputerName(hostname + 2, &dwSize) ) { zabbix_log(LOG_LEVEL_ERR, "GetComputerName failed: %s", strerror_from_system(GetLastError())); + return "UnknownPerformanceCounter"; } dwSize = sizeof(counterName->name); |
