Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2526f33d authored by Vladimir Marko's avatar Vladimir Marko
Browse files

Don't prevent notification updates in DOS protection.

The NotificationManagerService limits the number of
notifications per package+user to 50. Once that limit is
reached, it will refuse new notifications. However, it was
also erroneously refusing updates to existing notifications.

Bug: 5821364

(cherry picked from commit d9f4c95b)

Change-Id: I9abc455ef3863730f8e42c8eecff4892cdbc7c1c
parent 4600dd05
Loading
Loading
Loading
Loading
+5 −13
Original line number Diff line number Diff line
@@ -1968,6 +1968,9 @@ public class NotificationManagerService extends SystemService {
                for (int i=0; i<N; i++) {
                    final NotificationRecord r = mNotificationList.get(i);
                    if (r.sbn.getPackageName().equals(pkg) && r.sbn.getUserId() == userId) {
                        if (r.sbn.getId() == id && TextUtils.equals(r.sbn.getTag(), tag)) {
                            break;  // Allow updating existing notification
                        }
                        count++;
                        if (count >= MAX_PACKAGE_NOTIFICATIONS) {
                            Slog.e(TAG, "Package has already posted " + count
@@ -3003,19 +3006,8 @@ public class NotificationManagerService extends SystemService {
        final int len = list.size();
        for (int i=0; i<len; i++) {
            NotificationRecord r = list.get(i);
            if (!notificationMatchesUserId(r, userId) || r.sbn.getId() != id) {
                continue;
            }
            if (tag == null) {
                if (r.sbn.getTag() != null) {
                    continue;
                }
            } else {
                if (!tag.equals(r.sbn.getTag())) {
                    continue;
                }
            }
            if (r.sbn.getPackageName().equals(pkg)) {
            if (notificationMatchesUserId(r, userId) && r.sbn.getId() == id &&
                    TextUtils.equals(r.sbn.getTag(), tag) && r.sbn.getPackageName().equals(pkg)) {
                return i;
            }
        }