summaryrefslogtreecommitdiffstats
path: root/sbin/sysctl
diff options
context:
space:
mode:
authorru <ru@FreeBSD.org>2006-11-20 16:04:41 +0000
committerru <ru@FreeBSD.org>2006-11-20 16:04:41 +0000
commit1ea77e90a7ba6eb03ef9b3fc9b7d651d068676a2 (patch)
tree4492f0248b0817ad7a3f6e447b1c16b1f57bfac9 /sbin/sysctl
parentb38795bee6d9520e36b7e2161f05eeaeb5a0f719 (diff)
downloadFreeBSD-src-1ea77e90a7ba6eb03ef9b3fc9b7d651d068676a2.zip
FreeBSD-src-1ea77e90a7ba6eb03ef9b3fc9b7d651d068676a2.tar.gz
- Fix types of "struct vmmeter" members so they are unsigned.
- Fix overflow bugs in sysctl(8), systat(1), and vmstat(8) when printing values of "struct vmmeter" in kilobytes as they don't necessarily fit into 32 bits. (Fix sysctl(8) reporting of a total virtual memory; it's in pages too.)
Diffstat (limited to 'sbin/sysctl')
-rw-r--r--sbin/sysctl/sysctl.c25
1 files changed, 13 insertions, 12 deletions
diff --git a/sbin/sysctl/sysctl.c b/sbin/sysctl/sysctl.c
index 6fd8c55..3f1cf4d 100644
--- a/sbin/sysctl/sysctl.c
+++ b/sbin/sysctl/sysctl.c
@@ -54,6 +54,7 @@ static const char rcsid[] =
#include <ctype.h>
#include <err.h>
#include <errno.h>
+#include <inttypes.h>
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
@@ -395,18 +396,18 @@ S_vmtotal(int l2, void *p)
"%hu Sleep: %hu)\n",
v->t_rq, v->t_dw, v->t_pw, v->t_sl);
printf(
- "Virtual Memory:\t\t(Total: %luK, Active %lldK)\n",
- (unsigned long)v->t_vm / 1024,
- (long long)v->t_avm * pageKilo);
- printf("Real Memory:\t\t(Total: %lldK Active %lldK)\n",
- (long long)v->t_rm * pageKilo, (long long)v->t_arm * pageKilo);
- printf("Shared Virtual Memory:\t(Total: %lldK Active: %lldK)\n",
- (long long)v->t_vmshr * pageKilo,
- (long long)v->t_avmshr * pageKilo);
- printf("Shared Real Memory:\t(Total: %lldK Active: %lldK)\n",
- (long long)v->t_rmshr * pageKilo,
- (long long)v->t_armshr * pageKilo);
- printf("Free Memory Pages:\t%lldK\n", (long long)v->t_free * pageKilo);
+ "Virtual Memory:\t\t(Total: %zuK, Active %zuK)\n",
+ (uintmax_t)v->t_vm * pageKilo,
+ (uintmax_t)v->t_avm * pageKilo);
+ printf("Real Memory:\t\t(Total: %zuK Active %zuK)\n",
+ (uintmax_t)v->t_rm * pageKilo, (uintmax_t)v->t_arm * pageKilo);
+ printf("Shared Virtual Memory:\t(Total: %zuK Active: %zuK)\n",
+ (uintmax_t)v->t_vmshr * pageKilo,
+ (uintmax_t)v->t_avmshr * pageKilo);
+ printf("Shared Real Memory:\t(Total: %zuK Active: %zuK)\n",
+ (uintmax_t)v->t_rmshr * pageKilo,
+ (uintmax_t)v->t_armshr * pageKilo);
+ printf("Free Memory Pages:\t%zuK\n", (uintmax_t)v->t_free * pageKilo);
return (0);
}
OpenPOWER on IntegriCloud