git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] Initialize repo object in fuzz-commit-graph
@ 2019-02-07 20:05 Josh Steadmon
  2019-02-07 20:05 ` [PATCH 1/2] fuzz-commit-graph: initialize repo object Josh Steadmon
  2019-02-07 20:05 ` [PATCH 2/2] object: fix leak of shallow_stat Josh Steadmon
  0 siblings, 2 replies; 3+ messages in thread
From: Josh Steadmon @ 2019-02-07 20:05 UTC (permalink / raw)
  To: git

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


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH 1/2] fuzz-commit-graph: initialize repo object
  2019-02-07 20:05 [PATCH 0/2] Initialize repo object in fuzz-commit-graph Josh Steadmon
@ 2019-02-07 20:05 ` Josh Steadmon
  2019-02-07 20:05 ` [PATCH 2/2] object: fix leak of shallow_stat Josh Steadmon
  1 sibling, 0 replies; 3+ messages in thread
From: Josh Steadmon @ 2019-02-07 20:05 UTC (permalink / raw)
  To: git

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


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [PATCH 2/2] object: fix leak of shallow_stat
  2019-02-07 20:05 [PATCH 0/2] Initialize repo object in fuzz-commit-graph Josh Steadmon
  2019-02-07 20:05 ` [PATCH 1/2] fuzz-commit-graph: initialize repo object Josh Steadmon
@ 2019-02-07 20:05 ` Josh Steadmon
  1 sibling, 0 replies; 3+ messages in thread
From: Josh Steadmon @ 2019-02-07 20:05 UTC (permalink / raw)
  To: git

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


^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2019-02-07 20:06 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-02-07 20:05 [PATCH 0/2] Initialize repo object in fuzz-commit-graph Josh Steadmon
2019-02-07 20:05 ` [PATCH 1/2] fuzz-commit-graph: initialize repo object Josh Steadmon
2019-02-07 20:05 ` [PATCH 2/2] object: fix leak of shallow_stat Josh Steadmon

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).