summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2023-10-23 13:56:37 -0700
committerJunio C Hamano <gitster@pobox.com>2023-10-23 13:56:37 -0700
commit626f689f7903b51342cf31ad3792ba5e9e41586d (patch)
treef0ce5154751f6b09c184a8f9f7b73ae23d2aee36
parent755fb09163ec71b784b1bd9db5cb73de7a01d078 (diff)
parentd9b6634589d5c59b49fd2fc41953469173a40ff5 (diff)
downloadgit-626f689f7903b51342cf31ad3792ba5e9e41586d.tar.gz
Merge branch 'jc/fail-stash-to-store-non-stash'
Feeding "git stash store" with a random commit that was not created by "git stash create" now errors out. * jc/fail-stash-to-store-non-stash: stash: be careful what we store
-rw-r--r--builtin/stash.c6
-rwxr-xr-xt/t3903-stash.sh4
2 files changed, 10 insertions, 0 deletions
diff --git a/builtin/stash.c b/builtin/stash.c
index 1ad496985a..4a6771c9f4 100644
--- a/builtin/stash.c
+++ b/builtin/stash.c
@@ -989,6 +989,12 @@ usage:
static int do_store_stash(const struct object_id *w_commit, const char *stash_msg,
int quiet)
{
+ struct stash_info info;
+ char revision[GIT_MAX_HEXSZ];
+
+ oid_to_hex_r(revision, w_commit);
+ assert_stash_like(&info, revision);
+
if (!stash_msg)
stash_msg = "Created via \"git stash store\".";
diff --git a/t/t3903-stash.sh b/t/t3903-stash.sh
index 0b3dfeaea2..30b64260a8 100755
--- a/t/t3903-stash.sh
+++ b/t/t3903-stash.sh
@@ -931,6 +931,10 @@ test_expect_success 'store called with invalid commit' '
test_must_fail git stash store foo
'
+test_expect_success 'store called with non-stash commit' '
+ test_must_fail git stash store HEAD
+'
+
test_expect_success 'store updates stash ref and reflog' '
git stash clear &&
git reset --hard &&