Fixes PM.grantImplicitAccess for multi-user
This change fixes the security check in grantImplicitAccess to support the case that the system user does not have an installed contacts provider. Fixes: 169684344 Test: atest android.provider.cts.contacts.ContactsContract_DirectoryTest Change-Id: I2c80513a5dffa7ad92963e376ea85217f127f39a
This commit is contained in:
@@ -25434,7 +25434,7 @@ public class PackageManagerService extends IPackageManager.Stub
|
|||||||
// This API is exposed temporarily to only the contacts provider. (b/158688602)
|
// This API is exposed temporarily to only the contacts provider. (b/158688602)
|
||||||
final int callingUid = Binder.getCallingUid();
|
final int callingUid = Binder.getCallingUid();
|
||||||
ProviderInfo contactsProvider = resolveContentProviderInternal(
|
ProviderInfo contactsProvider = resolveContentProviderInternal(
|
||||||
ContactsContract.AUTHORITY, 0, UserHandle.USER_SYSTEM);
|
ContactsContract.AUTHORITY, 0, UserHandle.getUserId(callingUid));
|
||||||
if (contactsProvider == null || contactsProvider.applicationInfo == null
|
if (contactsProvider == null || contactsProvider.applicationInfo == null
|
||||||
|| !UserHandle.isSameApp(contactsProvider.applicationInfo.uid, callingUid)) {
|
|| !UserHandle.isSameApp(contactsProvider.applicationInfo.uid, callingUid)) {
|
||||||
throw new SecurityException(callingUid + " is not allow to call grantImplicitAccess");
|
throw new SecurityException(callingUid + " is not allow to call grantImplicitAccess");
|
||||||
|
|||||||
Reference in New Issue
Block a user