about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--include/afl-fuzz.h2
-rw-r--r--include/config.h7
-rw-r--r--include/envs.h1
-rw-r--r--src/afl-fuzz-state.c7
-rw-r--r--src/afl-fuzz-stats.c15
-rw-r--r--src/afl-fuzz.c8
6 files changed, 23 insertions, 17 deletions
diff --git a/include/afl-fuzz.h b/include/afl-fuzz.h
index df7dd644..8ad0ced1 100644
--- a/include/afl-fuzz.h
+++ b/include/afl-fuzz.h
@@ -355,7 +355,7 @@ typedef struct afl_env_vars {
       afl_dumb_forksrv, afl_import_first, afl_custom_mutator_only, afl_no_ui,
       afl_force_ui, afl_i_dont_care_about_missing_crashes, afl_bench_just_one,
       afl_bench_until_crash, afl_debug_child_output, afl_autoresume,
-      afl_cal_fast, afl_cycle_schedules, afl_expand_havoc;
+      afl_cal_fast, afl_cycle_schedules, afl_expand_havoc, afl_statsd;
 
   u8 *afl_tmpdir, *afl_custom_mutator_library, *afl_python_module, *afl_path,
       *afl_hang_tmout, *afl_forksrv_init_tmout, *afl_skip_crashes, *afl_preload,
diff --git a/include/config.h b/include/config.h
index 3d6b0395..405c2712 100644
--- a/include/config.h
+++ b/include/config.h
@@ -41,11 +41,10 @@
 
 #define USE_COLOR
 
-/* Enable sending statistics over a StatsD daemon.
-Server config can be adjusted with AFL_STATSD_HOST and AFL_STATSD_PORT env var.
+/* StatsD config
+   Config can be adjusted via AFL_STATSD_HOST and AFL_STATSD_PORT environment
+   variable.
 */
-
-#define USE_STATSD
 #define STATSD_UPDATE_SEC 1
 #define STATSD_DEFAULT_PORT 8125
 #define STATSD_DEFAULT_HOST "127.0.0.1"
diff --git a/include/envs.h b/include/envs.h
index 16da14cb..51520312 100644
--- a/include/envs.h
+++ b/include/envs.h
@@ -135,6 +135,7 @@ static char *afl_environment_variables[] = {
     "AFL_SKIP_BIN_CHECK",
     "AFL_SKIP_CPUFREQ",
     "AFL_SKIP_CRASHES",
+    "AFL_STATSD",
     "AFL_STATSD_HOST",
     "AFL_STATSD_PORT",
     "AFL_STATSD_TAGS_FLAVOR",
diff --git a/src/afl-fuzz-state.c b/src/afl-fuzz-state.c
index 77b30b5b..a7c7aff9 100644
--- a/src/afl-fuzz-state.c
+++ b/src/afl-fuzz-state.c
@@ -316,6 +316,13 @@ void read_afl_environment(afl_state_t *afl, char **envp) {
             afl->afl_env.afl_cal_fast =
                 get_afl_env(afl_environment_variables[i]) ? 1 : 0;
 
+          } else if (!strncmp(env, "AFL_STATSD",
+
+                              afl_environment_variable_len)) {
+
+            afl->afl_env.afl_statsd =
+                get_afl_env(afl_environment_variables[i]) ? 1 : 0;
+
           } else if (!strncmp(env, "AFL_TMPDIR",
 
                               afl_environment_variable_len)) {
diff --git a/src/afl-fuzz-stats.c b/src/afl-fuzz-stats.c
index 942670b4..0d6c6a66 100644
--- a/src/afl-fuzz-stats.c
+++ b/src/afl-fuzz-stats.c
@@ -423,16 +423,17 @@ void show_stats(afl_state_t *afl) {
 
   }
 
-#ifdef USE_STATSD
-  if (cur_ms - afl->statsd_last_send_ms > STATSD_UPDATE_SEC * 1000) {
+  if (unlikely(afl->afl_env.afl_statsd == 1)) {
 
-    /* reset counter, even if send failed. */
-    afl->statsd_last_send_ms = cur_ms;
-    if (statsd_send_metric(afl)) { WARNF("coundln't send statsd metric."); }
+    if (cur_ms - afl->statsd_last_send_ms > STATSD_UPDATE_SEC * 1000) {
 
-  }
+      /* reset counter, even if send failed. */
+      afl->statsd_last_send_ms = cur_ms;
+      if (statsd_send_metric(afl)) { WARNF("coundln't send statsd metric."); }
 
-#endif
+    }
+
+  }
 
   /* Every now and then, write plot data. */
 
diff --git a/src/afl-fuzz.c b/src/afl-fuzz.c
index c26e53b9..2c2f0ba5 100644
--- a/src/afl-fuzz.c
+++ b/src/afl-fuzz.c
@@ -194,7 +194,8 @@ static void usage(u8 *argv0, int more_help) {
       "AFL_SKIP_BIN_CHECK: skip the check, if the target is an executable\n"
       "AFL_SKIP_CPUFREQ: do not warn about variable cpu clocking\n"
       "AFL_SKIP_CRASHES: during initial dry run do not terminate for crashing inputs\n"
-      "AFL_STATSD_HOST: change default statsd host. (default 127.0.0.1)"
+      "AFL_STATSD: enables StatsD metrics collection"
+      "AFL_STATSD_HOST: change default statsd host (default 127.0.0.1)"
       "AFL_STATSD_PORT: change default statsd port (default: 8125)"
       "AFL_STATSD_TAGS_FLAVOR: change default statsd tags format (default will disable tags)."
       "                        Supported formats are: 'dogstatsd', 'librato', 'signalfx' and 'influxdb'"
@@ -893,10 +894,7 @@ int main(int argc, char **argv_orig, char **envp) {
 
   }
 
-  #ifdef USE_STATSD
-  statsd_setup_format(afl);
-
-  #endif
+  if (unlikely(afl->afl_env.afl_statsd == 1)) { statsd_setup_format(afl); }
 
   if (strchr(argv[optind], '/') == NULL && !afl->unicorn_mode) {