From 639360aa261874a7dfa9e95e4b468ff1e860528d Mon Sep 17 00:00:00 2001 From: Hai Zhang Date: Mon, 20 May 2019 15:35:33 -0700 Subject: [PATCH] Handle callingPackageName being null properly in checkStartActivity(). callingPackageName can actually be null when started via command line, etc. Previously the getApplicationInfo() call will fail if package name is null and we'll ignore it so there won't be a crash, but it's still better to handle it properly. Bug: 131204827 Test: presubmit Change-Id: I33ba43c28798226bed925940c2ffd09622372d09 --- .../com/android/server/policy/PermissionPolicyInternal.java | 3 ++- .../com/android/server/policy/PermissionPolicyService.java | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/policy/PermissionPolicyInternal.java b/services/core/java/com/android/server/policy/PermissionPolicyInternal.java index ea8616c4551b1..7760c1edd9e6f 100644 --- a/services/core/java/com/android/server/policy/PermissionPolicyInternal.java +++ b/services/core/java/com/android/server/policy/PermissionPolicyInternal.java @@ -17,6 +17,7 @@ package com.android.server.policy; import android.annotation.NonNull; +import android.annotation.Nullable; import android.content.Intent; /** @@ -34,5 +35,5 @@ public abstract class PermissionPolicyInternal { * @return whether the activity should be started */ public abstract boolean checkStartActivity(@NonNull Intent intent, int callingUid, - @NonNull String callingPackage); + @Nullable String callingPackage); } diff --git a/services/core/java/com/android/server/policy/PermissionPolicyService.java b/services/core/java/com/android/server/policy/PermissionPolicyService.java index 570a15310089b..c809aca371a05 100644 --- a/services/core/java/com/android/server/policy/PermissionPolicyService.java +++ b/services/core/java/com/android/server/policy/PermissionPolicyService.java @@ -480,8 +480,9 @@ public final class PermissionPolicyService extends SystemService { @Override public boolean checkStartActivity(@NonNull Intent intent, int callingUid, - @NonNull String callingPackage) { - if (isActionRemovedForCallingPackage(intent.getAction(), callingPackage)) { + @Nullable String callingPackage) { + if (callingPackage != null && isActionRemovedForCallingPackage(intent.getAction(), + callingPackage)) { Slog.w(LOG_TAG, "Action Removed: starting " + intent.toString() + " from " + callingPackage + " (uid=" + callingUid + ")"); return false;