summaryrefslogtreecommitdiffstats
path: root/winpr/libwinpr/library/library.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--winpr/libwinpr/library/library.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/winpr/libwinpr/library/library.c b/winpr/libwinpr/library/library.c
index 307dc20..0fa1fd1 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)
{