Loading services/core/java/com/android/server/notification/NotificationManagerService.java +14 −0 Original line number Diff line number Diff line Loading @@ -901,8 +901,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 Loading Loading
services/core/java/com/android/server/notification/NotificationManagerService.java +14 −0 Original line number Diff line number Diff line Loading @@ -901,8 +901,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 Loading