From 563efb1bc9e2f0cfea251ae3307d647c2d32e6f1 Mon Sep 17 00:00:00 2001 From: Yannick Naumann Date: Tue, 19 Nov 2024 12:45:08 +0100 Subject: [PATCH] Fix file writing --- system/main.c | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/system/main.c b/system/main.c index 89af0c1449..75332d7756 100644 --- a/system/main.c +++ b/system/main.c @@ -103,18 +103,20 @@ int main(int argc, char **argv) argc -= 5; unsigned int num_tasks = 5; - int full_input_room = (int) pow(input_size, num_tasks); + int full_input_room = (int)pow(input_size, num_tasks); printf("Full input room: %d\n", full_input_room); unsigned long *deltas = malloc(full_input_room * sizeof(unsigned long)); - if (deltas == NULL) { + if (deltas == NULL) + { fprintf(stderr, "Memory allocation failed\n"); exit(1); } u_int32_t *inputs = malloc(full_input_room * sizeof(u_int32_t)); - if (inputs == NULL) { + if (inputs == NULL) + { fprintf(stderr, "Memory allocation failed\n"); exit(1); - } + } //========= Instrumentation end qemu_init(argc, argv); //========= Instrumentation start @@ -136,6 +138,11 @@ int main(int argc, char **argv) int task_inputs[num_tasks]; + fclose(fopen(output_path, "w")); + + FILE *fptr = fopen(output_path, "a"); + + // input of all tasks combined for (long i = 0; i < full_input_room; i++) { @@ -143,7 +150,7 @@ int main(int argc, char **argv) for (int j = 0; j < num_tasks; j++) { // from the "global input" i, extract the input bits for the task j - task_inputs[j] = (i >> (j * (__builtin_popcount(input_size - 1) ))) & (input_size - 1); + task_inputs[j] = (i >> (j * (__builtin_popcount(input_size - 1)))) & (input_size - 1); printf("Task %d: %d\n", j, task_inputs[j]); } @@ -171,8 +178,6 @@ int main(int argc, char **argv) libafl_qemu_write_reg(cpu, j + 1, register_in_32b); } - - libafl_qemu_set_native_breakpoint(start); vm_start(); @@ -199,17 +204,18 @@ int main(int argc, char **argv) inputs[i] = i; deltas[i] = end_count - start_count; - printf("Delta: %lu\n", deltas[i]); + printf("Delta: %lu\n", deltas[i]); + + fprintf(fptr, "%d", inputs[i]); + for (int j = 0; j < num_tasks; j++) + { + fprintf(fptr, ",%d", task_inputs[j]); + } + fprintf(fptr, ",%lu\n", deltas[i]); } // // Write to serial port // qemu_chr_fe_write(serial_chr, data, length); - FILE *fptr = fopen(output_path, "w"); - - for (int i = 0; i < full_input_room; i++) - { - fprintf(fptr, "%d,%lu\n", inputs[i], deltas[i]); - } fclose(fptr); free(deltas);