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

[PATCH 04/11] multi-pack-index: verify packname order

From
Derrick Stolee via GitGitGadget <gitgitgadget@gmail.com>
Date
Sep 5, 2018, 14:46 UTC
Message-ID
<37ee24c82bf88611808ec3bb1c36eef439c809db.1536158789.git.gitgitgadget@gmail.com>
In-Reply-To
<pull.34.git.gitgitgadget@gmail.com>
From: Derrick Stolee <dstolee@microsoft.com>

The final check we make while loading a multi-pack-index is that the packfile names are in lexicographical order. Make this error be a die() instead.

In order to test this condition, we need multiple packfiles. Earlier in t5319-multi-pack-index.sh, we tested the interaction with 'git repack' but this limits us to one packfile in our object dir. Move these repack tests until after the 'verify' tests.

Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
---
 midx.c                      |  6 ++----
 t/t5319-multi-pack-index.sh | 10 ++++++++++
 2 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/midx.c b/midx.c
index 8b054b39ab..e655a15aed 100644
--- a/midx.c
+++ b/midx.c
@@ -157,12 +157,10 @@ struct multi_pack_index *load_multi_pack_index(const char *object_dir, int local
 
 		cur_pack_name += strlen(cur_pack_name) + 1;
 
-		if (i && strcmp(m->pack_names[i], m->pack_names[i - 1]) <= 0) {
-			error(_("multi-pack-index pack names out of order: '%s' before '%s'"),
+		if (i && strcmp(m->pack_names[i], m->pack_names[i - 1]) <= 0)
+			die(_("multi-pack-index pack names out of order: '%s' before '%s'"),
 			      m->pack_names[i - 1],
 			      m->pack_names[i]);
-			goto cleanup_fail;
-		}
 	}
 
 	return m;
diff --git a/t/t5319-multi-pack-index.sh b/t/t5319-multi-pack-index.sh
index 5c9c499aa6..4a8f231d93 100755
--- a/t/t5319-multi-pack-index.sh
+++ b/t/t5319-multi-pack-index.sh
@@ -181,6 +181,11 @@ MIDX_BYTE_CHUNK_COUNT=6
 MIDX_HEADER_SIZE=12
 MIDX_BYTE_CHUNK_ID=$MIDX_HEADER_SIZE
 MIDX_BYTE_CHUNK_OFFSET=$(($MIDX_HEADER_SIZE + 4))
+MIDX_NUM_CHUNKS=5
+MIDX_CHUNK_LOOKUP_WIDTH=12
+MIDX_OFFSET_PACKNAMES=$(($MIDX_HEADER_SIZE + \
+			 $MIDX_NUM_CHUNKS * $MIDX_CHUNK_LOOKUP_WIDTH))
+MIDX_BYTE_PACKNAME_ORDER=$(($MIDX_OFFSET_PACKNAMES + 2))
 
 test_expect_success 'verify bad version' '
 	corrupt_midx_and_verify $MIDX_BYTE_VERSION "\00" $objdir \
@@ -212,6 +217,11 @@ test_expect_success 'verify invalid chunk offset' '
 		"invalid chunk offset (too large)"
 '
 
+test_expect_success 'verify packnames out of order' '
+	corrupt_midx_and_verify $MIDX_BYTE_PACKNAME_ORDER "z" $objdir \
+		"pack names out of order"
+'
+
 test_expect_success 'repack removes multi-pack-index' '
 	test_path_is_file $objdir/pack/multi-pack-index &&
 	git repack -adf &&
-- 
gitgitgadget
Previous: Eric SunshineNext: Stefan Beller
Message 7 of 34 in “Add 'git multi-pack-index verify' command”
  1. 00/11 Add 'git multi-pack-index verify' commandDerrick Stolee via GitGitGadget, Sep 5, 2018
  2. 01/11 multi-pack-index: add 'verify' verbDerrick Stolee via GitGitGadget, Sep 5, 2018
  3. Eric SunshineSep 5, 2018
  4. Derrick StoleeSep 5, 2018
  5. 02/11 multi-pack-index: verify bad headerDerrick Stolee via GitGitGadget, Sep 5, 2018
  6. Eric SunshineSep 7, 2018
  7. 04/11 multi-pack-index: verify packname orderDerrick Stolee via GitGitGadget, Sep 5, 2018
  8. Stefan BellerSep 5, 2018
  9. Derrick StoleeSep 5, 2018
  10. Stefan BellerSep 5, 2018
  11. Derrick StoleeSep 5, 2018
  12. 05/11 multi-pack-index: verify missing packDerrick Stolee via GitGitGadget, Sep 5, 2018
  13. 06/11 multi-pack-index: verify oid fanout orderDerrick Stolee via GitGitGadget, Sep 5, 2018
  14. 07/11 multi-pack-index: verify oid lookup orderDerrick Stolee via GitGitGadget, Sep 5, 2018
  15. 08/11 multi-pack-index: fix 32-bit vs 64-bit size checkDerrick Stolee via GitGitGadget, Sep 5, 2018
  16. 03/11 multi-pack-index: verify corrupt chunk lookup tableDerrick Stolee via GitGitGadget, Sep 5, 2018
  17. 09/11 multi-pack-index: verify object offsetsDerrick Stolee via GitGitGadget, Sep 5, 2018
  18. Eric SunshineSep 7, 2018
  19. Derrick StoleeSep 7, 2018
  20. 10/11 multi-pack-index: report progress during 'verify'Derrick Stolee via GitGitGadget, Sep 5, 2018
  21. 11/11 fsck: verify multi-pack-indexDerrick Stolee via GitGitGadget, Sep 5, 2018
  22. 00/11 Add 'git multi-pack-index verify' commandDerrick Stolee via GitGitGadget, Sep 13, 2018
  23. 02/11 multi-pack-index: verify bad headerDerrick Stolee via GitGitGadget, Sep 13, 2018
  24. 03/11 multi-pack-index: verify corrupt chunk lookup tableDerrick Stolee via GitGitGadget, Sep 13, 2018
  25. 04/11 multi-pack-index: verify packname orderDerrick Stolee via GitGitGadget, Sep 13, 2018
  26. 05/11 multi-pack-index: verify missing packDerrick Stolee via GitGitGadget, Sep 13, 2018
  27. 06/11 multi-pack-index: verify oid fanout orderDerrick Stolee via GitGitGadget, Sep 13, 2018
  28. 07/11 multi-pack-index: verify oid lookup orderDerrick Stolee via GitGitGadget, Sep 13, 2018
  29. 08/11 multi-pack-index: fix 32-bit vs 64-bit size checkDerrick Stolee via GitGitGadget, Sep 13, 2018
  30. 09/11 multi-pack-index: verify object offsetsDerrick Stolee via GitGitGadget, Sep 13, 2018
  31. 10/11 multi-pack-index: report progress during 'verify'Derrick Stolee via GitGitGadget, Sep 13, 2018
  32. Ævar Arnfjörð BjarmasonSep 13, 2018
  33. 11/11 fsck: verify multi-pack-indexDerrick Stolee via GitGitGadget, Sep 13, 2018
  34. 01/11 multi-pack-index: add 'verify' verbDerrick Stolee via GitGitGadget, Sep 13, 2018

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.