Ken Thomases : kernel32: Check that sysctl() call succeeded before using its output.

Alexandre Julliard julliard at winehq.org
Mon Feb 17 13:45:14 CST 2014


Module: wine
Branch: master
Commit: 89a96db01ff5aee1c25cbb8e0590fdd81d6b5614
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=89a96db01ff5aee1c25cbb8e0590fdd81d6b5614

Author: Ken Thomases <ken at codeweavers.com>
Date:   Sun Feb 16 20:43:28 2014 -0600

kernel32: Check that sysctl() call succeeded before using its output.

---

 dlls/kernel32/heap.c |    8 ++++----
 1 file 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;




More information about the wine-cvs mailing list