2017-05-13 14:50:54 +00:00
|
|
|
#include "includes.h"
|
2017-05-18 15:38:30 +00:00
|
|
|
#include "buffer.h"
|
|
|
|
#include "dbutil.h"
|
2017-05-13 14:50:54 +00:00
|
|
|
|
|
|
|
extern int LLVMFuzzerTestOneInput(const unsigned char *data, size_t size);
|
|
|
|
|
|
|
|
int main(int argc, char ** argv) {
|
2017-05-18 15:38:30 +00:00
|
|
|
int i;
|
|
|
|
buffer *input = buf_new(100000);
|
|
|
|
|
2017-05-21 10:53:33 +00:00
|
|
|
for (i = 1; i < argc; i++) {
|
|
|
|
#if DEBUG_TRACE
|
|
|
|
if (strcmp(argv[i], "-v") == 0) {
|
|
|
|
debug_trace = 1;
|
2017-05-24 16:12:07 +00:00
|
|
|
TRACE(("debug printing on"))
|
2017-05-21 10:53:33 +00:00
|
|
|
}
|
2017-05-20 05:23:16 +00:00
|
|
|
#endif
|
2017-05-21 10:53:33 +00:00
|
|
|
}
|
2017-05-20 05:23:16 +00:00
|
|
|
|
2018-03-08 15:22:53 +00:00
|
|
|
int old_fuzz_wrapfds = 0;
|
2017-05-18 15:38:30 +00:00
|
|
|
for (i = 1; i < argc; i++) {
|
2017-05-21 10:53:33 +00:00
|
|
|
if (argv[i][0] == '-') {
|
2018-02-28 14:02:12 +00:00
|
|
|
/* ignore arguments */
|
2017-05-21 10:53:33 +00:00
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
2017-05-18 15:38:30 +00:00
|
|
|
char* fn = argv[i];
|
|
|
|
buf_setlen(input, 0);
|
|
|
|
buf_readfile(input, fn);
|
|
|
|
buf_setpos(input, 0);
|
|
|
|
|
2020-10-18 04:17:39 +00:00
|
|
|
/* Run twice to catch problems with statefulness */
|
2018-03-08 15:22:53 +00:00
|
|
|
fuzz.wrapfds = old_fuzz_wrapfds;
|
2017-05-20 14:47:19 +00:00
|
|
|
printf("Running %s once \n", fn);
|
|
|
|
LLVMFuzzerTestOneInput(input->data, input->len);
|
|
|
|
printf("Running %s twice \n", fn);
|
2017-05-18 15:38:30 +00:00
|
|
|
LLVMFuzzerTestOneInput(input->data, input->len);
|
|
|
|
printf("Done %s\n", fn);
|
2018-03-08 15:22:53 +00:00
|
|
|
|
|
|
|
/* Disable wrapfd so it won't interfere with buf_readfile() above */
|
|
|
|
old_fuzz_wrapfds = fuzz.wrapfds;
|
|
|
|
fuzz.wrapfds = 0;
|
2017-05-18 15:38:30 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
printf("Finished\n");
|
|
|
|
|
2017-05-13 14:50:54 +00:00
|
|
|
return 0;
|
|
|
|
}
|
2020-10-25 14:52:36 +00:00
|
|
|
|
2020-11-02 12:33:48 +00:00
|
|
|
// Just to let it link
|
|
|
|
size_t LLVMFuzzerMutate(uint8_t *UNUSED(Data), size_t UNUSED(Size), size_t UNUSED(MaxSize)) {
|
2020-10-25 14:52:36 +00:00
|
|
|
printf("standalone fuzzer harness shouldn't call LLVMFuzzerMutate");
|
|
|
|
abort();
|
|
|
|
return 0;
|
|
|
|
}
|