diff mbox series

rebase: verify commit parameter

Message ID 49e25873-90e0-8ae2-7a40-01bec3f99e5f@web.de (mailing list archive)
State Accepted
Commit 2c63eb1cc86b816b83c1ced306a968e11b1e8239
Headers show
Series rebase: verify commit parameter | expand

Commit Message

René Scharfe Dec. 31, 2020, 11:55 p.m. UTC
If the user specifies a base commit to switch to, check if it actually
references a commit right away to avoid getting confused later on when
it turns out to be an invalid object.

Reported-by: LeSeulArtichaut <leseulartichaut@gmail.com>
Signed-off-by: René Scharfe <l.s.r@web.de>
---
git-legacy-rebase.sh also accepted non-commits, if I read the code
correctly.

 builtin/rebase.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

--
2.30.0
diff mbox series

Patch

diff --git a/builtin/rebase.c b/builtin/rebase.c
index 19c7b377aa..840dbd7eb7 100644
--- a/builtin/rebase.c
+++ b/builtin/rebase.c
@@ -1917,7 +1917,9 @@  int cmd_rebase(int argc, const char **argv, const char *prefix)
 			die_if_checked_out(buf.buf, 1);
 			options.head_name = xstrdup(buf.buf);
 		/* If not is it a valid ref (branch or commit)? */
-		} else if (!get_oid(branch_name, &options.orig_head))
+		} else if (!get_oid(branch_name, &options.orig_head) &&
+			   lookup_commit_reference(the_repository,
+						   &options.orig_head))
 			options.head_name = NULL;
 		else
 			die(_("fatal: no such branch/commit '%s'"),