summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2019-11-29 19:34:45 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2019-11-29 19:34:45 +0000
commitc850bdbec58228e8f441133378158cf41d385718 (patch)
tree8955606ad26857b9e867daeba6866ba143df3d3f
parent0d20abc88d69304cf5e5364e0a1dbf040dbe7dcc (diff)
parentd1b4b81680d90e857bd38e76fe9919802bc4c19c (diff)
Merge "Fix NPE while reading leftover journals in BMS"
-rw-r--r--services/backup/java/com/android/server/backup/DataChangedJournal.java9
-rw-r--r--services/tests/servicestests/src/com/android/server/backup/DataChangedJournalTest.java10
2 files changed, 18 insertions, 1 deletions
diff --git a/services/backup/java/com/android/server/backup/DataChangedJournal.java b/services/backup/java/com/android/server/backup/DataChangedJournal.java
index 498185c9a645..e75eb731a73e 100644
--- a/services/backup/java/com/android/server/backup/DataChangedJournal.java
+++ b/services/backup/java/com/android/server/backup/DataChangedJournal.java
@@ -17,6 +17,7 @@
package com.android.server.backup;
import android.annotation.Nullable;
+import android.util.Slog;
import java.io.BufferedInputStream;
import java.io.DataInputStream;
@@ -36,6 +37,7 @@ import java.util.function.Consumer;
* reboot.
*/
public class DataChangedJournal {
+ private static final String TAG = "DataChangedJournal";
private static final String FILE_NAME_PREFIX = "journal";
/**
@@ -139,7 +141,12 @@ public class DataChangedJournal {
*/
static ArrayList<DataChangedJournal> listJournals(File journalDirectory) {
ArrayList<DataChangedJournal> journals = new ArrayList<>();
- for (File file : journalDirectory.listFiles()) {
+ File[] journalFiles = journalDirectory.listFiles();
+ if (journalFiles == null) {
+ Slog.w(TAG, "Failed to read journal files");
+ return journals;
+ }
+ for (File file : journalFiles) {
journals.add(new DataChangedJournal(file));
}
return journals;
diff --git a/services/tests/servicestests/src/com/android/server/backup/DataChangedJournalTest.java b/services/tests/servicestests/src/com/android/server/backup/DataChangedJournalTest.java
index f588c4fdb060..4e7fe44b2b76 100644
--- a/services/tests/servicestests/src/com/android/server/backup/DataChangedJournalTest.java
+++ b/services/tests/servicestests/src/com/android/server/backup/DataChangedJournalTest.java
@@ -18,6 +18,9 @@ package com.android.server.backup;
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.when;
+import static org.testng.Assert.assertEquals;
+
import android.platform.test.annotations.Presubmit;
import androidx.test.filters.SmallTest;
@@ -50,6 +53,7 @@ public class DataChangedJournalTest {
@Rule public TemporaryFolder mTemporaryFolder = new TemporaryFolder();
@Mock private Consumer<String> mConsumer;
+ @Mock private File invalidFile;
private File mFile;
private DataChangedJournal mJournal;
@@ -131,4 +135,10 @@ public class DataChangedJournalTest {
public void toString_isSameAsFileToString() throws Exception {
assertThat(mJournal.toString()).isEqualTo(mFile.toString());
}
+
+ public void listJournals_invalidJournalFile_returnsEmptyList() throws Exception {
+ when(invalidFile.listFiles()).thenReturn(null);
+
+ assertEquals(0, DataChangedJournal.listJournals(invalidFile).size());
+ }
}