am 6800a801: Merge "frameworks/base: Cap the number of toasts that a package can post."

* commit '6800a80199477c90fc64af7211a177de06478a02':
  frameworks/base: Cap the number of toasts that a package can post.
This commit is contained in:
Dianne Hackborn
2011-07-21 22:35:32 -07:00
committed by Android Git Automerger

View File

@@ -519,6 +519,24 @@ public class NotificationManagerService extends INotificationManager.Stub
record = mToastQueue.get(index);
record.update(duration);
} else {
// Limit the number of toasts that any given package except the android
// package can enqueue. Prevents DOS attacks and deals with leaks.
if (!"android".equals(pkg)) {
int count = 0;
final int N = mToastQueue.size();
for (int i=0; i<N; i++) {
final ToastRecord r = mToastQueue.get(i);
if (r.pkg.equals(pkg)) {
count++;
if (count >= MAX_PACKAGE_NOTIFICATIONS) {
Slog.e(TAG, "Package has already posted " + count
+ " toasts. Not showing more. Package=" + pkg);
return;
}
}
}
}
record = new ToastRecord(callingPid, pkg, callback, duration);
mToastQueue.add(record);
index = mToastQueue.size() - 1;