From: David Turner Date: Mon, 26 Sep 2016 19:32:44 GMT Subject: [PATCH 1/2] tree-walk: be more specific about corrupt tree errors Message-ID: <1474918365-10937-2-git-send-email-novalis@novalis.org> In-Reply-To: <1474918365-10937-1-git-send-email-novalis@novalis.org> From: Jeff King When the tree-walker runs into an error, it just calls die(), and the message is always "corrupt tree file". However, we are actually covering several cases here; let's give the user a hint about what happened. Let's also avoid using the word "corrupt", which makes it seem like the data bit-rotted on disk. Our sha1 check would already have found that. These errors are ones of data that is malformed in the first place. Signed-off-by: David Turner Signed-off-by: Jeff King --- t/t1007-hash-object.sh | 15 +++++++++++++-- t/t1007/tree-with-empty-filename | Bin 0 -> 28 bytes t/t1007/tree-with-malformed-mode | Bin 0 -> 39 bytes tree-walk.c | 12 +++++++----- 4 files changed, 20 insertions(+), 7 deletions(-) create mode 100644 t/t1007/tree-with-empty-filename create mode 100644 t/t1007/tree-with-malformed-mode diff --git a/t/t1007-hash-object.sh b/t/t1007-hash-object.sh index acca9ac..cd10c73 100755 --- a/t/t1007-hash-object.sh +++ b/t/t1007-hash-object.sh @@ -183,9 +183,20 @@ for args in "-w --stdin-paths" "--stdin-paths -w"; do pop_repo done -test_expect_success 'corrupt tree' ' +test_expect_success 'too-short tree' ' echo abc >malformed-tree && - test_must_fail git hash-object -t tree malformed-tree + test_must_fail git hash-object -t tree malformed-tree 2>err && + grep "too-short tree object" err +' + +test_expect_success 'malformed mode in tree' ' + test_must_fail git hash-object -t tree ../t1007/tree-with-malformed-mode 2>err && + grep "malformed mode in tree entry for tree" err +' + +test_expect_success 'empty filename in tree' ' + test_must_fail git hash-object -t tree ../t1007/tree-with-empty-filename 2>err && + grep "empty filename in tree entry for tree" err ' test_expect_success 'corrupt commit' ' diff --git a/t/t1007/tree-with-empty-filename b/t/t1007/tree-with-empty-filename new file mode 100644 index 0000000000000000000000000000000000000000..aeb1ceb20e485eebd0acbb81c974d1c6fedcc1fe GIT binary patch literal 28 kcmXpsFfcPQQDAsB_tET47q2;ccWbUIkGgT_Nl)-Z0Hx{;SO5S3 literal 0 HcmV?d00001 diff --git a/t/t1007/tree-with-malformed-mode b/t/t1007/tree-with-malformed-mode new file mode 100644 index 0000000000000000000000000000000000000000..24aa84d60ef8e269fb0b29c67b5208639b9da3ae GIT binary patch literal 39 vcmYewPcJRb%}+^HNXyJg%}dNpWq3CC(dbuffer = buf; -- 2.8.0.rc4.22.g8ae061a