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 d9f4c95b7d)
Change-Id: I9abc455ef3863730f8e42c8eecff4892cdbc7c1c
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user