diff options
-rw-r--r-- | services/backup/java/com/android/server/backup/DataChangedJournal.java | 9 | ||||
-rw-r--r-- | services/tests/servicestests/src/com/android/server/backup/DataChangedJournalTest.java | 10 |
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()); + } } |