diff options
| author | 2019-09-06 22:07:05 -0700 | |
|---|---|---|
| committer | 2019-09-06 22:07:05 -0700 | |
| commit | ebf0ccf2dc8b817678f4b67b9e77745ea91fe8e2 (patch) | |
| tree | 7330de794b8e50358c78f3aa3c8439aa8fa05846 | |
| parent | 9142ac811992082aace3b4603d69692c0406a453 (diff) | |
| parent | 036ea39d96babb6c8a20464319903aea130e1a5f (diff) | |
Merge "Crash app on foreground service notification error."
am: 036ea39d96
Change-Id: I1f2564837c33cd4c6c3db6aac3cbaf8c09707da9
| -rw-r--r-- | services/core/java/com/android/server/notification/NotificationManagerService.java | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index bd198dd74af7..f12c6896172d 100644 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -892,8 +892,22 @@ public class NotificationManagerService extends SystemService { @Override public void onNotificationError(int callingUid, int callingPid, String pkg, String tag, int id, int uid, int initialPid, String message, int userId) { + final boolean fgService; + synchronized (mNotificationLock) { + NotificationRecord r = findNotificationLocked(pkg, tag, id, userId); + fgService = r != null && (r.getNotification().flags & FLAG_FOREGROUND_SERVICE) != 0; + } cancelNotification(callingUid, callingPid, pkg, tag, id, 0, 0, false, userId, REASON_ERROR, null); + if (fgService) { + // Still crash for foreground services, preventing the not-crash behaviour abused + // by apps to give us a garbage notification and silently start a fg service. + Binder.withCleanCallingIdentity( + () -> mAm.crashApplication(uid, initialPid, pkg, -1, + "Bad notification(tag=" + tag + ", id=" + id + ") posted from package " + + pkg + ", crashing app(uid=" + uid + ", pid=" + initialPid + "): " + + message)); + } } @Override |