From 3997eeb5b3d7c059fdeec3531b09af53b3500a1c Mon Sep 17 00:00:00 2001 From: akallabeth Date: Thu, 11 Apr 2024 10:43:14 +0200 Subject: [PATCH] [coverity] 1543227 Readlink used insecurely --- winpr/libwinpr/library/library.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/winpr/libwinpr/library/library.c b/winpr/libwinpr/library/library.c index 307dc209a..0fa1fd1f2 100644 --- a/winpr/libwinpr/library/library.c +++ b/winpr/libwinpr/library/library.c @@ -274,18 +274,17 @@ DWORD GetModuleFileNameA(HMODULE hModule, LPSTR lpFilename, DWORD nSize) if (!hModule) { - char buffer[4096]; + char buffer[4096] = { 0 }; sprintf_s(path, ARRAYSIZE(path), "/proc/%d/exe", getpid()); - status = readlink(path, buffer, sizeof(buffer)); + status = readlink(path, buffer, ARRAYSIZE(buffer) - 1); - if (status < 0) + if ((status < 0) || (status >= ARRAYSIZE(buffer))) { SetLastError(ERROR_INTERNAL_ERROR); return 0; } - buffer[status] = '\0'; - length = strnlen(buffer, sizeof(buffer)); + length = strnlen(buffer, ARRAYSIZE(buffer)); if (length < nSize) {