summaryrefslogtreecommitdiffstats
path: root/netbsd
diff options
context:
space:
mode:
authorExplorer09 <explorer09@gmail.com>2023-08-03 09:28:47 +0800
committercgzones <cgzones@googlemail.com>2023-08-30 17:00:36 +0200
commit4c08171ebd4395e358ec630306c1268473078046 (patch)
tree28891a8df1bd788649da519ee8b29f1d42fee736 /netbsd
parente783cf9f45425c59ef920a3bb6aff53c5e6ddc0f (diff)
BSD platforms: Reject negative and zero KERN_FSCALE factors
The "fscale" value, retrieved by sysctl() in BSD platforms, is used for computing CPU percentages of the processes. To prevent a division by zero, we should reject a zero "fscale" value. (A negative "fscale" value will not make sense either.) For DragonFlyBSD and FreeBSD, this would fall back to the hard-coded default scale. For NetBSD and OpenBSD, there is no hard-coded default value, so the zero or negative "fscale" is now a fatal error. Signed-off-by: Kang-Che Sung <explorer09@gmail.com>
Diffstat (limited to 'netbsd')
-rw-r--r--netbsd/NetBSDMachine.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/netbsd/NetBSDMachine.c b/netbsd/NetBSDMachine.c
index 9f3b32de..c1e6f7ed 100644
--- a/netbsd/NetBSDMachine.c
+++ b/netbsd/NetBSDMachine.c
@@ -112,7 +112,7 @@ Machine* Machine_new(UsersTable* usersTable, uid_t userId) {
NetBSDMachine_updateCPUcount(this);
size = sizeof(this->fscale);
- if (sysctl(fmib, 2, &this->fscale, &size, NULL, 0) < 0) {
+ if (sysctl(fmib, 2, &this->fscale, &size, NULL, 0) < 0 || this->fscale <= 0) {
CRT_fatalError("fscale sysctl call failed");
}

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