OSDN Git Service

Fix ClipboardService device lock check for cross profile
authorSiyamed Sinir <siyamed@google.com>
Wed, 13 Sep 2017 23:32:21 +0000 (16:32 -0700)
committerandroid-build-team Robot <android-build-team-robot@google.com>
Fri, 6 Oct 2017 18:28:33 +0000 (18:28 +0000)
ClipboardService.isDeviceLocked should clear callingIdentity before
accessing KeyguardManager.

Test: bit CtsDevicePolicyManagerTestCases:com.android.cts.devicepolicy.ManagedProfileTest

Bug: 64934810
Change-Id: I81a7adac8c9d56ed801ffc1380fcbc987d5df3e6
Merged-In: I712abfe8d542cd1be9c1816f407c8912321ac480
(cherry picked from commit 6d79675e0c0e55a7d5591a123727796f52c42954)

services/core/java/com/android/server/clipboard/ClipboardService.java

index bdd2d2b..6f59e84 100644 (file)
@@ -315,8 +315,14 @@ public class ClipboardService extends IClipboard.Stub {
     }
 
     private boolean isDeviceLocked() {
-        final KeyguardManager keyguardManager = mContext.getSystemService(KeyguardManager.class);
-        return keyguardManager != null && keyguardManager.isDeviceLocked();
+        final long token = Binder.clearCallingIdentity();
+        try {
+            final KeyguardManager keyguardManager = mContext.getSystemService(
+                    KeyguardManager.class);
+            return keyguardManager != null && keyguardManager.isDeviceLocked();
+        } finally {
+            Binder.restoreCallingIdentity(token);
+        }
     }
 
     private final void checkUriOwnerLocked(Uri uri, int uid) {