aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdznux <edznux@gmail.com>2020-10-04 16:11:05 +0200
committerEdznux <edznux@gmail.com>2020-10-04 16:11:05 +0200
commit1a12db1b59e792c7a46e606fba60bdf855d00c29 (patch)
tree499f2184fc7b797ef44ed7774b263c8391cbf749
parent1e0bc2e5c3fff506bc8bdba9ba96530975c730f1 (diff)
downloadafl++-1a12db1b59e792c7a46e606fba60bdf855d00c29.tar.gz
Code format
-rw-r--r--include/afl-fuzz.h1
-rw-r--r--src/afl-fuzz-run.c1
-rw-r--r--src/afl-fuzz-stats.c11
-rw-r--r--src/afl-fuzz-statsd.c256
4 files changed, 136 insertions, 133 deletions
diff --git a/include/afl-fuzz.h b/include/afl-fuzz.h
index 427e1aec..75dfc4e5 100644
--- a/include/afl-fuzz.h
+++ b/include/afl-fuzz.h
@@ -635,6 +635,7 @@ typedef struct afl_state {
u64 stats_last_stats_ms, stats_last_plot_ms, stats_last_ms, stats_last_execs;
// StatsD
u64 statsd_last_send_ms;
+
double stats_avg_exec;
u8 *clean_trace;
diff --git a/src/afl-fuzz-run.c b/src/afl-fuzz-run.c
index 5e74dff3..ee22b0f6 100644
--- a/src/afl-fuzz-run.c
+++ b/src/afl-fuzz-run.c
@@ -903,6 +903,7 @@ common_fuzz_stuff(afl_state_t *afl, u8 *out_buf, u32 len) {
afl->stage_cur + 1 == afl->stage_max) {
show_stats(afl);
+
}
return 0;
diff --git a/src/afl-fuzz-stats.c b/src/afl-fuzz-stats.c
index 2f1e3367..942670b4 100644
--- a/src/afl-fuzz-stats.c
+++ b/src/afl-fuzz-stats.c
@@ -423,15 +423,16 @@ void show_stats(afl_state_t *afl) {
}
- #ifdef USE_STATSD
+#ifdef USE_STATSD
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.");
- }
+ if (statsd_send_metric(afl)) { WARNF("coundln't send statsd metric."); }
+
}
- #endif
+
+#endif
/* Every now and then, write plot data. */
diff --git a/src/afl-fuzz-statsd.c b/src/afl-fuzz-statsd.c
index 298138be..e94f090c 100644
--- a/src/afl-fuzz-statsd.c
+++ b/src/afl-fuzz-statsd.c
@@ -8,149 +8,149 @@
#include <unistd.h>
#include "afl-fuzz.h"
-
#define MAX_STATSD_PACKET_SIZE 4096
#define MAX_TAG_LEN 200
#define METRIC_PREFIX "fuzzing"
struct sockaddr_in server;
-int error = 0;
-int statds_sock = 0;
-
-int statsd_socket_init(char *host, int port){
- int sock;
- if((sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == -1){
- perror("socket");
- exit(1);
- }
+int error = 0;
+int statds_sock = 0;
- memset(&server, 0, sizeof(server));
- server.sin_family = AF_INET;
- server.sin_port = htons(port);
-
- struct addrinfo *result;
- struct addrinfo hints;
+int statsd_socket_init(char *host, int port) {
- memset(&hints, 0, sizeof(struct addrinfo));
- hints.ai_family = AF_INET;
- hints.ai_socktype = SOCK_DGRAM;
+ int sock;
+ if ((sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == -1) {
- if ( (error = getaddrinfo(host, NULL, &hints, &result)) ) {
- perror("getaddrinfo");
- exit(1);
- }
+ FATAL("Failed to create socket");
+
+ }
+
+ memset(&server, 0, sizeof(server));
+ server.sin_family = AF_INET;
+ server.sin_port = htons(port);
+
+ struct addrinfo *result;
+ struct addrinfo hints;
+
+ memset(&hints, 0, sizeof(struct addrinfo));
+ hints.ai_family = AF_INET;
+ hints.ai_socktype = SOCK_DGRAM;
- memcpy(&(server.sin_addr), &((struct sockaddr_in*)result->ai_addr)->sin_addr, sizeof(struct in_addr));
- freeaddrinfo(result);
+ if ((error = getaddrinfo(host, NULL, &hints, &result))) {
+
+ FATAL("Fail to getaddrinfo");
+
+ }
+
+ memcpy(&(server.sin_addr), &((struct sockaddr_in *)result->ai_addr)->sin_addr,
+ sizeof(struct in_addr));
+ freeaddrinfo(result);
+
+ return sock;
- return sock;
}
-int statsd_send_metric(afl_state_t *afl){
-
- char buff[MAX_STATSD_PACKET_SIZE] = {0};
- /* Default port and host.
- Will be overwritten by AFL_STATSD_PORT and AFL_STATSD_HOST environment variable, if they exists.
- */
- u16 port = STATSD_DEFAULT_PORT;
- char* host = STATSD_DEFAULT_HOST;
-
- char* port_env;
- char* host_env;
- if ((port_env = getenv("AFL_STATSD_PORT")) != NULL) {
- port = atoi(port_env);
- }
- if ((host_env = getenv("AFL_STATSD_HOST")) != NULL) {
- host = host_env;
- }
+int statsd_send_metric(afl_state_t *afl) {
- /* statds_sock is a global variable. We set it once in the beginning and reuse the socket.
- If the sendto later fail, we reset it to 0 to be able to recreate it.
- */
- if(!statds_sock){
- statds_sock = statsd_socket_init(host, port);
- if(!statds_sock){
- perror("Cannot create socket");
- return -1;
- }
- }
+ char buff[MAX_STATSD_PACKET_SIZE] = {0};
+ /* Default port and host.
+ Will be overwritten by AFL_STATSD_PORT and AFL_STATSD_HOST environment
+ variable, if they exists.
+ */
+ u16 port = STATSD_DEFAULT_PORT;
+ char *host = STATSD_DEFAULT_HOST;
+
+ char *port_env;
+ char *host_env;
+ if ((port_env = getenv("AFL_STATSD_PORT")) != NULL) { port = atoi(port_env); }
+ if ((host_env = getenv("AFL_STATSD_HOST")) != NULL) { host = host_env; }
+
+ /* statds_sock is a global variable. We set it once in the beginning and reuse
+ the socket. If the sendto later fail, we reset it to 0 to be able to recreate
+ it.
+ */
+ if (!statds_sock) {
+
+ statds_sock = statsd_socket_init(host, port);
+ if (!statds_sock) {
+
+ WARNF("Cannot create socket");
+ return -1;
- statsd_format_metric(afl, buff, MAX_STATSD_PACKET_SIZE);
- if (sendto(statds_sock, buff, strlen(buff), 0, (struct sockaddr *)&server, sizeof(server)) == -1) {
- if(!close(statds_sock)){
- perror("Cannot close socket");
- }
- statds_sock = 0;
- perror("Cannot sendto");
- return -1;
}
- return 0;
+ }
+
+ statsd_format_metric(afl, buff, MAX_STATSD_PACKET_SIZE);
+ if (sendto(statds_sock, buff, strlen(buff), 0, (struct sockaddr *)&server,
+ sizeof(server)) == -1) {
+
+ if (!close(statds_sock)) { perror("Cannot close socket"); }
+ statds_sock = 0;
+ WARNF("Cannot sendto");
+ return -1;
+
+ }
+
+ return 0;
+
+}
+
+int statsd_format_metric(afl_state_t *afl, char *buff, size_t bufflen) {
+
+/* Metric format:
+<some.namespaced.name>:<value>|<type>
+*/
+#ifdef USE_DOGSTATSD_TAGS
+ /* Tags format: DogStatsD
+ <some.namespaced.name>:<value>|<type>|#key:value,key:value,key
+ */
+ char tags[MAX_TAG_LEN * 2] = {0};
+ snprintf(tags, MAX_TAG_LEN * 2, "|#banner:%s,afl_version:%s", afl->use_banner,
+ VERSION);
+#else
+ /* No tags.
+ */
+ char *tags = "";
+#endif
+ /* Sends multiple metrics with one UDP Packet.
+ bufflen will limit to the max safe size.
+ */
+ snprintf(buff, bufflen,
+ METRIC_PREFIX ".cycle_done:%llu|g%s\n" METRIC_PREFIX
+ ".cycles_wo_finds:%llu|g%s\n" METRIC_PREFIX
+ ".execs_done:%llu|g%s\n" METRIC_PREFIX
+ ".execs_per_sec:%0.02f|g%s\n" METRIC_PREFIX
+ ".paths_total:%u|g%s\n" METRIC_PREFIX
+ ".paths_favored:%u|g%s\n" METRIC_PREFIX
+ ".paths_found:%u|g%s\n" METRIC_PREFIX
+ ".paths_imported:%u|g%s\n" METRIC_PREFIX
+ ".max_depth:%u|g%s\n" METRIC_PREFIX
+ ".cur_path:%u|g%s\n" METRIC_PREFIX
+ ".pending_favs:%u|g%s\n" METRIC_PREFIX
+ ".pending_total:%u|g%s\n" METRIC_PREFIX
+ ".variable_paths:%u|g%s\n" METRIC_PREFIX
+ ".unique_crashes:%llu|g%s\n" METRIC_PREFIX
+ ".unique_hangs:%llu|g%s\n" METRIC_PREFIX
+ ".total_crashes:%llu|g%s\n" METRIC_PREFIX
+ ".slowest_exec_ms:%u|g%s\n" METRIC_PREFIX
+ ".edges_found:%u|g%s\n" METRIC_PREFIX
+ ".var_byte_count:%u|g%s\n" METRIC_PREFIX
+ ".havoc_expansion:%u|g%s\n",
+ afl->queue_cycle ? (afl->queue_cycle - 1) : 0, tags,
+ afl->cycles_wo_finds, tags, afl->fsrv.total_execs, tags,
+ afl->fsrv.total_execs /
+ ((double)(get_cur_time() - afl->start_time) / 1000),
+ tags, afl->queued_paths, tags, afl->queued_favored, tags,
+ afl->queued_discovered, tags, afl->queued_imported, tags,
+ afl->max_depth, tags, afl->current_entry, tags, afl->pending_favored,
+ tags, afl->pending_not_fuzzed, tags, afl->queued_variable, tags,
+ afl->unique_crashes, tags, afl->unique_hangs, tags,
+ afl->total_crashes, tags, afl->slowest_exec_ms, tags,
+ count_non_255_bytes(afl, afl->virgin_bits), tags,
+ afl->var_byte_count, tags, afl->expand_havoc, tags);
+
+ return 0;
+
}
-int statsd_format_metric(afl_state_t *afl, char *buff, size_t bufflen){
- /* Metric format:
- <some.namespaced.name>:<value>|<type>
- */
- #ifdef USE_DOGSTATSD_TAGS
- /* Tags format: DogStatsD
- <some.namespaced.name>:<value>|<type>|#key:value,key:value,key
- */
- char tags[MAX_TAG_LEN * 2] = {0};
- snprintf(tags, MAX_TAG_LEN * 2,
- "|#banner:%s,afl_version:%s",
- afl->use_banner,
- VERSION);
- #else
- /* No tags.
- */
- char *tags = "";
- #endif
- /* Sends multiple metrics with one UDP Packet.
- bufflen will limit to the max safe size.
- */
- snprintf(buff, bufflen,
- METRIC_PREFIX".cycle_done:%llu|g%s\n"
- METRIC_PREFIX".cycles_wo_finds:%llu|g%s\n"
- METRIC_PREFIX".execs_done:%llu|g%s\n"
- METRIC_PREFIX".execs_per_sec:%0.02f|g%s\n"
- METRIC_PREFIX".paths_total:%u|g%s\n"
- METRIC_PREFIX".paths_favored:%u|g%s\n"
- METRIC_PREFIX".paths_found:%u|g%s\n"
- METRIC_PREFIX".paths_imported:%u|g%s\n"
- METRIC_PREFIX".max_depth:%u|g%s\n"
- METRIC_PREFIX".cur_path:%u|g%s\n"
- METRIC_PREFIX".pending_favs:%u|g%s\n"
- METRIC_PREFIX".pending_total:%u|g%s\n"
- METRIC_PREFIX".variable_paths:%u|g%s\n"
- METRIC_PREFIX".unique_crashes:%llu|g%s\n"
- METRIC_PREFIX".unique_hangs:%llu|g%s\n"
- METRIC_PREFIX".total_crashes:%llu|g%s\n"
- METRIC_PREFIX".slowest_exec_ms:%u|g%s\n"
- METRIC_PREFIX".edges_found:%u|g%s\n"
- METRIC_PREFIX".var_byte_count:%u|g%s\n"
- METRIC_PREFIX".havoc_expansion:%u|g%s\n",
- afl->queue_cycle ? (afl->queue_cycle - 1) : 0, tags,
- afl->cycles_wo_finds, tags,
- afl->fsrv.total_execs, tags,
- afl->fsrv.total_execs / ((double)(get_cur_time() - afl->start_time) / 1000), tags,
- afl->queued_paths, tags,
- afl->queued_favored, tags,
- afl->queued_discovered, tags,
- afl->queued_imported, tags,
- afl->max_depth, tags,
- afl->current_entry, tags,
- afl->pending_favored, tags,
- afl->pending_not_fuzzed, tags,
- afl->queued_variable, tags,
- afl->unique_crashes, tags,
- afl->unique_hangs, tags,
- afl->total_crashes, tags,
- afl->slowest_exec_ms, tags,
- count_non_255_bytes(afl, afl->virgin_bits), tags,
- afl->var_byte_count, tags,
- afl->expand_havoc, tags
- );
-
- return 0;
-} \ No newline at end of file