Make package handling in openContentUri more robust

Test: manual

bug: 185455561

Change-Id: Id66c5d41e2c456a8d68c23d10ccd8e86b539e6a5
This commit is contained in:
Svet Ganov
2021-06-02 01:45:11 +00:00
committed by Svetoslav Ganov
parent 21eeb8c976
commit 2d69ab87f0

View File

@@ -6216,8 +6216,20 @@ public class ActivityManagerService extends IActivityManager.Stub
// signature we just use the first package in the UID. For shared
// UIDs we may blame the wrong app but that is Okay as they are
// in the same security/privacy sandbox.
final AndroidPackage androidPackage = mPackageManagerInt
.getPackage(Binder.getCallingUid());
final int uid = Binder.getCallingUid();
// Here we handle some of the special UIDs (mediaserver, systemserver, etc)
final String packageName = AppOpsManager.resolvePackageName(uid,
/*packageName*/ null);
final AndroidPackage androidPackage;
if (packageName != null) {
androidPackage = mPackageManagerInt.getPackage(packageName);
} else {
androidPackage = mPackageManagerInt.getPackage(uid);
}
if (androidPackage == null) {
Log.e(TAG, "Cannot find package for uid: " + uid);
return null;
}
final AttributionSource attributionSource = new AttributionSource(
Binder.getCallingUid(), androidPackage.getPackageName(), null);
pfd = cph.provider.openFile(attributionSource, uri, "r", null);