git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* [PATCH 0/3] null sha1 in trees
@ 2012-07-28 15:01 Jeff King
  2012-07-28 15:03 ` [PATCH 1/3] diff: do not use null sha1 as a sentinel value Jeff King
                   ` (3 more replies)
  0 siblings, 4 replies; 22+ messages in thread
From: Jeff King @ 2012-07-28 15:01 UTC (permalink / raw)
  To: git; +Cc: Jens Lehmann, Junio C Hamano

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

^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2013-01-07 13:47 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-07-28 15:01 [PATCH 0/3] null sha1 in trees Jeff King
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

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).