From cbac1e489aab0fba0f71e4123ef8cf3491a29019 Mon Sep 17 00:00:00 2001 From: Andreas Gampe Date: Mon, 5 Mar 2018 18:25:18 -0800 Subject: [PATCH] Accounts: Fix TokenCache maps access Found by Errorprone. Bug: 73288226 Test: mmma frameworks/base/services Change-Id: I203745415cbad6fad6f72008fc5632086d2a4505 --- .../core/java/com/android/server/accounts/TokenCache.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/accounts/TokenCache.java b/services/core/java/com/android/server/accounts/TokenCache.java index be91f9831113a..2af2f38d8ba70 100644 --- a/services/core/java/com/android/server/accounts/TokenCache.java +++ b/services/core/java/com/android/server/accounts/TokenCache.java @@ -125,7 +125,7 @@ import java.util.Objects; * This is recursive, but it won't spiral out of control because LruCache is * thread safe and the Evictor can only be removed once. */ - Evictor evictor = mTokenEvictors.remove(oldVal.token); + Evictor evictor = mTokenEvictors.remove(new Pair<>(k.account.type, oldVal.token)); if (evictor != null) { evictor.evict(); } @@ -134,12 +134,13 @@ import java.util.Objects; public void putToken(Key k, Value v) { // Prepare for removal by token string. - Evictor tokenEvictor = mTokenEvictors.get(v.token); + Pair mapKey = new Pair<>(k.account.type, v.token); + Evictor tokenEvictor = mTokenEvictors.get(mapKey); if (tokenEvictor == null) { tokenEvictor = new Evictor(); } tokenEvictor.add(k); - mTokenEvictors.put(new Pair<>(k.account.type, v.token), tokenEvictor); + mTokenEvictors.put(mapKey, tokenEvictor); // Prepare for removal by associated account. Evictor accountEvictor = mAccountEvictors.get(k.account);