Merge "bypass INTERACT_ACROSS_USERS permission check when binding to singleton service for non-0 userId" into rvc-dev am: 4cdb5ddeb4

Original change: undetermined

Change-Id: I3342709af499d08c6a26e3d34cd1ecc7b5011df8
This commit is contained in:
Songchun Fan
2020-06-01 21:35:45 +00:00
committed by Automerger Merge Worker

View File

@@ -2460,16 +2460,22 @@ public final class ActiveServices {
&& mAm.isValidSingletonCall(callingUid, sInfo.applicationInfo.uid)) { && mAm.isValidSingletonCall(callingUid, sInfo.applicationInfo.uid)) {
userId = 0; userId = 0;
smap = getServiceMapLocked(0); smap = getServiceMapLocked(0);
ResolveInfo rInfoForUserId0 = // Bypass INTERACT_ACROSS_USERS permission check
mAm.getPackageManagerInternalLocked().resolveService(service, final long token = Binder.clearCallingIdentity();
resolvedType, flags, userId, callingUid); try {
if (rInfoForUserId0 == null) { ResolveInfo rInfoForUserId0 =
Slog.w(TAG_SERVICE, mAm.getPackageManagerInternalLocked().resolveService(service,
"Unable to resolve service " + service + " U=" + userId resolvedType, flags, userId, callingUid);
+ ": not found"); if (rInfoForUserId0 == null) {
return null; Slog.w(TAG_SERVICE,
"Unable to resolve service " + service + " U=" + userId
+ ": not found");
return null;
}
sInfo = rInfoForUserId0.serviceInfo;
} finally {
Binder.restoreCallingIdentity(token);
} }
sInfo = rInfoForUserId0.serviceInfo;
} }
sInfo = new ServiceInfo(sInfo); sInfo = new ServiceInfo(sInfo);
sInfo.applicationInfo = mAm.getAppInfoForUser(sInfo.applicationInfo, userId); sInfo.applicationInfo = mAm.getAppInfoForUser(sInfo.applicationInfo, userId);