Robert Swiecki | f827c98 | 2017-06-01 16:02:39 +0200 | [diff] [blame] | 1 | #ifdef __cplusplus |
| 2 | extern "C" { |
| 3 | #endif |
| 4 | |
Robert Swiecki | 7925559 | 2017-06-01 16:50:56 +0200 | [diff] [blame] | 5 | #include <stdbool.h> |
Robert Swiecki | 67ed6c1 | 2017-06-06 21:49:07 +0200 | [diff] [blame] | 6 | #include <stddef.h> |
Robert Swiecki | 7925559 | 2017-06-01 16:50:56 +0200 | [diff] [blame] | 7 | #include <stdint.h> |
| 8 | |
Robert Swiecki | 74c23a8 | 2017-06-01 15:58:45 +0200 | [diff] [blame] | 9 | /* |
| 10 | * buf: input fuzzing data |
| 11 | * len: size of the 'buf' data |
| 12 | * |
| 13 | * Return value: should return 0 |
| 14 | */ |
Robert Swiecki | cabf6e7 | 2017-06-01 16:12:23 +0200 | [diff] [blame] | 15 | int LLVMFuzzerTestOneInput(const uint8_t * buf, size_t len); |
Robert Swiecki | 74c23a8 | 2017-06-01 15:58:45 +0200 | [diff] [blame] | 16 | |
| 17 | /* |
| 18 | * argc: ptr to main's argc |
| 19 | * argv: ptr to main's argv |
| 20 | * |
| 21 | * Return value: ignored |
| 22 | */ |
Robert Swiecki | f827c98 | 2017-06-01 16:02:39 +0200 | [diff] [blame] | 23 | int LLVMFuzzerInitialize(int *argc, char ***argv); |
Robert Swiecki | 74c23a8 | 2017-06-01 15:58:45 +0200 | [diff] [blame] | 24 | |
| 25 | /* |
Robert Swiecki | f98a927 | 2017-06-02 13:56:42 +0200 | [diff] [blame] | 26 | * Data: data to mutate |
| 27 | * Size: size of the data to mutate |
| 28 | * MaxSize: maximum size of the destination buffer |
| 29 | * |
| 30 | * Return value: size of the mutated buffer |
| 31 | */ |
| 32 | size_t LLVMFuzzerMutate(uint8_t * Data, size_t Size, size_t MaxSize); |
| 33 | |
| 34 | /* |
Robert Swiecki | 74c23a8 | 2017-06-01 15:58:45 +0200 | [diff] [blame] | 35 | * |
| 36 | * An alternative for LLVMFuzzerTestOneInput() |
| 37 | * |
| 38 | * buf_ptr: will be set to input fuzzing data |
| 39 | * len_ptr: will be set to the size of the input fuzzing data |
| 40 | */ |
Robert Swiecki | cabf6e7 | 2017-06-01 16:12:23 +0200 | [diff] [blame] | 41 | void HF_ITER(const uint8_t ** buf_ptr, size_t * len_ptr); |
Robert Swiecki | f827c98 | 2017-06-01 16:02:39 +0200 | [diff] [blame] | 42 | |
Robert Swiecki | fcf8511 | 2017-06-27 23:57:32 +0200 | [diff] [blame^] | 43 | /* |
| 44 | * Update comparison map: |
| 45 | * |
| 46 | * addr: address of original comparison |
| 47 | * n: new value (only if better than the old/current value) |
| 48 | */ |
| 49 | void instrumentCmpMap(void *addr, unsigned int new); |
| 50 | |
Robert Swiecki | 0061b22 | 2017-06-01 16:49:35 +0200 | [diff] [blame] | 51 | #if defined(__linux__) |
Robert Swiecki | 649b89d | 2017-06-01 16:42:49 +0200 | [diff] [blame] | 52 | |
Robert Swiecki | c680237 | 2017-06-16 19:35:20 +0200 | [diff] [blame] | 53 | #include <sched.h> |
| 54 | |
Robert Swiecki | 649b89d | 2017-06-01 16:42:49 +0200 | [diff] [blame] | 55 | /* |
| 56 | * Enter Linux namespaces |
| 57 | * |
| 58 | * cloneFlags: see 'man unshare' |
| 59 | */ |
| 60 | bool linuxEnterNs(uintptr_t cloneFlags); |
| 61 | /* |
| 62 | * Bring network interface up |
| 63 | * |
| 64 | * ifacename: name of the interface, typically "lo" |
| 65 | */ |
| 66 | bool linuxIfaceUp(const char *ifacename); |
| 67 | /* |
| 68 | * Mount tmpfs over a mount point |
| 69 | * |
| 70 | * dst: mount point for tmfs |
| 71 | */ |
| 72 | bool linuxMountTmpfs(const char *dst); |
| 73 | |
Robert Swiecki | 0061b22 | 2017-06-01 16:49:35 +0200 | [diff] [blame] | 74 | #endif /* defined(__linux__) */ |
Robert Swiecki | 649b89d | 2017-06-01 16:42:49 +0200 | [diff] [blame] | 75 | |
Robert Swiecki | f827c98 | 2017-06-01 16:02:39 +0200 | [diff] [blame] | 76 | #ifdef __cplusplus |
| 77 | } /* extern "C" */ |
| 78 | #endif |