Merge changes from topic "bp-real-calling-(p|u)id-merge-first" into cw-f-dev
* changes: [automerger] [RESTRICT AUTOMERGE] Pass correct realCallingUid to startActivity() from startActivityInPackage am:216f65bf60am:0984de50e3[automerger] [RESTRICT AUTOMERGE] Pass correct realCallingUid to startActivity() from startActivityInPackage am:216f65bf60[RESTRICT AUTOMERGE] Pass correct realCallingUid to startActivity() from startActivityInPackage
This commit is contained in:
@@ -4746,9 +4746,9 @@ public final class ActivityManagerService extends ActivityManagerNative
|
||||
userId, false, ALLOW_FULL_ONLY, "startActivityInPackage", null);
|
||||
|
||||
// TODO: Switch to user app stacks here.
|
||||
int ret = mActivityStarter.startActivityMayWait(null, uid, callingPackage, intent,
|
||||
resolvedType, null, null, resultTo, resultWho, requestCode, startFlags,
|
||||
null, null, null, bOptions, false, userId, container, inTask);
|
||||
int ret = mActivityStarter.startActivityMayWait(null, uid, ActivityStarter.PID_NULL, uid,
|
||||
callingPackage, intent, resolvedType, null, null, resultTo, resultWho, requestCode,
|
||||
startFlags, null, null, null, bOptions, false, userId, container, inTask);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -4768,12 +4768,19 @@ public final class ActivityManagerService extends ActivityManagerNative
|
||||
final int startActivitiesInPackage(int uid, String callingPackage,
|
||||
Intent[] intents, String[] resolvedTypes, IBinder resultTo,
|
||||
Bundle bOptions, int userId) {
|
||||
return startActivitiesInPackage(uid, ActivityStarter.PID_NULL, UserHandle.USER_NULL,
|
||||
callingPackage, intents, resolvedTypes, resultTo, bOptions, userId);
|
||||
}
|
||||
|
||||
final int startActivitiesInPackage(int uid, int realCallingPid, int realCallingUid,
|
||||
String callingPackage, Intent[] intents, String[] resolvedTypes,
|
||||
IBinder resultTo, Bundle bOptions, int userId) {
|
||||
|
||||
userId = mUserController.handleIncomingUser(Binder.getCallingPid(), Binder.getCallingUid(),
|
||||
userId, false, ALLOW_FULL_ONLY, "startActivityInPackage", null);
|
||||
// TODO: Switch to user app stacks here.
|
||||
int ret = mActivityStarter.startActivities(null, uid, callingPackage, intents, resolvedTypes,
|
||||
resultTo, bOptions, userId);
|
||||
int ret = mActivityStarter.startActivities(null, uid, realCallingPid, realCallingUid,
|
||||
callingPackage, intents, resolvedTypes, resultTo, bOptions, userId);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@@ -127,6 +127,8 @@ import java.util.ArrayList;
|
||||
* an activity and associated task and stack.
|
||||
*/
|
||||
class ActivityStarter {
|
||||
public static final int PID_NULL = 0;
|
||||
|
||||
private static final String TAG = TAG_WITH_CLASS_NAME ? "ActivityStarter" : TAG_AM;
|
||||
private static final String TAG_RESULTS = TAG + POSTFIX_RESULTS;
|
||||
private static final String TAG_FOCUS = TAG + POSTFIX_FOCUS;
|
||||
@@ -713,12 +715,24 @@ class ActivityStarter {
|
||||
UserHandle.CURRENT);
|
||||
}
|
||||
|
||||
final int startActivityMayWait(IApplicationThread caller, int callingUid, String callingPackage,
|
||||
Intent intent, String resolvedType, IVoiceInteractionSession voiceSession,
|
||||
IVoiceInteractor voiceInteractor, IBinder resultTo, String resultWho, int requestCode,
|
||||
int startFlags, ProfilerInfo profilerInfo, IActivityManager.WaitResult outResult,
|
||||
Configuration config, Bundle bOptions, boolean ignoreTargetSecurity, int userId,
|
||||
IActivityContainer iContainer, TaskRecord inTask) {
|
||||
return startActivityMayWait(caller, callingUid, PID_NULL, UserHandle.USER_NULL,
|
||||
callingPackage, intent, resolvedType, voiceSession, voiceInteractor, resultTo,
|
||||
resultWho, requestCode, startFlags, profilerInfo, outResult, config, bOptions,
|
||||
ignoreTargetSecurity, userId, iContainer, inTask);
|
||||
}
|
||||
|
||||
final int startActivityMayWait(IApplicationThread caller, int callingUid,
|
||||
String callingPackage, Intent intent, String resolvedType,
|
||||
IVoiceInteractionSession voiceSession, IVoiceInteractor voiceInteractor,
|
||||
IBinder resultTo, String resultWho, int requestCode, int startFlags,
|
||||
ProfilerInfo profilerInfo, IActivityManager.WaitResult outResult, Configuration config,
|
||||
Bundle bOptions, boolean ignoreTargetSecurity, int userId,
|
||||
int requestRealCallingPid, int requestRealCallingUid, String callingPackage,
|
||||
Intent intent, String resolvedType, IVoiceInteractionSession voiceSession,
|
||||
IVoiceInteractor voiceInteractor, IBinder resultTo, String resultWho, int requestCode,
|
||||
int startFlags, ProfilerInfo profilerInfo, IActivityManager.WaitResult outResult,
|
||||
Configuration config, Bundle bOptions, boolean ignoreTargetSecurity, int userId,
|
||||
IActivityContainer iContainer, TaskRecord inTask) {
|
||||
// Refuse possible leaked file descriptors
|
||||
if (intent != null && intent.hasFileDescriptors()) {
|
||||
@@ -769,8 +783,14 @@ class ActivityStarter {
|
||||
// Cannot start a child activity if the parent is not resumed.
|
||||
return ActivityManager.START_CANCELED;
|
||||
}
|
||||
final int realCallingPid = Binder.getCallingPid();
|
||||
final int realCallingUid = Binder.getCallingUid();
|
||||
|
||||
final int realCallingPid = requestRealCallingPid != PID_NULL
|
||||
? requestRealCallingPid
|
||||
: Binder.getCallingPid();
|
||||
final int realCallingUid = requestRealCallingUid != UserHandle.USER_NULL
|
||||
? requestRealCallingUid
|
||||
: Binder.getCallingUid();
|
||||
|
||||
int callingPid;
|
||||
if (callingUid >= 0) {
|
||||
callingPid = -1;
|
||||
@@ -781,6 +801,7 @@ class ActivityStarter {
|
||||
callingPid = callingUid = -1;
|
||||
}
|
||||
|
||||
|
||||
final ActivityStack stack;
|
||||
if (container == null || container.mStack.isOnHomeDisplay()) {
|
||||
stack = mSupervisor.mFocusedStack;
|
||||
@@ -922,8 +943,16 @@ class ActivityStarter {
|
||||
}
|
||||
|
||||
final int startActivities(IApplicationThread caller, int callingUid, String callingPackage,
|
||||
Intent[] intents, String[] resolvedTypes, IBinder resultTo,
|
||||
Bundle bOptions, int userId) {
|
||||
Intent[] intents, String[] resolvedTypes, IBinder resultTo, Bundle bOptions,
|
||||
int userId) {
|
||||
return startActivities(caller, callingUid, PID_NULL, UserHandle.USER_NULL, callingPackage,
|
||||
intents, resolvedTypes, resultTo, bOptions, userId);
|
||||
}
|
||||
|
||||
final int startActivities(IApplicationThread caller, int callingUid,
|
||||
int incomingRealCallingPid, int incomingRealCallingUid, String callingPackage,
|
||||
Intent[] intents, String[] resolvedTypes, IBinder resultTo, Bundle bOptions,
|
||||
int userId) {
|
||||
if (intents == null) {
|
||||
throw new NullPointerException("intents is null");
|
||||
}
|
||||
@@ -934,8 +963,13 @@ class ActivityStarter {
|
||||
throw new IllegalArgumentException("intents are length different than resolvedTypes");
|
||||
}
|
||||
|
||||
final int realCallingPid = Binder.getCallingPid();
|
||||
final int realCallingUid = Binder.getCallingUid();
|
||||
final int realCallingPid = incomingRealCallingPid != PID_NULL
|
||||
? incomingRealCallingPid
|
||||
: Binder.getCallingPid();
|
||||
|
||||
final int realCallingUid = incomingRealCallingUid != UserHandle.USER_NULL
|
||||
? incomingRealCallingUid
|
||||
: Binder.getCallingUid();
|
||||
|
||||
int callingPid;
|
||||
if (callingUid >= 0) {
|
||||
|
||||
Reference in New Issue
Block a user