commit-graph, fuzz: add fuzzer for commit-graph

Break load_commit_graph_one() into a new function, parse_commit_graph().
The latter function operates on arbitrary buffers, which makes it
suitable as a fuzzing target. Since parse_commit_graph() is only called
by load_commit_graph_one() (and the fuzzer described below), we omit
error messages that would be duplicated by the caller.

Adds fuzz-commit-graph.c, which provides a fuzzing entry point
compatible with libFuzzer (and possibly other fuzzing engines).

Signed-off-by: Josh Steadmon <steadmon@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Josh Steadmon
2019-01-15 14:25:50 -08:00
committed by Junio C Hamano
parent 77556354bb
commit aa658574bf
5 changed files with 57 additions and 17 deletions

16
fuzz-commit-graph.c Normal file
View File

@ -0,0 +1,16 @@
#include "commit-graph.h"
struct commit_graph *parse_commit_graph(void *graph_map, int fd,
size_t graph_size);
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size);
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
{
struct commit_graph *g;
g = parse_commit_graph((void *)data, -1, size);
free(g);
return 0;
}