aboutsummaryrefslogtreecommitdiffstats
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
parentMerge branch 'so/diff-merges-dd' (diff)
parentstash: be careful what we store (diff)
downloadgit-626f689f7903b51342cf31ad3792ba5e9e41586d.tar.gz
git-626f689f7903b51342cf31ad3792ba5e9e41586d.zip
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 &&