Remove ExternalStorageProvider special case for having media_rw

ExternalStorageProvider needs to access unreliable USB OTG volumes.
It will have the MANAGE_EXTERNAL_STORAGE permission which will give it
the external_storage gid which will in turn give it access to
/mnt/media_rw/<volume> paths where 'volume' is a volume mount that is
not visible to other apps, so does not have a FUSE volume stacked
ontop.

Test: ExternalStorageProvider has the external_storage gid
Bug: 144914977
Change-Id: Ie68d3a5afcb137b034779137cdfbf4d8b6d60c47
This commit is contained in:
Zim
2020-01-24 17:37:20 +00:00
parent da8df98634
commit 86f98cefe7

View File

@@ -1551,8 +1551,7 @@ public final class ProcessList {
}
}
private int[] computeGidsForProcess(int mountExternal, int uid, int[] permGids,
String packageName) {
private int[] computeGidsForProcess(int mountExternal, int uid, int[] permGids) {
ArrayList<Integer> gidList = new ArrayList<>(permGids.length + 5);
final int sharedAppGid = UserHandle.getSharedAppGid(UserHandle.getAppId(uid));
@@ -1583,10 +1582,6 @@ public final class ProcessList {
// PublicVolumes: /mnt/media_rw/<volume>
gidList.add(Process.MEDIA_RW_GID);
}
if (packageName.equals("com.android.externalstorage")) {
// Allows access to 'unreliable' (USB OTG) volumes via SAF
gidList.add(Process.MEDIA_RW_GID);
}
int[] gidArray = new int[gidList.size()];
for (int i = 0; i < gidArray.length; i++) {
@@ -1669,7 +1664,7 @@ public final class ProcessList {
}
}
gids = computeGidsForProcess(mountExternal, uid, permGids, app.info.packageName);
gids = computeGidsForProcess(mountExternal, uid, permGids);
}
app.mountMode = mountExternal;
checkSlow(startTime, "startProcess: building args");