Handle the errors from sysconf() call in isc_meminfo_totalphys()

isc_meminfo_totalphys() would return invalid memory size when sysconf()
call would fail, because ((size_t)-1 * -1) is very large number.
This commit is contained in:
Ondřej Surý 2020-09-17 14:37:24 +02:00
parent 08dd2838a6
commit 79ca724d46

View file

@ -35,7 +35,14 @@ isc_meminfo_totalphys(void) {
#endif /* if defined(CTL_HW) && (defined(HW_PHYSMEM64) || defined(HW_MEMSIZE)) \
* */
#if defined(_SC_PHYS_PAGES) && defined(_SC_PAGESIZE)
return ((size_t)(sysconf(_SC_PHYS_PAGES) * sysconf(_SC_PAGESIZE)));
long pages = sysconf(_SC_PHYS_PAGES);
long pagesize = sysconf(_SC_PAGESIZE);
if (pages == -1 || pagesize == -1) {
return (0);
}
return ((size_t)pages * pagesize);
#endif /* if defined(_SC_PHYS_PAGES) && defined(_SC_PAGESIZE) */
return (0);
}