Re: heads-up: git-index-pack in "next" is broken

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Nicolas Pitre
Date: Tuesday, October 17, 2006 - 2:21 pm

On Tue, 17 Oct 2006, Linus Torvalds wrote:


Because offsets into packs are expressed as unsigned long everywhere 
else (except in the current pack index on-disk format).


But they do.  Please consider this code:

	case OBJ_OFS_DELTA:
		memset(delta_base, 0, sizeof(*delta_base));
		c = pack_base[pos++];
		base_offset = c & 127;
		while (c & 128) {
			base_offset += 1;
			if (!base_offset || base_offset & ~(~0UL >> 7))
				bad_object(offset, "offset value overflow for delta base object");
			if (pos >= pack_limit)
				bad_object(offset, "object extends past end of pack");
			c = pack_base[pos++];
			base_offset = (base_offset << 7) + (c & 127);
		}
		delta_base->offset = offset - base_offset;
		if (delta_base->offset >= offset)
			bad_object(offset, "delta base offset is out of bound");
		break;

Do you see anything inerently wrong in this code?  The above is already 
64-bit ready such that it'll just work on 64-bit archs and will display 
a sensible message if a 32-bit arch encounter a pack larger than 4GB.  
But the on-disk pack format has no limitation what so ever.


I beg to differ.  Please reconsider in light of the above.


This union should be looked at just like a sortable hash pointing to a 
base object so that deltas with the same base object can be sorted 
together.  And the field to use is well defined of course: deltas with 
sha1 to base use the sha1 member, deltas with offset to base use the 
offset member.  This hash, together with the delta type, constitute a 
tuple guaranteed to be unique so there can't be any confusion.


I don't see why not.


Nicolas
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
heads-up: git-index-pack in &quot;next&quot; is broken, Junio C Hamano, (Mon Oct 16, 9:55 pm)
Re: heads-up: git-index-pack in &quot;next&quot; is broken, Junio C Hamano, (Tue Oct 17, 9:07 am)
Re: heads-up: git-index-pack in &quot;next&quot; is broken, Nicolas Pitre, (Tue Oct 17, 10:00 am)
Re: heads-up: git-index-pack in &quot;next&quot; is broken, Junio C Hamano, (Tue Oct 17, 11:11 am)
Re: heads-up: git-index-pack in &quot;next&quot; is broken, Nicolas Pitre, (Tue Oct 17, 11:47 am)
Re: heads-up: git-index-pack in &quot;next&quot; is broken, Sergey Vlasov, (Tue Oct 17, 12:36 pm)
Re: heads-up: git-index-pack in &quot;next&quot; is broken, Junio C Hamano, (Tue Oct 17, 1:10 pm)
Re: heads-up: git-index-pack in &quot;next&quot; is broken, Linus Torvalds, (Tue Oct 17, 1:51 pm)
Re: heads-up: git-index-pack in "next" is broken, Nicolas Pitre, (Tue Oct 17, 2:21 pm)
Re: heads-up: git-index-pack in &quot;next&quot; is broken, Linus Torvalds, (Tue Oct 17, 2:46 pm)
Re: heads-up: git-index-pack in &quot;next&quot; is broken, Junio C Hamano, (Tue Oct 17, 2:54 pm)
Re: heads-up: git-index-pack in &quot;next&quot; is broken, Linus Torvalds, (Tue Oct 17, 5:57 pm)
Re: heads-up: git-index-pack in &quot;next&quot; is broken, Junio C Hamano, (Tue Oct 17, 6:30 pm)
Re: heads-up: git-index-pack in &quot;next&quot; is broken, Linus Torvalds, (Tue Oct 17, 8:12 pm)
Re: heads-up: git-index-pack in &quot;next&quot; is broken, Junio C Hamano, (Tue Oct 17, 9:16 pm)
Re: heads-up: git-index-pack in &quot;next&quot; is broken, Junio C Hamano, (Tue Oct 17, 10:07 pm)
Re: heads-up: git-index-pack in &quot;next&quot; is broken, Davide Libenzi, (Tue Oct 17, 11:09 pm)
Re: heads-up: git-index-pack in &quot;next&quot; is broken, Johannes Schindelin, (Wed Oct 18, 3:00 am)
Re: heads-up: git-index-pack in &quot;next&quot; is broken, Linus Torvalds, (Wed Oct 18, 7:56 am)
Re: heads-up: git-index-pack in &quot;next&quot; is broken, Davide Libenzi, (Wed Oct 18, 9:17 am)
Re: heads-up: git-index-pack in &quot;next&quot; is broken, Linus Torvalds, (Wed Oct 18, 9:52 am)
Re: heads-up: git-index-pack in &quot;next&quot; is broken, Davide Libenzi, (Wed Oct 18, 2:21 pm)
Re: heads-up: git-index-pack in &quot;next&quot; is broken, Linus Torvalds, (Wed Oct 18, 2:48 pm)
Re: heads-up: git-index-pack in &quot;next&quot; is broken, Davide Libenzi, (Wed Oct 18, 3:34 pm)