[SIGAR-9] Fix possible overflow in solaris sigar_mem_get impl
This commit is contained in:
parent
d03d4a94d2
commit
8a7e53b9a6
|
@ -2,6 +2,8 @@
|
||||||
|
|
||||||
* Port linux impl to ppc64 arch
|
* Port linux impl to ppc64 arch
|
||||||
|
|
||||||
|
* [SIGAR-9] Fix possible overflow in solaris sigar_mem_get impl
|
||||||
|
|
||||||
2006-07-10 Doug MacEachern <dougm@hyperic.com>
|
2006-07-10 Doug MacEachern <dougm@hyperic.com>
|
||||||
|
|
||||||
* [SIGAR-4] Implement native sigar_net_stat_get and use w/ Java
|
* [SIGAR-4] Implement native sigar_net_stat_get and use w/ Java
|
||||||
|
|
|
@ -162,9 +162,6 @@ char *sigar_os_error_string(sigar_t *sigar, int err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#define KPAGE_SHIFT(v) \
|
|
||||||
((v) << sigar->pagesize)
|
|
||||||
|
|
||||||
int sigar_mem_get(sigar_t *sigar, sigar_mem_t *mem)
|
int sigar_mem_get(sigar_t *sigar, sigar_mem_t *mem)
|
||||||
{
|
{
|
||||||
kstat_ctl_t *kc = sigar->kc;
|
kstat_ctl_t *kc = sigar->kc;
|
||||||
|
@ -173,7 +170,8 @@ int sigar_mem_get(sigar_t *sigar, sigar_mem_t *mem)
|
||||||
SIGAR_ZERO(mem);
|
SIGAR_ZERO(mem);
|
||||||
|
|
||||||
/* XXX: is mem hot swappable or can we just do this during open ? */
|
/* XXX: is mem hot swappable or can we just do this during open ? */
|
||||||
mem->total = KPAGE_SHIFT((sigar_uint64_t)sysconf(_SC_PHYS_PAGES));
|
mem->total = sysconf(_SC_PHYS_PAGES);
|
||||||
|
mem->total <<= sigar->pagesize;
|
||||||
|
|
||||||
sigar_mem_calc_ram(sigar, mem);
|
sigar_mem_calc_ram(sigar, mem);
|
||||||
|
|
||||||
|
@ -184,7 +182,8 @@ int sigar_mem_get(sigar_t *sigar, sigar_mem_t *mem)
|
||||||
if ((ksp = sigar->ks.syspages) && kstat_read(kc, ksp, NULL) >= 0) {
|
if ((ksp = sigar->ks.syspages) && kstat_read(kc, ksp, NULL) >= 0) {
|
||||||
sigar_koffsets_init_syspages(sigar, ksp);
|
sigar_koffsets_init_syspages(sigar, ksp);
|
||||||
|
|
||||||
mem->free = KPAGE_SHIFT(kSYSPAGES(KSTAT_SYSPAGES_FREE));
|
mem->free = kSYSPAGES(KSTAT_SYSPAGES_FREE);
|
||||||
|
mem->free <<= sigar->pagesize;
|
||||||
|
|
||||||
mem->used = mem->total - mem->free;
|
mem->used = mem->total - mem->free;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue