Merge branch 'dev/11/fp3/security-aosp-rvc-release' into int/11/fp3
* dev/11/fp3/security-aosp-rvc-release:
isDataOrObbPath blocks access to Android/[data|obb] dirs only
Change-Id: Id5f91c822aa5d239a99c201796f9929bef9a1954
diff --git a/src/com/android/providers/media/util/FileUtils.java b/src/com/android/providers/media/util/FileUtils.java
index 4d8b094..c9a0a02 100644
--- a/src/com/android/providers/media/util/FileUtils.java
+++ b/src/com/android/providers/media/util/FileUtils.java
@@ -887,10 +887,11 @@
"(?i)^/storage/[^/]+/(?:[0-9]+/)?Android/(?:data|media|obb|sandbox)/([^/]+)(/?.*)?");
/**
- * 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]+/)?Android/(?:data|obb)(?:/.*)?$");
+ "(?i)^/storage/[^/]+/(?:[0-9]+/)?Android/(?:data|obb)/?$");
/**
* Regex that matches paths in all well-known package-specific relative directory
diff --git a/tests/src/com/android/providers/media/util/FileUtilsTest.java b/tests/src/com/android/providers/media/util/FileUtilsTest.java
index 477b7e6..6b120c0 100644
--- a/tests/src/com/android/providers/media/util/FileUtilsTest.java
+++ b/tests/src/com/android/providers/media/util/FileUtilsTest.java
@@ -696,11 +696,16 @@
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();