]> git.ipfire.org Git - thirdparty/git.git/commitdiff
get_main_ref_store: BUG() when outside a repository
authorJeff King <peff@peff.net>
Fri, 18 May 2018 22:25:53 +0000 (15:25 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 21 May 2018 00:45:23 +0000 (09:45 +0900)
If we don't have a repository, then we can't initialize the
ref store.  Prior to 64a741619d (refs: store the main ref
store inside the repository struct, 2018-04-11), we'd try to
access get_git_dir(), and outside a repository that would
trigger a BUG(). After that commit, though, we directly use
the_repository->git_dir; if it's NULL we'll just segfault.

Let's catch this case and restore the BUG() behavior.
Obviously we don't ever want to hit this code, but a BUG()
is a lot more helpful than a segfault if we do.

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

diff --git a/refs.c b/refs.c
index 9b56fa9b819fa404bf0528aeb9d84de1cf618ec7..4a44e44b6afb772e7622e58156f7897da6271678 100644 (file)
--- a/refs.c
+++ b/refs.c
@@ -1654,6 +1654,9 @@ struct ref_store *get_main_ref_store(struct repository *r)
        if (r->refs)
                return r->refs;
 
+       if (!r->gitdir)
+               BUG("attempting to get main_ref_store outside of repository");
+
        r->refs = ref_store_init(r->gitdir, REF_STORE_ALL_CAPS);
        return r->refs;
 }