summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/am/ProcessList.java4
-rw-r--r--services/core/java/com/android/server/wm/ActivityTaskSupervisor.java6
2 files changed, 10 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/am/ProcessList.java b/services/core/java/com/android/server/am/ProcessList.java
index fbe7e704a653..4342cb994754 100644
--- a/services/core/java/com/android/server/am/ProcessList.java
+++ b/services/core/java/com/android/server/am/ProcessList.java
@@ -3182,6 +3182,10 @@ public final class ProcessList {
if (isSdkSandbox) {
uid = sdkSandboxUid;
}
+ if (Process.isSdkSandboxUid(uid) && (!isSdkSandbox || sdkSandboxClientAppPackage == null)) {
+ Slog.e(TAG, "Abort creating new sandbox process as required parameters are missing.");
+ return null;
+ }
if (isolated) {
if (isolatedUid == 0) {
IsolatedUidRange uidRange = getOrCreateIsolatedUidRangeLocked(info, hostingRecord);
diff --git a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
index 012151321ed2..0171c200b56c 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
@@ -1074,6 +1074,12 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks {
// Remove the process record so it won't be considered as alive.
mService.mProcessNames.remove(wpc.mName, wpc.mUid);
mService.mProcessMap.remove(wpc.getPid());
+ } else if (r.intent.isSandboxActivity(mService.mContext)) {
+ Slog.e(TAG, "Abort sandbox activity launching as no sandbox process to host it.");
+ r.finishIfPossible("No sandbox process for the activity", false /* oomAdj */);
+ r.launchFailed = true;
+ r.detachFromProcess();
+ return;
}
r.notifyUnknownVisibilityLaunchedForKeyguardTransition();