Browse Source

reftable: increment pointer *after* reading uint16

This fixes timezone reads out of the reflog.

Change-Id: I126d8742e5e904a074c544514180720466164f7c
Signed-off-by: Han-Wen Nienhuys <hanwen@google.com>
tags/v5.5.0.201908280940-m3
Han-Wen Nienhuys 4 years ago
parent
commit
d7ee5aafee

+ 2
- 0
org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/reftable/ReftableTest.java View File

@@ -624,6 +624,8 @@ public class ReftableTest {
assertEquals(ObjectId.zeroId(), lc.getReflogEntry().getOldId());
assertEquals(id(1), lc.getReflogEntry().getNewId());
assertEquals(who, lc.getReflogEntry().getWho());
// compare string too, to catch tz differences.
assertEquals(who.toExternalString(), lc.getReflogEntry().getWho().toExternalString());
assertEquals(msg, lc.getReflogEntry().getComment());

assertTrue(lc.next());

+ 3
- 1
org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/BlockReader.java View File

@@ -557,7 +557,9 @@ class BlockReader {
}

private short readInt16() {
return (short) NB.decodeUInt16(buf, ptr += 2);
short result =(short) NB.decodeUInt16(buf, ptr);
ptr += 2;
return result;
}

private int readVarint32() {

Loading…
Cancel
Save