From: Ken Thomases Subject: [PATCH 1/7] kernel32: Check that sysctl() call succeeded before using its output. Message-Id: Date: Sun, 16 Feb 2014 20:43:28 -0600 --- dlls/kernel32/heap.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/dlls/kernel32/heap.c b/dlls/kernel32/heap.c index 51bd235..578cb43 100644 --- a/dlls/kernel32/heap.c +++ b/dlls/kernel32/heap.c @@ -1222,12 +1222,12 @@ BOOL WINAPI GlobalMemoryStatusEx( LPMEMORYSTATUSEX lpmemex ) mib[0] = CTL_HW; mib[1] = HW_PHYSMEM; size_sys = sizeof(val); - sysctl(mib, 2, &val, &size_sys, NULL, 0); - if (val) lpmemex->ullTotalPhys = val; + if (!sysctl(mib, 2, &val, &size_sys, NULL, 0) && size_sys == sizeof(val) && val) + lpmemex->ullTotalPhys = val; mib[1] = HW_USERMEM; size_sys = sizeof(val); - sysctl(mib, 2, &val, &size_sys, NULL, 0); - if (!val) val = lpmemex->ullTotalPhys; + if (sysctl(mib, 2, &val, &size_sys, NULL, 0) || size_sys != sizeof(val) || !val) + val = lpmemex->ullTotalPhys; lpmemex->ullAvailPhys = val; lpmemex->ullTotalPageFile = val; lpmemex->ullAvailPageFile = val;