diff options
| -rw-r--r-- | services/core/java/com/android/server/am/ProcessList.java | 4 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/ActivityTaskSupervisor.java | 6 |
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(); |