From 30f10729462218fd8af9e08a664fe443fbe7f232 Mon Sep 17 00:00:00 2001 From: rain1 Date: Mon, 18 Apr 2016 18:34:08 +0100 Subject: [PATCH] * src/main.cpp: Bug fix - nul terminate the result of readlink after checking for failure. --- src/main.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 3794cd4..5137a0f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -184,9 +184,13 @@ int main(int argc, char **argv) { if (geteuid() != 0) { #ifdef __linux__ char exe_path[PATH_MAX]; - unsigned int caps[5] = {0}; + ssize_t len; + unsigned int caps[5] = {0,0,0,0,0}; + + if ((len = readlink("/proc/self/exe", exe_path, PATH_MAX)) == -1) + forceExit(false, "Failed to locate nethogs binary."); + exe_path[len] = '\0'; - readlink("/proc/self/exe", exe_path, PATH_MAX); getxattr(exe_path, "security.capability", (char *)caps, sizeof(caps)); if ((((caps[1] >> CAP_NET_ADMIN) & 1) != 1) || (((caps[1] >> CAP_NET_RAW) & 1) != 1))