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

Re: [PATCH] t5313: make extended-table test more deterministic

From
Lars Schneider <larsxschneider@gmail.com>
Date
Jun 6, 2017, 20:21 UTC
Message-ID
<4D6527BB-A642-4C63-B1C2-245BF0E759C9@gmail.com>
In-Reply-To
<20170605191525.666opa3se7gabdbv@sigill.intra.peff.net>
Show 24 quoted lines
> On 05 Jun 2017, at 21:15, Jeff King <peff@peff.net> wrote:
> 
> Commit a1283866b (t5313: test bounds-checks of
> corrupted/malicious pack/idx files, 2016-02-25) added a test
> that requires our corrupted pack index to have two objects.
> The entry for the first one remains untouched, but we
> corrupt the entry for second one. Since the index stores the
> entries in sha1-sorted order, this means that the test must
> make sure that the sha1 of the object we expect to be
> corrupted ("$object") sorts after the other placeholder
> object.
> 
> That commit used the HEAD commit as the placeholder, but the
> script never calls test_tick. That means that the commit
> object (and thus its sha1) depends on the timestamp when the
> test script is run. This usually works in practice, because
> the sha1 of $object starts with "fff". The commit object
> will sort after that only 1 in 4096 times, but when it does
> the test will fail.
> 
> One obvious solution is to add the test_tick call to get a
> deterministic commit sha1. But since we're relying on the
> sort order for the test to function, let's make that very
> explicit by just generating a second blob with a known sha1.
Works for me! Thanks for the explanation!
- Lars
Show 28 quoted lines
> 
> Reported-by: Lars Schneider <larsxschneider@gmail.com>
> Signed-off-by: Jeff King <peff@peff.net>
> ---
> t/t5313-pack-bounds-checks.sh | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/t/t5313-pack-bounds-checks.sh b/t/t5313-pack-bounds-checks.sh
> index a8a587abc..9372508c9 100755
> --- a/t/t5313-pack-bounds-checks.sh
> +++ b/t/t5313-pack-bounds-checks.sh
> @@ -139,7 +139,13 @@ test_expect_success 'bogus offset into v2 extended table' '
> test_expect_success 'bogus offset inside v2 extended table' '
> 	# We need two objects here, so we can plausibly require
> 	# an extended table (if the first object were larger than 2^31).
> -	do_pack "$object $(git rev-parse HEAD)" --index-version=2 &&
> +	#
> +	# Note that the value is important here. We want $object as
> +	# the second entry in sorted-sha1 order. The sha1 of 1485 starts
> +	# with "000", which sorts before that of $object (which starts
> +	# with "fff").
> +	second=$(echo 1485 | git hash-object -w --stdin) &&
> +	do_pack "$object $second" --index-version=2 &&
> 
> 	# We have to make extra room for the table, so we cannot
> 	# just munge in place as usual.
> -- 
> 2.13.1.662.g6e89c999d
Previous: Jeff King
Message 4 of 4 in “t5313-pack-bounds-checks.sh flaky?”
  1. Lars SchneiderJun 5, 2017
  2. Jeff KingJun 5, 2017
  3. t5313: make extended-table test more deterministicJeff King, Jun 5, 2017
  4. Lars SchneiderJun 6, 2017

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.