Re: [PATCH] Segmentation fault on non-commit objects.
From: Johannes Schindelin <hidden>
Date: 2019-10-29 13:11:40
Hi Davide, [please remove the trailing period character in the commit subject] On Tue, 29 Oct 2019, Davide Berardi wrote:
quoted hunk ↗ jump to hunk
Fixed segmentation fault that can be triggered using $ git clone --branch $object $repository with object pointing to a non-commit (e.g. a blob). Signed-off-by: Davide Berardi <redacted> --- builtin/clone.c | 3 +++ 1 file changed, 3 insertions(+)diff --git a/builtin/clone.c b/builtin/clone.c index f665b28ccc..6ad2d8fe77 100644 --- a/builtin/clone.c +++ b/builtin/clone.c@@ -720,6 +720,9 @@ static void update_head(const struct ref *our, conststruct ref *remote, } else if (our) { struct commit *c = lookup_commit_reference(the_repository, &our->old_oid); + /* Check if --branch specifies a non-commit. */ + if (c == NULL) + die(_("unable to update HEAD (cannot find commit)"));
Could the error message maybe repeat whatever the user specified for `$object`? That would probably be more helpful. Maybe even say "not a commit"? Ciao, Johannes
/* --branch specifies a non-branch (i.e. tags), detach HEAD */ update_ref(msg, "HEAD", &c->object.oid, NULL, REF_NO_DEREF, UPDATE_REFS_DIE_ON_ERR); -- 2.23.0