From 8fba7cf989a7d617babd1c182a1cc051ebe10331 Mon Sep 17 00:00:00 2001 From: Soonil Nagarkar Date: Fri, 9 Jul 2021 09:08:47 -0700 Subject: [PATCH] Don't allow PI crashes on unknown sender types Bug: 193207800 Test: presubmits Change-Id: I2a674549f4cfe45841dc0094709666c25c2d743b --- core/java/android/app/ActivityManager.java | 11 +++++++++-- .../com/android/server/am/ActivityManagerService.java | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java index 91e2d88ad7cb5..4376d225e676d 100644 --- a/core/java/android/app/ActivityManager.java +++ b/core/java/android/app/ActivityManager.java @@ -405,6 +405,12 @@ public class ActivityManager { */ public static final int BROADCAST_FAILED_USER_STOPPED = -2; + /** + * Type for IActivityManaqer.getIntentSender: this PendingIntent type is unknown. + * @hide + */ + public static final int INTENT_SENDER_UNKNOWN = 0; + /** * Type for IActivityManaqer.getIntentSender: this PendingIntent is * for a sendBroadcast operation. @@ -4860,12 +4866,12 @@ public class ActivityManager { */ public static final class PendingIntentInfo implements Parcelable { - private final String mCreatorPackage; + @Nullable private final String mCreatorPackage; private final int mCreatorUid; private final boolean mImmutable; private final int mIntentSenderType; - public PendingIntentInfo(String creatorPackage, int creatorUid, boolean immutable, + public PendingIntentInfo(@Nullable String creatorPackage, int creatorUid, boolean immutable, int intentSenderType) { mCreatorPackage = creatorPackage; mCreatorUid = creatorUid; @@ -4873,6 +4879,7 @@ public class ActivityManager { mIntentSenderType = intentSenderType; } + @Nullable public String getCreatorPackage() { return mCreatorPackage; } diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 0d35bb1805141..8809fb597b985 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -5003,7 +5003,7 @@ public class ActivityManagerService extends IActivityManager.Stub (res.key.flags & PendingIntent.FLAG_IMMUTABLE) != 0, res.key.type); } else { - throw new IllegalArgumentException(); + return new PendingIntentInfo(null, -1, false, ActivityManager.INTENT_SENDER_UNKNOWN); } }