All of lore.kernel.org
 help / color / mirror / Atom feed
From: "SZEDER Gábor" <szeder.dev@gmail.com>
To: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
Cc: git@vger.kernel.org, Junio C Hamano <gitster@pobox.com>,
	Sebastian Staudt <koraktor@gmail.com>,
	Josh Steadmon <steadmon@google.com>,
	Johannes Schindelin <Johannes.Schindelin@gmx.de>
Subject: Re: [PATCH 2/2] commit-graph tests: fix cryptic unportable "dd" invocation
Date: Thu, 21 Feb 2019 21:43:10 +0100	[thread overview]
Message-ID: <20190221204310.GS1622@szeder.dev> (raw)
In-Reply-To: <20190221192849.6581-3-avarab@gmail.com>

On Thu, Feb 21, 2019 at 08:28:49PM +0100, Ævar Arnfjörð Bjarmason wrote:
> Change an unportable invocation of "dd" that truncated the
> commit-graph to call Perl's truncate() function instead.
> 
> In POSIX it is unspecified what happens when count=0 is
> provided[1]. The NetBSD "dd" behavior differs from GNU (and seemingly
> other BSDs), which as left this test broken since
> d2b86fbaa1 ("commit-graph: fix buffer read-overflow", 2019-01-15).
> 
> In POSIX the truncate(2) and ftruncate(2) functions are
> portable. We've used the latter since 271421cd34 ("Update partial HTTP
> transfers.", 2005-09-30), but the truncate(1) command-line tool is
> GNU-specific. Thus let's use Perl's version of it. We could also just
> introduce a "test-tool truncate" in the future if we wanted to avoid
> shelling out to perl.
> 
> On Linux and NetBSD we don't need the "if -s $ARGV[0] > $ARGV[1]"
> condition I'm adding. We never have a $zero_pos longer than the file
> being truncated. But let's have that condition to future-proof the
> code, and because "the behavior is undefined if LENGTH is greater than
> the length of the file" (perldoc -f truncate).
> 
> 1. http://pubs.opengroup.org/onlinepubs/9699919799/utilities/dd.html
> 
> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
> ---
>  t/t5318-commit-graph.sh | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/t/t5318-commit-graph.sh b/t/t5318-commit-graph.sh
> index d4bd1522fe..d99bea6cce 100755
> --- a/t/t5318-commit-graph.sh
> +++ b/t/t5318-commit-graph.sh
> @@ -382,7 +382,8 @@ corrupt_graph_and_verify() {
>  	test_when_finished mv commit-graph-backup $objdir/info/commit-graph &&
>  	cp $objdir/info/commit-graph commit-graph-backup &&
>  	printf "$data" | dd of="$objdir/info/commit-graph" bs=1 seek="$pos" conv=notrunc &&
> -	dd of="$objdir/info/commit-graph" bs=1 seek="$zero_pos" count=0 &&
> +	perl -we 'truncate $ARGV[0], $ARGV[1] if -s $ARGV[0] > $ARGV[1]' \
> +		$objdir/info/commit-graph $zero_pos &&

This will make Dscho unhappy :)

Is there a problem with:

  dd if=/dev/null of="$objdir/info/commit-graph" bs=1 seek="$zero_pos"

?

To my understanding of the specs it's well-defined what it should do,
even when $zero_pos is larget than the file size,  it's shorter,
simpler, and doesn't introduce yet another Perl dependency.


>  	generate_zero_bytes $(($orig_size - $zero_pos)) >>"$objdir/info/commit-graph" &&
>  	test_must_fail git commit-graph verify 2>test_err &&
>  	grep -v "^+" test_err >err &&
> -- 
> 2.21.0.rc0.258.g878e2cd30e
> 

  reply	other threads:[~2019-02-21 20:43 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-02-19 23:29 [ANNOUNCE] Git v2.21.0-rc2 Junio C Hamano
2019-02-20  0:43 ` Randall S. Becker
2019-02-20 19:41   ` Junio C Hamano
2019-02-20 20:46     ` Johannes Schindelin
2019-02-21 13:10     ` Duy Nguyen
2019-02-21 23:55       ` brian m. carlson
2019-02-22  9:13         ` Duy Nguyen
2019-02-21 15:54     ` Randall S. Becker
2019-02-21 20:04       ` Junio C Hamano
2019-02-21 21:06       ` SZEDER Gábor
2019-02-21 21:30         ` Randall S. Becker
2019-02-21 19:59     ` Randall S. Becker
2019-02-21 10:46 ` Git for Windows v2.21.0-rc2, was " Johannes Schindelin
2019-02-21 19:28 ` [PATCH 0/2] BSD portability fixes for 2.21.0-rc2 Ævar Arnfjörð Bjarmason
2019-02-22  0:37   ` Josh Steadmon
2019-02-21 19:28 ` [PATCH 1/2] tests: fix unportable "\?" and "\+" regex syntax Ævar Arnfjörð Bjarmason
2019-02-22  5:00   ` Junio C Hamano
2019-02-21 19:28 ` [PATCH 2/2] commit-graph tests: fix cryptic unportable "dd" invocation Ævar Arnfjörð Bjarmason
2019-02-21 20:43   ` SZEDER Gábor [this message]
2019-02-21 22:26     ` Ævar Arnfjörð Bjarmason
2019-02-22 10:50       ` SZEDER Gábor
2019-02-22 14:34         ` Ævar Arnfjörð Bjarmason
2019-02-22 18:30           ` Junio C Hamano
2019-02-22 18:35             ` Todd Zullinger
2019-02-22 19:23               ` [PATCH v3] commit-graph tests: fix " Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190221204310.GS1622@szeder.dev \
    --to=szeder.dev@gmail.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=avarab@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=koraktor@gmail.com \
    --cc=steadmon@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.