[PATCH v2 1/2] pack-bitmap: clean up include_check after use
- From
Jeff King <peff@peff.net>
- Date
- Apr 28, 2021, 15:42 UTC
- Message-ID
- <YImCZpLA0TjAkU9/@coredump.intra.peff.net>
- In-Reply-To
- <YImCNXC5DUvy5gT8@coredump.intra.peff.net>
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 --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;
-- 2.31.1.791.g8400859cdc