about summary refs log tree commit diff
diff options
context:
space:
mode:
authorDavid Carlier <devnexen@gmail.com>2019-09-18 22:04:16 +0100
committerDavid Carlier <devnexen@gmail.com>2019-09-18 22:04:16 +0100
commit48e6e3ac458a6bfbe8db2a3603945e3091a63f33 (patch)
tree4daca87751d6966f3878be565dc911155aa95fdb
parent74a984d75f59358d07c8816e4a1329108ca1fd41 (diff)
downloadafl++-48e6e3ac458a6bfbe8db2a3603945e3091a63f33.tar.gz
Checking CPU scaling on MacOS
Checking optimal cpu performance or ignore if the AFL_SKIP_CPUFREQ
env is set.
-rw-r--r--src/afl-fuzz-init.c34
1 files changed, 32 insertions, 2 deletions
diff --git a/src/afl-fuzz-init.c b/src/afl-fuzz-init.c
index e791fdde..4908626a 100644
--- a/src/afl-fuzz-init.c
+++ b/src/afl-fuzz-init.c
@@ -1479,9 +1479,39 @@ void check_cpu_governor(void) {
        "drop.\n",
        min / 1024, max / 1024);
 
-  FATAL("Suboptimal CPU scaling governor");
-#endif
+#else
+  u64   min = 0, max = 0;
+  size_t mlen = sizeof(min);
+  if (getenv("AFL_SKIP_CPUFREQ")) return;
+
+  ACTF("Checking CPU scaling governor...");
 
+  if (sysctlbyname("hw.cpufrequency_min", &min, &mlen, NULL, 0) == -1) {
+
+    WARNF("Could not check CPU min frequency");
+    return;
+
+  }
+
+  if (sysctlbyname("hw.cpufrequency_max", &max, &mlen, NULL, 0) == -1) {
+
+    WARNF("Could not check CPU max frequency");
+    return;
+
+  }
+
+  if (min == max) return;
+
+  SAYF("\n" cLRD "[-] " cRST
+       "Whoops, your system uses on-demand CPU frequency scaling, adjusted\n"
+       "    between %llu and %llu MHz.\n"
+       "    If you don't want to check those settings, set "
+       "AFL_SKIP_CPUFREQ\n"
+       "    to make afl-fuzz skip this check - but expect some performance "
+       "drop.\n",
+       min / 1024, max / 1024);
+#endif
+  FATAL("Suboptimal CPU scaling governor");
 }
 
 /* Count the number of logical CPU cores. */