From 38cebb56be2bfd32aefe0458738a4fba247c0572 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D8=AD=D8=B3=D9=8A=D9=86?= Date: Tue, 1 Jan 2019 16:29:05 +0000 Subject: [PATCH] fix potential NPE when getting last changed timestamp. --- .../com/zeapo/pwdstore/PasswordStore.java | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/zeapo/pwdstore/PasswordStore.java b/app/src/main/java/com/zeapo/pwdstore/PasswordStore.java index d7187749..632e966c 100644 --- a/app/src/main/java/com/zeapo/pwdstore/PasswordStore.java +++ b/app/src/main/java/com/zeapo/pwdstore/PasswordStore.java @@ -444,23 +444,32 @@ public class PasswordStore extends AppCompatActivity { Repository repository = PasswordRepository.getRepository(repoPath); if (repository == null) { + Log.e(TAG, "getLastChangedTimestamp: No git repository"); return -1; } Git git = new Git(repository); - String relativePath = getRelativePath(fullPath, repoPath.getAbsolutePath()).substring(1); - Iterable iterable; + String relativePath = getRelativePath(fullPath, repoPath.getAbsolutePath()) + .substring(1); // Removes leading '/' + Iterator iterator; try { - iterable = git.log().addPath(relativePath).call(); + iterator = git + .log() + .addPath(relativePath) + .call() + .iterator(); } catch (GitAPIException e) { - System.out.println("Exception caught :("); - e.printStackTrace(); + Log.e(TAG, "getLastChangedTimestamp: GITAPIException", e); return -1; } - RevCommit latestCommit = iterable.iterator().next(); - return latestCommit.getCommitTime(); + if (!iterator.hasNext()) { + Log.w(TAG, "getLastChangedTimestamp: No commits for file: " + relativePath); + return -1; + } + + return iterator.next().getCommitTime(); } public void decryptPassword(PasswordItem item) {