From b0ddc7947cc6f0a077543204a96710c53daa48a5 Mon Sep 17 00:00:00 2001 From: Michael Montalbo Date: Sat, 28 Feb 2026 20:31:16 +0000 Subject: diff: fix crash with --find-object outside repository When "git diff --find-object=" is run outside a git repository, the option parsing callback eagerly resolves the OID via repo_get_oid(), which reaches get_main_ref_store() and hits a BUG() assertion because no repository has been set up. Check startup_info->have_repository before attempting to resolve the OID, and return a user-friendly error instead. Signed-off-by: Michael Montalbo Signed-off-by: Junio C Hamano --- diff.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'diff.c') diff --git a/diff.c b/diff.c index 90e8003dd1..fd9aedbec7 100644 --- a/diff.c +++ b/diff.c @@ -5139,6 +5139,8 @@ static int diff_opt_find_object(const struct option *option, struct object_id oid; BUG_ON_OPT_NEG(unset); + if (!startup_info->have_repository) + return error(_("--find-object requires a git repository")); if (repo_get_oid(the_repository, arg, &oid)) return error(_("unable to resolve '%s'"), arg); -- cgit v1.3