diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2022-07-14 18:48:10 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2022-07-14 18:48:10 +0000 |
commit | 6bdf6bfec0a23c1a0a9e2e31bbd89b61350313e5 (patch) | |
tree | f3bc0082caf2eea2a9ba05885d1b2ea74882fe2d | |
parent | eb2ad873d79bec0aa9d666b6c5b958d24e4bfe9e (diff) | |
parent | 4f46f26267ceff5e6f37621ae2ede38a80d5ffde (diff) | |
download | MediaProvider-6bdf6bfec0a23c1a0a9e2e31bbd89b61350313e5.tar.gz |
Merge "isDataOrObbPath blocks access to Android/[data|obb] dirs only" into sc-v2-dev
-rw-r--r-- | src/com/android/providers/media/util/FileUtils.java | 5 | ||||
-rw-r--r-- | tests/src/com/android/providers/media/util/FileUtilsTest.java | 13 |
2 files changed, 12 insertions, 6 deletions
diff --git a/src/com/android/providers/media/util/FileUtils.java b/src/com/android/providers/media/util/FileUtils.java index 5c5e6b1c3..a19d1a950 100644 --- a/src/com/android/providers/media/util/FileUtils.java +++ b/src/com/android/providers/media/util/FileUtils.java @@ -973,12 +973,13 @@ public class FileUtils { "(?i)^Android/(?:data|media|obb)/([^/]+)(/?.*)?"); /** - * Regex that matches Android/obb or Android/data path. + * Regex that matches exactly Android/obb or Android/data or Android/obb/ or Android/data/ + * suffix absolute file path. */ private static final Pattern PATTERN_DATA_OR_OBB_PATH = Pattern.compile( "(?i)^/storage/[^/]+/(?:[0-9]+/)?" + PROP_CROSS_USER_ROOT_PATTERN - + "Android/(?:data|obb)(?:/.*)?$"); + + "Android/(?:data|obb)/?$"); /** * Regex that matches Android/obb or Android/data relative path (as defined in diff --git a/tests/src/com/android/providers/media/util/FileUtilsTest.java b/tests/src/com/android/providers/media/util/FileUtilsTest.java index 3501245db..ed0f5b6a1 100644 --- a/tests/src/com/android/providers/media/util/FileUtilsTest.java +++ b/tests/src/com/android/providers/media/util/FileUtilsTest.java @@ -904,11 +904,16 @@ public class FileUtilsTest { assertThat(isDataOrObbPath("/storage/emulated/0/Android/obb")).isTrue(); assertThat(isDataOrObbPath("/storage/ABCD-1234/Android/data")).isTrue(); assertThat(isDataOrObbPath("/storage/ABCD-1234/Android/obb")).isTrue(); - assertThat(isDataOrObbPath("/storage/emulated/0/Android/data/foo")).isTrue(); - assertThat(isDataOrObbPath("/storage/emulated/0/Android/obb/foo")).isTrue(); - assertThat(isDataOrObbPath("/storage/ABCD-1234/Android/data/foo")).isTrue(); - assertThat(isDataOrObbPath("/storage/ABCD-1234/Android/obb/foo")).isTrue(); + assertThat(isDataOrObbPath("/storage/emulated/0/Android/data/foo")).isFalse(); + assertThat(isDataOrObbPath("/storage/emulated/0/Android/obb/foo")).isFalse(); + assertThat(isDataOrObbPath("/storage/ABCD-1234/Android/data/foo")).isFalse(); + assertThat(isDataOrObbPath("/storage/ABCD-1234/Android/obb/foo")).isFalse(); + assertThat(isDataOrObbPath("/storage/emulated/10/Android/obb/foo")).isFalse(); + assertThat(isDataOrObbPath("/storage/emulated//Android/obb/foo")).isFalse(); + assertThat(isDataOrObbPath("/storage/emulated//Android/obb")).isFalse(); + assertThat(isDataOrObbPath("/storage/emulated/0//Android/obb")).isFalse(); + assertThat(isDataOrObbPath("/storage/emulated/0//Android/obb/foo")).isFalse(); assertThat(isDataOrObbPath("/storage/emulated/0/Android/")).isFalse(); assertThat(isDataOrObbPath("/storage/emulated/0/Android/media/")).isFalse(); assertThat(isDataOrObbPath("/storage/ABCD-1234/Android/media/")).isFalse(); |