summaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit/src
diff options
context:
space:
mode:
authorMarc Strapetz <marc.strapetz@syntevo.com>2011-03-21 08:33:40 +0100
committerMarc Strapetz <marc.strapetz@syntevo.com>2011-03-22 17:33:45 +0100
commita327770433ef4495834c382f62aaeea75c847bbf (patch)
tree164b41a31198336e8b65e1b3f60cf66aa2878bd9 /org.eclipse.jgit/src
parentbf05108d0b1aa7253659237d6848abc72c5e185e (diff)
downloadjgit-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.java17
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);
}
/**