git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2 3/6] t5324: harmonize sha1/sha256 graph chain corruption

From
Jeff King <peff@peff.net>
Date
Sep 28, 2023, 04:38 UTC
Message-ID
<20230928043847.GC58367@coredump.intra.peff.net>
In-Reply-To
<20230928043746.GB57926@coredump.intra.peff.net>

In t5324.20, we corrupt a hex character 60 bytes into the graph chain file. Since the file consists of two hash identifiers, one per line, the corruption differs between sha1 and sha256. In a sha1 repository, the corruption is on the second line, and in a sha256 repository, it is on the first.

We should of course detect the problem with either line. But as the next few patches will show (and fix), that is not the case (in fact, we currently do not exit non-zero for either line!). And while at the end of our series we'll catch all errors, our intermediate states will have differing behavior between the two hashes.

Let's make sure we test corruption of both the first and second lines, and do so consistently with either hash by choosing offsets which are always in the first hash (30 bytes) or in the second (70).

Signed-off-by: Jeff King <peff@peff.net>
---
In v2 we are now testing both first and second lines, instead of just
the first.
 t/t5324-split-commit-graph.sh | 25 ++++++++++++++++++++-----
 1 file changed, 20 insertions(+), 5 deletions(-)
diff --git a/t/t5324-split-commit-graph.sh b/t/t5324-split-commit-graph.sh
index 36c4141e67..a9b2428b56 100755
--- a/t/t5324-split-commit-graph.sh
+++ b/t/t5324-split-commit-graph.sh
@@ -312,15 +312,30 @@ test_expect_success 'warn on base graph chunk incorrect' '
 	)
 '
 
-test_expect_success 'verify after commit-graph-chain corruption' '
-	git clone --no-hardlinks . verify-chain &&
+test_expect_success 'verify after commit-graph-chain corruption (base)' '
+	git clone --no-hardlinks . verify-chain-base &&
 	(
-		cd verify-chain &&
-		corrupt_file "$graphdir/commit-graph-chain" 60 "G" &&
+		cd verify-chain-base &&
+		corrupt_file "$graphdir/commit-graph-chain" 30 "G" &&
 		git commit-graph verify 2>test_err &&
 		grep -v "^+" test_err >err &&
 		test_i18ngrep "invalid commit-graph chain" err &&
-		corrupt_file "$graphdir/commit-graph-chain" 60 "A" &&
+		corrupt_file "$graphdir/commit-graph-chain" 30 "A" &&
+		git commit-graph verify 2>test_err &&
+		grep -v "^+" test_err >err &&
+		test_i18ngrep "unable to find all commit-graph files" err
+	)
+'
+
+test_expect_success 'verify after commit-graph-chain corruption (tip)' '
+	git clone --no-hardlinks . verify-chain-tip &&
+	(
+		cd verify-chain-tip &&
+		corrupt_file "$graphdir/commit-graph-chain" 70 "G" &&
+		git commit-graph verify 2>test_err &&
+		grep -v "^+" test_err >err &&
+		test_i18ngrep "invalid commit-graph chain" err &&
+		corrupt_file "$graphdir/commit-graph-chain" 70 "A" &&
 		git commit-graph verify 2>test_err &&
 		grep -v "^+" test_err >err &&
 		test_i18ngrep "unable to find all commit-graph files" err
-- 
2.42.0.773.ga6e30199be
Previous: Jeff KingNext: Jeff King
Message 12 of 16 in “some "commit-graph verify" fixes for chains”
  1. 0/6 some "commit-graph verify" fixes for chainsJeff King, Sep 26, 2023
  2. 1/6 commit-graph: factor out chain opening functionJeff King, Sep 26, 2023
  3. 2/6 commit-graph: check mixed generation validation when loading chain fileJeff King, Sep 26, 2023
  4. 3/6 t5324: harmonize sha1/sha256 graph chain corruptionJeff King, Sep 26, 2023
  5. 4/6 commit-graph: detect read errors when verifying graph chainJeff King, Sep 26, 2023
  6. 5/6 commit-graph: tighten chain size checkJeff King, Sep 26, 2023
  7. 6/6 commit-graph: report incomplete chains during verificationJeff King, Sep 26, 2023
  8. Jeff KingSep 28, 2023
  9. 0/6 some "commit-graph verify" fixes for chainsJeff King, Sep 28, 2023
  10. 1/6 commit-graph: factor out chain opening functionJeff King, Sep 28, 2023
  11. 2/6 commit-graph: check mixed generation validation when loading chain fileJeff King, Sep 28, 2023
  12. 3/6 t5324: harmonize sha1/sha256 graph chain corruptionJeff King, Sep 28, 2023
  13. 4/6 commit-graph: detect read errors when verifying graph chainJeff King, Sep 28, 2023
  14. 5/6 commit-graph: tighten chain size checkJeff King, Sep 28, 2023
  15. 6/6 commit-graph: report incomplete chains during verificationJeff King, Sep 28, 2023
  16. Taylor BlauOct 5, 2023

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.