git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Jeff King <peff@peff.net>
To: git@vger.kernel.org
Cc: Jens Lehmann <Jens.Lehmann@web.de>, Junio C Hamano <gitster@pobox.com>
Subject: [PATCH 0/3] null sha1 in trees
Date: Sat, 28 Jul 2012 11:01:32 -0400	[thread overview]
Message-ID: <20120728150132.GA25042@sigill.intra.peff.net> (raw)

I recently came across a tree in the wild that had a submodule entry
whose sha1 was the null sha1 (i.e., all-zeros). It triggered an
interesting bug in the diff code, which is fixed by patch 1.

Unfortunately, I have no clue how this tree came about. I'm assuming it
was simply a bug somewhere in git, where the entry should have had
another sha1, or possibly been removed from the tree entirely.. Patches
2 and 3 tighten up our checks for null sha1s in a few places, which
might help detect such a bug earlier.

I assume I have never seen this with a non-submodule entry because such
a tree would fail the usual connectivity checks during fsck or during a
transfer. However, since we don't enforce connectivity on submodule
entries, nothing blocked the creation and propagation of such an entry.

I'm not at liberty to share the repository in question, but if anybody
has specific things to look for, I'd be happy to investigate further.

The patches are:

  [1/3]: diff: do not use null sha1 as a sentinel value

This is the actual bug-fix, and I hope is obviously a good thing to do.

  [2/3]: do not write null sha1s to on-disk index

This one tries to tighten our writing a bit. There are unfortunately a
lot of different code paths that create trees in git. I hope by catching
the index write as a choke-point, we can prevent bugs from spreading.
However, there are a lot of tree-writers that update an index in-core
and then write a tree out directly. I would not be surprised if this
does not catch the bug by itself, but I think it is a step in the right
direction.

  [3/3]: fsck: detect null sha1 in tree entries

And this one will at least let us notice the bug once it has happened.
And if transfer.fsckObjects is set, it will prevent bogus trees from
passing between repositories, containing any damage.

-Peff

             reply	other threads:[~2012-07-28 15:02 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-28 15:01 Jeff King [this message]
2012-07-28 15:03 ` [PATCH 1/3] diff: do not use null sha1 as a sentinel value Jeff King
2012-07-28 15:05 ` [PATCH 2/3] do not write null sha1s to on-disk index Jeff King
2012-12-29 10:03   ` Jonathan Nieder
2012-12-29 10:27     ` Jeff King
2012-12-29 10:34       ` Jonathan Nieder
2012-12-29 10:42         ` Jeff King
2012-12-29 10:51           ` Jonathan Nieder
2012-12-29 11:05         ` Jeff King
2012-12-29 20:51           ` [BUG] two-way read-tree can write null sha1s into index Jeff King
2013-01-01 22:24             ` Junio C Hamano
2013-01-03  8:37               ` Jeff King
2013-01-03 15:34                 ` Junio C Hamano
2013-01-03 20:23                   ` Jeff King
2013-01-03 20:34                     ` Junio C Hamano
2013-01-03 20:36                       ` Jeff King
2013-01-03 22:33                         ` Junio C Hamano
2013-01-07 13:46                           ` Jeff King
2012-12-29 10:40       ` [PATCH 2/3] do not write null sha1s to on-disk index Jonathan Nieder
2012-07-28 15:06 ` [PATCH 3/3] fsck: detect null sha1 in tree entries Jeff King
2012-07-29 22:15 ` [PATCH 0/3] null sha1 in trees Junio C Hamano
2012-07-30 15:42   ` Jeff King

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

  List information: http://vger.kernel.org/majordomo-info.html

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

  git send-email \
    --in-reply-to=20120728150132.GA25042@sigill.intra.peff.net \
    --to=peff@peff.net \
    --cc=Jens.Lehmann@web.de \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).