[NMS] Call isServiceTokenValidLocked with lock.

Method isServiceTokenValidLocked should be called with mNotificationLock
held, otherwise there will be race condition.

Bug: 236512598
Test: Manual
Change-Id: I7e24b5afe3d0a5233debf9da45200c2f4e1f570f
This commit is contained in:
qinyige1
2022-06-17 10:52:45 +08:00
parent 2fd4ee6439
commit 5d7808a0c2

View File

@@ -9404,10 +9404,16 @@ public class NotificationManagerService extends SystemService {
* given NAS is bound in.
*/
private boolean isInteractionVisibleToListener(ManagedServiceInfo info, int userId) {
boolean isAssistantService = mAssistants.isServiceTokenValidLocked(info.service);
boolean isAssistantService = isServiceTokenValid(info.service);
return !isAssistantService || info.isSameUser(userId);
}
private boolean isServiceTokenValid(IInterface service) {
synchronized (mNotificationLock) {
return mAssistants.isServiceTokenValidLocked(service);
}
}
private boolean isPackageSuspendedForUser(String pkg, int uid) {
final long identity = Binder.clearCallingIdentity();
int userId = UserHandle.getUserId(uid);
@@ -10652,7 +10658,7 @@ public class NotificationManagerService extends SystemService {
BackgroundThread.getHandler().post(() -> {
if (info.isSystem
|| hasCompanionDevice(info)
|| mAssistants.isServiceTokenValidLocked(info.service)) {
|| isServiceTokenValid(info.service)) {
notifyNotificationChannelChanged(
info, pkg, user, channel, modificationType);
}