diff options
author | ru <ru@FreeBSD.org> | 2006-11-20 16:04:41 +0000 |
---|---|---|
committer | ru <ru@FreeBSD.org> | 2006-11-20 16:04:41 +0000 |
commit | 1ea77e90a7ba6eb03ef9b3fc9b7d651d068676a2 (patch) | |
tree | 4492f0248b0817ad7a3f6e447b1c16b1f57bfac9 /sbin/sysctl | |
parent | b38795bee6d9520e36b7e2161f05eeaeb5a0f719 (diff) | |
download | FreeBSD-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.c | 25 |
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); } |