diff options
| author | 2023-02-06 15:21:25 +0000 | |
|---|---|---|
| committer | 2023-02-06 15:37:23 +0000 | |
| commit | b887d1903822d8b56f81c62a6c3f54e36c2cb3af (patch) | |
| tree | 47b316784d42edad614ef8c51c4c3780eaf207b3 | |
| parent | ede4a8a9d4585d474f70bff710cbaa9ad0274243 (diff) | |
Fix getStorageVolumes to return public volumes visible to
userIdSharingMedia with.
In ag/16708639, getStorageVolumes was modified to return volumes
mounted on the calling user.
Clone profile is an exception to this rule, as by definition, it
should access the public volumes available to its parent user.
To fix this we allow a volume to be returned if:
1. Its a public volume and
2. Its visible to the userId the calling user shares media with.
Bug: b/265772860 b/265724297 b/260950918
Test: atest AppCloningHostTest
Change-Id: I84a57ea13b08a5f1cd0095e944aeacc3434df4de
| -rw-r--r-- | services/core/java/com/android/server/StorageManagerService.java | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java index fdfcfa3b43c9..723df0e25ddf 100644 --- a/services/core/java/com/android/server/StorageManagerService.java +++ b/services/core/java/com/android/server/StorageManagerService.java @@ -3851,8 +3851,12 @@ class StorageManagerService extends IStorageManager.Stub // Return both read only and write only volumes. When includeSharedProfile is // true, all the volumes of userIdSharingMedia should be returned when queried // from the user it shares media with + // Public Volumes will be also be returned if visible to the + // userIdSharingMedia with. match = vol.isVisibleForUser(userId) || (!vol.isVisible() && includeInvisible && vol.getPath() != null) + || (vol.getType() == VolumeInfo.TYPE_PUBLIC + && vol.isVisibleForUser(userIdSharingMedia)) || (includeSharedProfile && vol.isVisibleForUser(userIdSharingMedia)); } if (!match) continue; |