diff options
author | Andrey Loskutov <loskutov@gmx.de> | 2015-05-24 09:15:15 +0200 |
---|---|---|
committer | Matthias Sohn <matthias.sohn@sap.com> | 2015-05-25 22:58:14 +0200 |
commit | 4d565f0b5fcb85450bad603950dd17ca29847783 (patch) | |
tree | b472e5fcb8cb4a1dd53ff4a7c3ef9a6d137fcf1f | |
parent | 7ce6abe8584b228c408a733bfca77e9c2f176e00 (diff) | |
download | jgit-4d565f0b5fcb85450bad603950dd17ca29847783.tar.gz jgit-4d565f0b5fcb85450bad603950dd17ca29847783.zip |
Guard agains null ReflogReader if named ref does not exist
Follow up on egit bug 466973.
Change-Id: Idd83d87803e86b25f106dfd725214b5a3ec5171c
Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/api/StashDropCommand.java | 5 | ||||
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java | 12 |
2 files changed, 15 insertions, 2 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/StashDropCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/StashDropCommand.java index 6cbcd06735..7923fd49be 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/api/StashDropCommand.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/StashDropCommand.java @@ -52,6 +52,7 @@ import java.util.List; import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.api.errors.InvalidRefNameException; import org.eclipse.jgit.api.errors.JGitInternalException; +import org.eclipse.jgit.api.errors.RefNotFoundException; import org.eclipse.jgit.errors.LockFailedException; import org.eclipse.jgit.internal.JGitText; import org.eclipse.jgit.internal.storage.file.ReflogWriter; @@ -184,6 +185,10 @@ public class StashDropCommand extends GitCommand<ObjectId> { List<ReflogEntry> entries; try { ReflogReader reader = repo.getReflogReader(R_STASH); + if (reader == null) { + throw new RefNotFoundException(MessageFormat + .format(JGitText.get().refNotResolved, stashRef)); + } entries = reader.getReverseEntries(); } catch (IOException e) { throw new JGitInternalException(JGitText.get().stashDropFailed, e); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java index fa28763f0d..fc7dca2d43 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java @@ -751,8 +751,11 @@ public abstract class Repository implements AutoCloseable { private String resolveReflogCheckout(int checkoutNo) throws IOException { - List<ReflogEntry> reflogEntries = getReflogReader(Constants.HEAD) - .getReverseEntries(); + ReflogReader reader = getReflogReader(Constants.HEAD); + if (reader == null) { + return null; + } + List<ReflogEntry> reflogEntries = reader.getReverseEntries(); for (ReflogEntry entry : reflogEntries) { CheckoutEntry checkout = entry.parseCheckout(); if (checkout != null) @@ -773,6 +776,11 @@ public abstract class Repository implements AutoCloseable { } assert number >= 0; ReflogReader reader = getReflogReader(ref.getName()); + if (reader == null) { + throw new RevisionSyntaxException( + MessageFormat.format(JGitText.get().reflogEntryNotFound, + Integer.valueOf(number), ref.getName())); + } ReflogEntry entry = reader.getReverseEntry(number); if (entry == null) throw new RevisionSyntaxException(MessageFormat.format( |