]> git.ipfire.org Git - thirdparty/git.git/commitdiff
test_bitmap_hashes(): handle repository without bitmaps
authorJeff King <peff@peff.net>
Fri, 5 Nov 2021 09:01:31 +0000 (05:01 -0400)
committerJunio C Hamano <gitster@pobox.com>
Fri, 5 Nov 2021 18:52:42 +0000 (11:52 -0700)
If prepare_bitmap_git() returns NULL (one easy-to-trigger cause being
that the repository does not have bitmaps at all), then we'll segfault
accessing bitmap_git->hashes:

  $ t/helper/test-tool bitmap dump-hashes
  Segmentation fault

We should treat this the same as a repository with bitmaps but no
name-hashes, and quietly produce an empty output. The later call to
free_bitmap_index() in the cleanup label is OK, as it treats a NULL
pointer as a noop.

This isn't a big deal in practice, as this function is intended for and
used only by test-tool. It's probably worth fixing to avoid confusion,
but not worth adding coverage for this to the test suite.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
pack-bitmap.c

index f47a0a7db4dd30a6450b3e59e0ec463c5578da39..b37a3c0743066251c57c5945a782d2b4115c2dea 100644 (file)
@@ -1748,7 +1748,7 @@ int test_bitmap_hashes(struct repository *r)
        struct object_id oid;
        uint32_t i, index_pos;
 
-       if (!bitmap_git->hashes)
+       if (!bitmap_git || !bitmap_git->hashes)
                goto cleanup;
 
        for (i = 0; i < bitmap_num_objects(bitmap_git); i++) {