From 8a349bf2a1e7257a4f35599b3613d7953289dc88 Mon Sep 17 00:00:00 2001 From: Etienne Samson Date: Mon, 26 Dec 2016 14:47:55 +0100 Subject: [PATCH 1/3] ignore: there must be a repository Otherwise we'll NULL-dereference in git_attr_cache__init --- src/ignore.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ignore.c b/src/ignore.c index d1a6c5550..cc9e08e35 100644 --- a/src/ignore.c +++ b/src/ignore.c @@ -278,7 +278,7 @@ int git_ignore__for_path( int error = 0; const char *workdir = git_repository_workdir(repo); - assert(ignores && path); + assert(repo && ignores && path); memset(ignores, 0, sizeof(*ignores)); ignores->repo = repo; @@ -503,9 +503,9 @@ int git_ignore_path_is_ignored( unsigned int i; git_attr_file *file; - assert(ignored && pathname); + assert(repo && ignored && pathname); - workdir = repo ? git_repository_workdir(repo) : NULL; + workdir = git_repository_workdir(repo); memset(&path, 0, sizeof(path)); memset(&ignores, 0, sizeof(ignores)); From b0014063b229132b358e56b40892807d1ee5df9d Mon Sep 17 00:00:00 2001 From: Etienne Samson Date: Mon, 26 Dec 2016 22:13:35 +0100 Subject: [PATCH 2/3] patch: memory leak of patch.base.diff_opts.new|old_prefix --- src/patch_generate.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/patch_generate.c b/src/patch_generate.c index 3559cc2b8..ab68f5801 100644 --- a/src/patch_generate.c +++ b/src/patch_generate.c @@ -451,8 +451,10 @@ int git_diff_foreach( if (binary_cb || hunk_cb || data_cb) { if ((error = patch_generated_init(&patch, diff, idx)) != 0 || - (error = patch_generated_load(&patch, &xo.output)) != 0) + (error = patch_generated_load(&patch, &xo.output)) != 0) { + git_patch_free(&patch.base); return error; + } } if ((error = patch_generated_invoke_file_callback(&patch, &xo.output)) == 0) { From 49be45a18941cfe2e98fa3312e52c7ef4119fdcb Mon Sep 17 00:00:00 2001 From: Etienne Samson Date: Mon, 26 Dec 2016 22:15:31 +0100 Subject: [PATCH 3/3] pack: report revwalk error --- src/pack-objects.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pack-objects.c b/src/pack-objects.c index 6dbb6cf6c..2e5de98ab 100644 --- a/src/pack-objects.c +++ b/src/pack-objects.c @@ -1738,7 +1738,7 @@ int git_packbuilder_insert_walk(git_packbuilder *pb, git_revwalk *walk) if (error == GIT_ITEROVER) error = 0; - return 0; + return error; } int git_packbuilder_set_callbacks(git_packbuilder *pb, git_packbuilder_progress progress_cb, void *progress_cb_payload)