summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Göttsche <cgzones@googlemail.com>2021-06-13 11:18:12 +0200
committerBenny Baumann <BenBE@geshi.org>2021-07-18 07:47:16 +0200
commitaf0b67ccd2fb377459c05939ad2d8e0fed217bbf (patch)
treeffdffea0b99d2bdffb5769d521795a3e28deb347
parentfbe3a2155f81e39998d9aecdfe28bd6b94c599d4 (diff)
FreeBSD: skip exe check for kernel thread
Kernel threads do not have an executable and the check can result in garbage values as unprivileged user.
-rw-r--r--freebsd/FreeBSDProcessList.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/freebsd/FreeBSDProcessList.c b/freebsd/FreeBSDProcessList.c
index 407f38aa..439960bc 100644
--- a/freebsd/FreeBSDProcessList.c
+++ b/freebsd/FreeBSDProcessList.c
@@ -380,16 +380,15 @@ static inline void FreeBSDProcessList_scanMemoryInfo(ProcessList* pl) {
}
static void FreeBSDProcessList_updateExe(const struct kinfo_proc* kproc, Process* proc) {
- const int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, kproc->ki_pid };
- char buffer[2048];
- size_t size = sizeof(buffer);
- if (sysctl(mib, 4, buffer, &size, NULL, 0) != 0) {
+ if (Process_isKernelThread(proc)) {
Process_updateExe(proc, NULL);
return;
}
- /* Kernel threads return an empty buffer */
- if (buffer[0] == '\0') {
+ const int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, kproc->ki_pid };
+ char buffer[2048];
+ size_t size = sizeof(buffer);
+ if (sysctl(mib, 4, buffer, &size, NULL, 0) != 0) {
Process_updateExe(proc, NULL);
return;
}

© 2014-2024 Faster IT GmbH | imprint | privacy policy