diff options
author | sudden6 <sudden6@gmx.at> | 2019-08-02 00:18:58 +0200 |
---|---|---|
committer | sudden6 <sudden6@gmx.at> | 2020-03-24 16:49:41 +0100 |
commit | 6732e5ef2fde4adc7db65880ff866111f1d1cbc8 (patch) | |
tree | e33cca67d04011499994e585a7c9c4fc538f602a /testing/afl_toxsave.c | |
parent | ef7058422eec1c8b90208bb3522fce28374feb58 (diff) |
Add basic test adapter for AFL
Diffstat (limited to 'testing/afl_toxsave.c')
-rw-r--r-- | testing/afl_toxsave.c | 54 |
1 files changed, 54 insertions, 0 deletions
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 @@ | |||
1 | #include <malloc.h> | ||
2 | #include <stdio.h> | ||
3 | |||
4 | #include "../toxcore/tox.h" | ||
5 | |||
6 | int main(int argc, char **argv) | ||
7 | { | ||
8 | if (argc != 2) { | ||
9 | return -1; | ||
10 | } | ||
11 | |||
12 | // determine file size | ||
13 | FILE *fileptr = fopen(argv[1], "rb"); | ||
14 | fseek(fileptr, 0, SEEK_END); | ||
15 | long filelen = ftell(fileptr); | ||
16 | rewind(fileptr); | ||
17 | |||
18 | // read file into buffer | ||
19 | uint8_t *buffer = (uint8_t *)malloc(filelen * sizeof(uint8_t)); | ||
20 | size_t bytes_read = fread(buffer, filelen, 1, fileptr); | ||
21 | |||
22 | if (bytes_read != filelen) { | ||
23 | free(buffer); | ||
24 | return -1; | ||
25 | } | ||
26 | |||
27 | fclose(fileptr); | ||
28 | |||
29 | Tox_Err_Options_New error_options; | ||
30 | |||
31 | struct Tox_Options *tox_options = tox_options_new(&error_options); | ||
32 | |||
33 | if (error_options != TOX_ERR_OPTIONS_NEW_OK) { | ||
34 | free(buffer); | ||
35 | return -1; | ||
36 | } | ||
37 | |||
38 | // pass test data to Tox | ||
39 | tox_options_set_savedata_data(tox_options, buffer, filelen); | ||
40 | tox_options_set_savedata_type(tox_options, TOX_SAVEDATA_TYPE_TOX_SAVE); | ||
41 | |||
42 | Tox_Err_New error_new; | ||
43 | Tox *tox = tox_new(tox_options, &error_new); | ||
44 | |||
45 | if (!tox || error_new != TOX_ERR_NEW_OK) { | ||
46 | free(buffer); | ||
47 | return -1; | ||
48 | } | ||
49 | |||
50 | tox_kill(tox); | ||
51 | free(buffer); | ||
52 | |||
53 | return 0; | ||
54 | } | ||