aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrey Loskutov <loskutov@gmx.de>2015-05-24 09:15:15 +0200
committerMatthias Sohn <matthias.sohn@sap.com>2015-05-25 22:58:14 +0200
commit4d565f0b5fcb85450bad603950dd17ca29847783 (patch)
treeb472e5fcb8cb4a1dd53ff4a7c3ef9a6d137fcf1f
parent7ce6abe8584b228c408a733bfca77e9c2f176e00 (diff)
downloadjgit-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.java5
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java12
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(