diff mbox series

[v2,1/2] pack-bitmap: clean up include_check after use

Message ID YImCZpLA0TjAkU9/@coredump.intra.peff.net (mailing list archive)
State New
Headers show
Series prune: save reachable-from-recent objects with bitmaps | expand

Commit Message

Jeff King April 28, 2021, 3:42 p.m. UTC
When a bitmap walk has to traverse (to fill in non-bitmapped objects),
we use rev_info's include_check mechanism to let us stop the traversal
early. But after setting the function and its data parameter, we never
clean it up. This means that if the rev_info is used for a subsequent
traversal without bitmaps, it will unexpectedly call into our
include_check function (worse, it will do so pointing to a now-defunct
stack variable in include_check_data, likely resulting in a segfault).

There's no code which does this now, but it's an accident waiting to
happen. Let's clean up after ourselves in the bitmap code.

Reported-by: David Emett <dave@sp4m.net>
Signed-off-by: Jeff King <peff@peff.net>
 pack-bitmap.c | 3 +++
 1 file changed, 3 insertions(+)
diff mbox series


diff --git a/pack-bitmap.c b/pack-bitmap.c
index 3ed15431cd..f2b59fbf48 100644
--- a/pack-bitmap.c
+++ b/pack-bitmap.c
@@ -631,6 +631,9 @@  static struct bitmap *find_objects(struct bitmap_index *bitmap_git,
 		traverse_commit_list_filtered(filter, revs,
 					      show_commit, show_object,
 					      &show_data, NULL);
+		revs->include_check = NULL;
+		revs->include_check_data = NULL;
 	return base;