From 1e951c647365be2e93bceddf7bd13173ed2cb1ce Mon Sep 17 00:00:00 2001 From: Jeff King Date: Wed, 28 Apr 2021 11:42:30 -0400 Subject: [PATCH] pack-bitmap: clean up include_check after use 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 Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- pack-bitmap.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pack-bitmap.c b/pack-bitmap.c index 1ebe0c8162..84a9195e72 100644 --- a/pack-bitmap.c +++ b/pack-bitmap.c @@ -630,6 +630,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; -- 2.39.5