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

Re: [RFC] t5300 considered dangerous

From
Junio C Hamano <junkio@cox.net>
Date
Dec 27, 2005, 02:10 UTC
Message-ID
<7vd5jjffxu.fsf@assigned-by-dhcp.cox.net>
In-Reply-To
<Pine.LNX.4.63.0512270018310.3067@wbgn013.biozentrum.uni-wuerzburg.de>
Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
> The test case corrupts a pack, and then also the index of that pack, by 
> writing "0" at certain offsets, and then tests if git-verify-pack fails.
These certain offsets are:
 . byte    2 in pack
   This corrupts PACK_SIGNATURE ("A" in "PACK").
 . byte    7 in pack
   This corrupts PACK_VERSION ("\002" in "\0\0\0\002").
 . byte   12 in pack
   This corrupts the type/size byte of whatever the first object
   happens to be (the type/size byte has non-zero upper nibble).
 . byte 1200 in idx that is currently 1208 bytes long.
   This tries to corrupt the checksum of the index file itself,

You are right about the last one; this location has 1/256 chance of validly being 0, and making the set of objects to be packed constant is one way to fix it. More appropriate way would be to measure how long the .idx file is, and corrupt the last 20 bytes; I was too lazy.

-- >8 --
diff --git a/t/t5300-pack-object.sh b/t/t5300-pack-object.sh
index 7dfb1ab..dd719bb 100755
--- a/t/t5300-pack-object.sh
+++ b/t/t5300-pack-object.sh
@@ -163,8 +163,10 @@ test_expect_success \
      else :;
      fi &&
 
+     l=`wc -c <test-3.idx` &&
+     l=`expr "$l" - 20` &&
      cp test-1-${packname_1}.pack test-3.pack &&
-     dd if=/dev/zero of=test-3.idx count=1 bs=1 conv=notrunc seek=1200 &&
+     dd if=/dev/zero of=test-3.idx count=20 bs=1 conv=notrunc seek=$l &&
      if git-verify-pack test-3.pack
      then false
      else :;
Previous: Johannes SchindelinNext: Johannes Schindelin
Message 3 of 5 in “[RFC] t5500 considered dangerous”
  1. Johannes SchindelinDec 26, 2005
  2. Johannes SchindelinDec 26, 2005
  3. Junio C HamanoDec 27, 2005
  4. Johannes SchindelinDec 27, 2005
  5. Johannes SchindelinDec 27, 2005

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.