From 6732e5ef2fde4adc7db65880ff866111f1d1cbc8 Mon Sep 17 00:00:00 2001 From: sudden6 Date: Fri, 2 Aug 2019 00:18:58 +0200 Subject: Add basic test adapter for AFL --- testing/afl_toxsave.c | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 testing/afl_toxsave.c (limited to 'testing/afl_toxsave.c') diff --git a/testing/afl_toxsave.c b/testing/afl_toxsave.c new file mode 100644 index 00000000..ddfa569f --- /dev/null +++ b/testing/afl_toxsave.c @@ -0,0 +1,54 @@ +#include +#include + +#include "../toxcore/tox.h" + +int main(int argc, char **argv) +{ + if (argc != 2) { + return -1; + } + + // determine file size + FILE *fileptr = fopen(argv[1], "rb"); + fseek(fileptr, 0, SEEK_END); + long filelen = ftell(fileptr); + rewind(fileptr); + + // read file into buffer + uint8_t *buffer = (uint8_t *)malloc(filelen * sizeof(uint8_t)); + size_t bytes_read = fread(buffer, filelen, 1, fileptr); + + if (bytes_read != filelen) { + free(buffer); + return -1; + } + + fclose(fileptr); + + Tox_Err_Options_New error_options; + + struct Tox_Options *tox_options = tox_options_new(&error_options); + + if (error_options != TOX_ERR_OPTIONS_NEW_OK) { + free(buffer); + return -1; + } + + // pass test data to Tox + tox_options_set_savedata_data(tox_options, buffer, filelen); + tox_options_set_savedata_type(tox_options, TOX_SAVEDATA_TYPE_TOX_SAVE); + + Tox_Err_New error_new; + Tox *tox = tox_new(tox_options, &error_new); + + if (!tox || error_new != TOX_ERR_NEW_OK) { + free(buffer); + return -1; + } + + tox_kill(tox); + free(buffer); + + return 0; +} -- cgit v1.2.3