aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorvan Hauser <vh@thc.org>2020-09-04 17:04:42 +0200
committervan Hauser <vh@thc.org>2020-09-04 17:04:42 +0200
commit6c715f1a69f91d4336023a8ba10fb4a7e126f9c2 (patch)
tree2b19a7d912fde4936b4cc9cfe279a8858c0738f0 /src
parentfc19aa96f78cd33ce7d548bad5c7e4d3efa069d1 (diff)
downloadafl++-6c715f1a69f91d4336023a8ba10fb4a7e126f9c2.tar.gz
more changes to fuzzer_setup
Diffstat (limited to 'src')
-rw-r--r--src/afl-common.c33
-rw-r--r--src/afl-fuzz-stats.c70
-rw-r--r--src/afl-fuzz.c3
3 files changed, 73 insertions, 33 deletions
diff --git a/src/afl-common.c b/src/afl-common.c
index 367dec72..d66440aa 100644
--- a/src/afl-common.c
+++ b/src/afl-common.c
@@ -877,3 +877,36 @@ u32 get_map_size(void) {
}
+/* Create a stream file */
+
+FILE *create_ffile(u8 *fn) {
+
+ s32 fd;
+ FILE *f;
+
+ fd = open(fn, O_WRONLY | O_CREAT | O_TRUNC, 0600);
+
+ if (fd < 0) { PFATAL("Unable to create '%s'", fn); }
+
+ f = fdopen(fd, "w");
+
+ if (!f) { PFATAL("fdopen() failed"); }
+
+ return f;
+
+}
+
+/* Create a file */
+
+s32 create_file(u8 *fn) {
+
+ s32 fd;
+
+ fd = open(fn, O_WRONLY | O_CREAT | O_TRUNC, 0600);
+
+ if (fd < 0) { PFATAL("Unable to create '%s'", fn); }
+
+ return fd;
+
+}
+
diff --git a/src/afl-fuzz-stats.c b/src/afl-fuzz-stats.c
index b59a40e4..a84f1c7a 100644
--- a/src/afl-fuzz-stats.c
+++ b/src/afl-fuzz-stats.c
@@ -27,51 +27,57 @@
#include "envs.h"
#include <limits.h>
-/* Open file for writing */
-
-inline FILE *open_file(const char *fn) {
-
- s32 fd;
- FILE *f;
-
- fd = open(fn, O_WRONLY | O_CREAT | O_TRUNC, 0600);
+/* Write fuzzer setup file */
- if (fd < 0) { PFATAL("Unable to create '%s'", fn); }
+void write_setup_file(afl_state_t *afl, int argc, char **argv) {
- f = fdopen(fd, "w");
+ char *val;
+ u8 fn[PATH_MAX];
+ snprintf(fn, PATH_MAX, "%s/fuzzer_setup", afl->out_dir);
+ FILE *f = create_ffile(fn);
- if (!f) { PFATAL("fdopen() failed"); }
+ fprintf(f, "# environment variables:\n");
+ u32 s_afl_env =
+ sizeof(afl_environment_variables) / sizeof(afl_environment_variables[0]) -
+ 1;
+ for (u32 i = 0; i < s_afl_env; i++) {
- return f;
+ if ((val = getenv(afl_environment_variables[i])) != NULL) {
-}
+ fprintf(f, "%s=%s\n", afl_environment_variables[i], val);
-/* Write fuzzer setup file */
+ }
-void write_fuzzer_config_file(afl_state_t *afl) {
+ }
- u8 fn[PATH_MAX];
- FILE *f;
+ fprintf(f, "# command line:\n");
- snprintf(fn, PATH_MAX, "%s/fuzzer_config", afl->out_dir);
- f = open_file(fn);
+ s32 i;
+ size_t j;
+ for (i = 0; i < argc; i++) {
- char *val;
+ if (i) fprintf(f, " ");
+ if (index(argv[i], '\'')) {
- uint32_t s_afl_env =
- sizeof(afl_environment_variables) / sizeof(afl_environment_variables[0]) -
- 1;
- for (uint32_t i = 0; i < s_afl_env; i++) {
+ fprintf(f, "'");
+ for (j = 0; j < strlen(argv[i]); j++)
+ if (argv[i][j] == '\'')
+ fprintf(f, "'\"'\"'");
+ else
+ fprintf(f, "%c", argv[i][j]);
+ fprintf(f, "'");
- if ((val = getenv(afl_environment_variables[i])) != NULL) {
+ } else {
- fprintf(f, "%s=%s\n", afl_environment_variables[i], val);
+ fprintf(f, "'%s'", argv[i]);
}
}
+ fprintf(f, "\n");
fclose(f);
+ (void)(afl_environment_deprecated);
}
@@ -84,13 +90,13 @@ void write_stats_file(afl_state_t *afl, double bitmap_cvg, double stability,
struct rusage rus;
#endif
- unsigned long long int cur_time = get_cur_time();
- u32 t_bytes = count_non_255_bytes(afl, afl->virgin_bits);
- u8 fn[PATH_MAX];
- FILE * f;
+ u64 cur_time = get_cur_time();
+ u32 t_bytes = count_non_255_bytes(afl, afl->virgin_bits);
+ u8 fn[PATH_MAX];
+ FILE *f;
snprintf(fn, PATH_MAX, "%s/fuzzer_stats", afl->out_dir);
- f = open_file(fn);
+ f = create_ffile(fn);
/* Keep last values in case we're called from another context
where exec/sec stats and such are not readily available. */
@@ -209,7 +215,7 @@ void write_stats_file(afl_state_t *afl, double bitmap_cvg, double stability,
if (afl->debug) {
- uint32_t i = 0;
+ u32 i = 0;
fprintf(f, "virgin_bytes :");
for (i = 0; i < afl->fsrv.map_size; i++) {
diff --git a/src/afl-fuzz.c b/src/afl-fuzz.c
index e9ea8b62..c12d5db5 100644
--- a/src/afl-fuzz.c
+++ b/src/afl-fuzz.c
@@ -1128,6 +1128,8 @@ int main(int argc, char **argv_orig, char **envp) {
setup_custom_mutators(afl);
+ write_setup_file(afl, argc, argv);
+
setup_cmdline_file(afl, argv + optind);
read_testcases(afl);
@@ -1274,7 +1276,6 @@ int main(int argc, char **argv_orig, char **envp) {
seek_to = find_start_position(afl);
- write_fuzzer_config_file(afl);
write_stats_file(afl, 0, 0, 0);
maybe_update_plot_file(afl, 0, 0);
save_auto(afl);