# [PATCH 0/2] Initialize repo object in fuzz-commit-graph

3 messages from 2019-02-07 to 2019-02-07. Participants: Josh Steadmon.
Thread: https://gitlist.dev/t/50429

## Josh Steadmon, 2019-02-07 20:05

Subject: [PATCH 0/2] Initialize repo object in fuzz-commit-graph
Message-ID: <cover.1549569479.git.steadmon@google.com>
URL: https://gitlist.dev/e/cover.1549569479.git.steadmon%40google.com

```
commit-graph.c now depends on the_hash_algo, which means the_repository
must be initialized before attempting to load a commit graph. This
series adds the initialization and cleanup to fuzz-commit-graph, and
fixes a leak it discovered in the cleanup code.

Josh Steadmon (2):
  fuzz-commit-graph: initialize repo objects
  object: fix leak of shallow_stat

 fuzz-commit-graph.c | 3 +++
 object.c            | 2 ++
 2 files changed, 5 insertions(+)

-- 
2.20.1.611.gfbb209baf1-goog


```

## Josh Steadmon, 2019-02-07 20:05

Subject: [PATCH 1/2] fuzz-commit-graph: initialize repo object
Message-ID: <2dc66703537cfdbd6eb08ac4a7341c0f278621a1.1549569479.git.steadmon@google.com>
URL: https://gitlist.dev/e/2dc66703537cfdbd6eb08ac4a7341c0f278621a1.1549569479.git.steadmon%40google.com
In-Reply-To: <cover.1549569479.git.steadmon@google.com>

```
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 <steadmon@google.com>
---
 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;
-- 
2.20.1.611.gfbb209baf1-goog


```

## Josh Steadmon, 2019-02-07 20:05

Subject: [PATCH 2/2] object: fix leak of shallow_stat
Message-ID: <9a0495694dc2344ae5fdf2a95b301cfca3ed4a79.1549569479.git.steadmon@google.com>
URL: https://gitlist.dev/e/9a0495694dc2344ae5fdf2a95b301cfca3ed4a79.1549569479.git.steadmon%40google.com
In-Reply-To: <cover.1549569479.git.steadmon@google.com>

```
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 <steadmon@google.com>
---
 object.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/object.c b/object.c
index 5dc5eec367..ca0b093c37 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);
 }
-- 
2.20.1.611.gfbb209baf1-goog


```
