Handle extractVolumePath() being null.
In some situations, the data path being migrated may not actually
be a valid /storage/ path, in which case we should gracefully
continue the migration flow without attempting a rename for pending
or trashed items.
Bug: 153825968
Test: atest --test-mapping packages/providers/MediaProvider
Change-Id: I3e4808b369f34d11797793e938ad61596dbc60fe
diff --git a/src/com/android/providers/media/DatabaseHelper.java b/src/com/android/providers/media/DatabaseHelper.java
index 8967629..b0c98ec 100644
--- a/src/com/android/providers/media/DatabaseHelper.java
+++ b/src/com/android/providers/media/DatabaseHelper.java
@@ -806,17 +806,19 @@
// When migrating pending or trashed files, we might need to
// rename them on disk to match new schema
- FileUtils.computeDataFromValues(values,
- new File(FileUtils.extractVolumePath(data)));
- final String recomputedData = values.getAsString(MediaColumns.DATA);
- if (!Objects.equals(data, recomputedData)) {
- try {
- Os.rename(data, recomputedData);
- } catch (ErrnoException e) {
- // We only have one shot to migrate data, so log and
- // keep marching forward
- Log.w(TAG, "Failed to rename " + values + "; continuing");
- FileUtils.computeValuesFromData(values);
+ final String volumePath = FileUtils.extractVolumePath(data);
+ if (volumePath != null) {
+ FileUtils.computeDataFromValues(values, new File(volumePath));
+ final String recomputedData = values.getAsString(MediaColumns.DATA);
+ if (!Objects.equals(data, recomputedData)) {
+ try {
+ Os.rename(data, recomputedData);
+ } catch (ErrnoException e) {
+ // We only have one shot to migrate data, so log and
+ // keep marching forward
+ Log.w(TAG, "Failed to rename " + values + "; continuing");
+ FileUtils.computeValuesFromData(values);
+ }
}
}