[JGIT PATCH] Paper bag fix IndexPack thin pack completion support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



We must write the whole object at the end of the file, not in the
middle of the file on top of some delta (or other) whole object.
Writing in the middle of the file causes subtle corruption as we
cannot unpack a delta.

Signed-off-by: Shawn O. Pearce <spearce@xxxxxxxxxxx>
---

 This is a serious data corruption in IndexPack.  It was introduced
 by me in "Compute packed object entry CRC32 data during IndexPack",
 which is presently in `pu` as 4b8e1c0c.  It would be best if we
 squash this into the commit.

 .../src/org/spearce/jgit/transport/IndexPack.java  |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/org.spearce.jgit/src/org/spearce/jgit/transport/IndexPack.java b/org.spearce.jgit/src/org/spearce/jgit/transport/IndexPack.java
index b35cec3..24a0577 100644
--- a/org.spearce.jgit/src/org/spearce/jgit/transport/IndexPack.java
+++ b/org.spearce.jgit/src/org/spearce/jgit/transport/IndexPack.java
@@ -407,10 +407,10 @@ public class IndexPack {
 			final PackedObjectInfo oe;
 
 			crc.reset();
+			packOut.seek(end);
 			writeWhole(def, typeCode, data);
 			oe = new PackedObjectInfo(end, (int) crc.getValue(), baseId);
 			entries[entryCount++] = oe;
-			packOut.seek(end);
 			end = packOut.getFilePointer();
 
 			resolveChildDeltas(oe.getOffset(), typeCode, data, oe);
-- 
1.5.6.74.g8a5e

-- 
Shawn.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux