| commit | c92375d5d959d5b294f84b471f9eccb60d376718 | [log] [tgz] |
|---|---|---|
| author | Dipankar Bhardwaj <[email protected]> | Thu Jul 06 10:01:20 2023 +0000 |
| committer | Android Build Coastguard Worker <[email protected]> | Fri Sep 01 12:07:22 2023 +0000 |
| tree | cf31cea128a4b42f60132cad7d33a2eb80e90b07 | |
| parent | f73b16270d17f6a13378764355d8942333777d28 [diff] |
Canonicalize file path for insertion by legacy apps Apps with legacy external storage can try to create entries in MP for file paths in other apps external private directories by using a non-canonical path in insertion calls. Test: atest LegacyStorageHostTest#testInsertToOtherAppPrivateDirFails Bug: 276898626 (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:3c0f583f5dc3f4d395fa2423ab72dbd902c0c6c8) Merged-In: If4c941c8156f19459b3ec6cbaf705824ecc2ba77 Change-Id: If4c941c8156f19459b3ec6cbaf705824ecc2ba77
diff --git a/src/com/android/providers/media/util/FileUtils.java b/src/com/android/providers/media/util/FileUtils.java index 2e2a3e7..097eca8 100644 --- a/src/com/android/providers/media/util/FileUtils.java +++ b/src/com/android/providers/media/util/FileUtils.java
@@ -1324,9 +1324,17 @@ values.remove(MediaColumns.BUCKET_ID); values.remove(MediaColumns.BUCKET_DISPLAY_NAME); - final String data = values.getAsString(MediaColumns.DATA); + String data = values.getAsString(MediaColumns.DATA); if (TextUtils.isEmpty(data)) return; + try { + data = new File(data).getCanonicalPath(); + values.put(MediaColumns.DATA, data); + } catch (IOException e) { + throw new IllegalArgumentException( + String.format(Locale.ROOT, "Invalid file path:%s in request.", data)); + } + final File file = new File(data); final File fileLower = new File(data.toLowerCase(Locale.ROOT));