summaryrefslogtreecommitdiff
path: root/t/t1450-fsck.sh
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2012-07-28 15:06:29 (GMT)
committerJunio C Hamano <gitster@pobox.com>2012-07-29 22:14:08 (GMT)
commitc479d14a80743b1cb86d77695607f4c81f7d8797 (patch)
tree3da17f344439eceec6dbf8c8bc13fc923a8603e6 /t/t1450-fsck.sh
parent4337b5856f88f18da47c176e3cbc95a35627044c (diff)
downloadgit-c479d14a80743b1cb86d77695607f4c81f7d8797.zip
git-c479d14a80743b1cb86d77695607f4c81f7d8797.tar.gz
git-c479d14a80743b1cb86d77695607f4c81f7d8797.tar.bz2
fsck: detect null sha1 in tree entries
Short of somebody happening to beat the 1 in 2^160 odds of actually generating content that hashes to the null sha1, we should never see this value in a tree entry. So let's have fsck warn if it it seen. As in the previous commit, we test both blob and submodule entries to future-proof the test suite against the implementation depending on connectivity to notice the error. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t1450-fsck.sh')
-rwxr-xr-xt/t1450-fsck.sh26
1 files changed, 26 insertions, 0 deletions
diff --git a/t/t1450-fsck.sh b/t/t1450-fsck.sh
index 5b8ebd8..5e36cc7 100755
--- a/t/t1450-fsck.sh
+++ b/t/t1450-fsck.sh
@@ -217,4 +217,30 @@ test_expect_success 'rev-list --verify-objects with bad sha1' '
grep -q "error: sha1 mismatch 63ffffffffffffffffffffffffffffffffffffff" out
'
+_bz='\0'
+_bz5="$_bz$_bz$_bz$_bz$_bz"
+_bz20="$_bz5$_bz5$_bz5$_bz5"
+
+test_expect_success 'fsck notices blob entry pointing to null sha1' '
+ (git init null-blob &&
+ cd null-blob &&
+ sha=$(printf "100644 file$_bz$_bz20" |
+ git hash-object -w --stdin -t tree) &&
+ git fsck 2>out &&
+ cat out &&
+ grep "warning.*null sha1" out
+ )
+'
+
+test_expect_success 'fsck notices submodule entry pointing to null sha1' '
+ (git init null-commit &&
+ cd null-commit &&
+ sha=$(printf "160000 submodule$_bz$_bz20" |
+ git hash-object -w --stdin -t tree) &&
+ git fsck 2>out &&
+ cat out &&
+ grep "warning.*null sha1" out
+ )
+'
+
test_done