Commit 4dc87e72303dd42363597bbb1963de80fa602bff

Patrick Steinhardt 2017-06-21T13:35:46

merge: fix potential free of uninitialized memory The function `merge_diff_mark_similarity_exact` may error our early and, when it does so, free the `ours_deletes_by_oid` and `theirs_deletes_by_oid` variables. While the first one can never be uninitialized due to the first call actually assigning to it, the second variable can be freed without being initialized. Fix the issue by initializing both variables to `NULL`.

1
2
3
4
5
6
7
8
9
10
11
12
13
diff --git a/src/merge.c b/src/merge.c
index 5d69d9b..e6fa7dc 100644
--- a/src/merge.c
+++ b/src/merge.c
@@ -1165,7 +1165,7 @@ static int merge_diff_mark_similarity_exact(
 {
 	size_t i, j;
 	git_merge_diff *conflict_src, *conflict_tgt;
-	git_oidmap *ours_deletes_by_oid, *theirs_deletes_by_oid;
+	git_oidmap *ours_deletes_by_oid = NULL, *theirs_deletes_by_oid = NULL;
 	int error = 0;
 
 	if (!(ours_deletes_by_oid = git_oidmap_alloc()) ||