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

Re: [BUG] two-way read-tree can write null sha1s into index

From
Jeff King <peff@peff.net>
Date
Jan 7, 2013, 13:46 UTC
Message-ID
<20130107134654.GA22692@sigill.intra.peff.net>
In-Reply-To
<7vzk0pvqvu.fsf@alter.siamese.dyndns.org>
On Thu, Jan 03, 2013 at 02:33:09PM -0800, Junio C Hamano wrote:
Show 12 quoted lines
> Jeff King <peff@peff.net> writes:
> 
> > Oh, I agree it's insane to try to carry through unmerged entries. I'm
> > just concerned that not all code paths are careful enough to check.
> 
> I would actually be surprised if some code path do assume somebody
> might give them an index with conflicting entries in it and guard
> against it.  We have been coding under the "index must exactly match
> the second tree when three-way unpack_trees() begin" requirement
> since day one.  An conflicted entry will appear as "index and HEAD
> not matching" and will cause reject_merge() early in threeway_merge()
> anyway, no?
Hmm. There is code in threeway_merge to handle a few cases:
        /*
         * We start with cases where the index is allowed to match
         * something other than the head: #14(ALT) and #2ALT, where it
         * is permitted to match the result instead.
         */
        /* #14, #14ALT, #2ALT */
        if (remote && !df_conflict_head && head_match && !remote_match) {
                if (index && !same(index, remote) && !same(index, head))
                        return o->gently ? -1 : reject_merge(index, o);
                return merged_entry(remote, index, o);
        }

but I do not think we have to worry, because we know that the index will never match remote, either (and merged_entry has already been taught to be wary of the conflicted bit, anyway). I'm not entirely clear on how that would get triggered if all of the callers avoid operating on a modified index.

-Peff
Previous: Junio C HamanoNext: Jonathan Nieder
Message 18 of 22 in “null sha1 in trees”
  1. 0/3 null sha1 in treesJeff King, Jul 28, 2012
  2. 1/3 diff: do not use null sha1 as a sentinel valueJeff King, Jul 28, 2012
  3. 2/3 do not write null sha1s to on-disk indexJeff King, Jul 28, 2012
  4. Jonathan NiederDec 29, 2012
  5. Jeff KingDec 29, 2012
  6. Jonathan NiederDec 29, 2012
  7. Jeff KingDec 29, 2012
  8. Jonathan NiederDec 29, 2012
  9. Jeff KingDec 29, 2012
  10. [BUG] two-way read-tree can write null sha1s into indexJeff King, Dec 29, 2012
  11. Junio C HamanoJan 1, 2013
  12. Jeff KingJan 3, 2013
  13. Junio C HamanoJan 3, 2013
  14. Jeff KingJan 3, 2013
  15. Junio C HamanoJan 3, 2013
  16. Jeff KingJan 3, 2013
  17. Junio C HamanoJan 3, 2013
  18. Jeff KingJan 7, 2013
  19. Jonathan NiederDec 29, 2012
  20. 3/3 fsck: detect null sha1 in tree entriesJeff King, Jul 28, 2012
  21. Junio C HamanoJul 29, 2012
  22. Jeff KingJul 30, 2012

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.