Merge "Exempt connected apps from intent filter enforcement to itself" into tm-dev am: d8320ce1ca am: 375950b3f1

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18685503

Change-Id: I7d043de1ae410aa9af8ca33babca17cadbcf388e
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
John Wu
2022-06-01 17:27:11 +00:00
committed by Automerger Merge Worker

View File

@@ -36,6 +36,7 @@ import static com.android.server.pm.PackageManagerService.TAG;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.app.ActivityManager;
import android.compat.annotation.ChangeId;
import android.compat.annotation.EnabledSince;
import android.content.Context;
@@ -1089,12 +1090,6 @@ public class PackageManagerServiceUtils {
PlatformCompat compat, ComponentResolverApi resolver,
List<ResolveInfo> resolveInfos, boolean isReceiver,
Intent intent, String resolvedType, int filterCallingUid) {
// Do not enforce filter matching when the caller is system or root.
// see ActivityManager#checkComponentPermission(String, int, int, boolean)
if (filterCallingUid == Process.ROOT_UID || filterCallingUid == Process.SYSTEM_UID) {
return;
}
final Printer logPrinter = DEBUG_INTENT_MATCHING
? new LogPrinter(Log.VERBOSE, TAG, Log.LOG_ID_SYSTEM)
: null;
@@ -1102,8 +1097,9 @@ public class PackageManagerServiceUtils {
for (int i = resolveInfos.size() - 1; i >= 0; --i) {
final ComponentInfo info = resolveInfos.get(i).getComponentInfo();
// Do not enforce filter matching when the caller is the same app
if (info.applicationInfo.uid == filterCallingUid) {
// Do not enforce filter matching when the caller is system, root, or the same app
if (ActivityManager.checkComponentPermission(null, filterCallingUid,
info.applicationInfo.uid, false) == PackageManager.PERMISSION_GRANTED) {
continue;
}