Fix a wrong UID can be logged

This is a prepartion for fixing Bug 34838583

Currently Binder.clearCallingIdentity() is called too early, which
ends up always blaming the system UID when calledWithValidToken()
fails in InputMethodManagerService#updateStatusIcon().

Test: Compile
Bug: 34838583
Change-Id: Id69da24de8269c0c7e31ea9ef3c595c3d69fe40e
This commit is contained in:
Yohei Yukawa
2017-01-31 21:32:26 -08:00
parent fa49c00089
commit 59377cab5c

View File

@@ -1660,15 +1660,15 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
@Override
public void updateStatusIcon(IBinder token, String packageName, int iconId) {
long ident = Binder.clearCallingIdentity();
try {
synchronized (mMethodMap) {
if (!calledWithValidToken(token)) {
final int uid = Binder.getCallingUid();
Slog.e(TAG, "Ignoring updateStatusIcon due to an invalid token. uid:" + uid
+ " token:" + token);
return;
}
synchronized (mMethodMap) {
if (!calledWithValidToken(token)) {
final int uid = Binder.getCallingUid();
Slog.e(TAG, "Ignoring updateStatusIcon due to an invalid token. uid:" + uid
+ " token:" + token);
return;
}
final long ident = Binder.clearCallingIdentity();
try {
if (iconId == 0) {
if (DEBUG) Slog.d(TAG, "hide the small icon for the input method");
if (mStatusBar != null) {
@@ -1693,9 +1693,9 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
mStatusBar.setIconVisibility(mSlotIme, true);
}
}
} finally {
Binder.restoreCallingIdentity(ident);
}
} finally {
Binder.restoreCallingIdentity(ident);
}
}