From 249dc534449f6fabd65894f20ee079fd394ab832 Mon Sep 17 00:00:00 2001 From: Josh Steadmon Date: Thu, 7 Feb 2019 12:05:53 -0800 Subject: fuzz-commit-graph: initialize repo object Various #DEFINE "constants" in commit-graph.c now depend on the_hash_algo->rawsz, but this object must be initialized before it can be used. Signed-off-by: Josh Steadmon Signed-off-by: Junio C Hamano --- fuzz-commit-graph.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/fuzz-commit-graph.c b/fuzz-commit-graph.c index cf790c9d04..0157acbf2e 100644 --- a/fuzz-commit-graph.c +++ b/fuzz-commit-graph.c @@ -1,4 +1,5 @@ #include "commit-graph.h" +#include "repository.h" struct commit_graph *parse_commit_graph(void *graph_map, int fd, size_t graph_size); @@ -9,7 +10,9 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { struct commit_graph *g; + initialize_the_repository(); g = parse_commit_graph((void *)data, -1, size); + repo_clear(the_repository); free(g); return 0; -- cgit v1.3 From 96b0710ee405bbdea404641c82eabf28fe629b7a Mon Sep 17 00:00:00 2001 From: Josh Steadmon Date: Thu, 7 Feb 2019 12:05:54 -0800 Subject: object: fix leak of shallow_stat In eee4502baaf ("shallow: migrate shallow information into the object parser", 2018-05-17), we added a stat_validity pointer into the parsed_object_pool struct, but did not add code to free this in parsed_object_pool_clear(). This leak was found by fuzz-commit-graph. Clear the struct and then free it in parsed_object_pool_clear() to prevent the leak. Signed-off-by: Josh Steadmon Signed-off-by: Junio C Hamano --- object.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/object.c b/object.c index 59ea24c4aa..e81d47a79c 100644 --- a/object.c +++ b/object.c @@ -557,9 +557,11 @@ void parsed_object_pool_clear(struct parsed_object_pool *o) clear_alloc_state(o->commit_state); clear_alloc_state(o->tag_state); clear_alloc_state(o->object_state); + stat_validity_clear(o->shallow_stat); FREE_AND_NULL(o->blob_state); FREE_AND_NULL(o->tree_state); FREE_AND_NULL(o->commit_state); FREE_AND_NULL(o->tag_state); FREE_AND_NULL(o->object_state); + FREE_AND_NULL(o->shallow_stat); } -- cgit v1.3