diff options
author | Marc Strapetz <marc.strapetz@syntevo.com> | 2011-03-21 08:33:40 +0100 |
---|---|---|
committer | Marc Strapetz <marc.strapetz@syntevo.com> | 2011-03-22 17:33:45 +0100 |
commit | a327770433ef4495834c382f62aaeea75c847bbf (patch) | |
tree | 164b41a31198336e8b65e1b3f60cf66aa2878bd9 /org.eclipse.jgit/src | |
parent | bf05108d0b1aa7253659237d6848abc72c5e185e (diff) | |
download | jgit-a327770433ef4495834c382f62aaeea75c847bbf.tar.gz jgit-a327770433ef4495834c382f62aaeea75c847bbf.zip |
Fix: possible IndexOutOfBoundsException in ReflogReader
java.lang.IndexOutOfBoundsException
at java.nio.ByteBuffer.wrap(ByteBuffer.java:352)
at org.eclipse.jgit.util.RawParseUtils.decodeNoFallback(RawParseUtils.java:913)
at org.eclipse.jgit.util.RawParseUtils.decode(RawParseUtils.java:880)
at org.eclipse.jgit.util.RawParseUtils.decode(RawParseUtils.java:839)
at org.eclipse.jgit.storage.file.ReflogReader$Entry.<init>(ReflogReader.java:102)
at org.eclipse.jgit.storage.file.ReflogReader.getReverseEntries(ReflogReader.java:183)
at org.eclipse.jgit.storage.file.ReflogReader.getReverseEntries(ReflogReader.java:162)
Change-Id: I22a18bc7193962e5018c40a75337f9976b585c40
Diffstat (limited to 'org.eclipse.jgit/src')
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ReflogReader.java | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ReflogReader.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ReflogReader.java index 75214308d6..ea2f73895d 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ReflogReader.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ReflogReader.java @@ -88,18 +88,13 @@ public class ReflogReader { JGitText.get().rawLogMessageDoesNotParseAsLogEntry); } who = RawParseUtils.parsePersonIdentOnly(raw, pos); - int p0 = RawParseUtils.next(raw, pos, '\t'); // personident has no - // \t - if (p0 == -1) { - throw new IllegalArgumentException( - JGitText.get().rawLogMessageDoesNotParseAsLogEntry); - } - int p1 = RawParseUtils.nextLF(raw, p0); - if (p1 == -1) { - throw new IllegalArgumentException( - JGitText.get().rawLogMessageDoesNotParseAsLogEntry); + int p0 = RawParseUtils.next(raw, pos, '\t'); + if (p0 >= raw.length) + comment = ""; // personident has no \t, no comment present + else { + int p1 = RawParseUtils.nextLF(raw, p0); + comment = p1 > p0 ? RawParseUtils.decode(raw, p0, p1 - 1) : ""; } - comment = RawParseUtils.decode(raw, p0, p1 - 1); } /** |