diff options
author | Siyamed Sinir <siyamed@google.com> | 2017-09-06 18:02:23 -0700 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2017-09-28 17:13:56 +0000 |
commit | 93685c70c4f12217b7ec8e79eb95573d66e86c5f (patch) | |
tree | 6b9797825a95c86eba73b43c6e5f0837ed1ce0b3 | |
parent | 4f062f9328975b8ab61f863400d32b813e99338c (diff) | |
download | base-93685c70c4f12217b7ec8e79eb95573d66e86c5f.tar.gz |
Prevent getting data from Clipboard if device is locked
Clipboard should not return data if the device is locked. This CL checks
for device locked state before returning values from get/has functions.
Bug: 64934810
Change-Id: I856a9079fe64db0af44383fae1a9a418de959420
Merged-In: Icefac226615fe22a7735dff4ba4c3b528fb2ac12
(cherry picked from commit 0b8fa2f5e0d305f083345968a7c39fe7a6f0a158)
-rw-r--r-- | services/core/java/com/android/server/clipboard/ClipboardService.java | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/clipboard/ClipboardService.java b/services/core/java/com/android/server/clipboard/ClipboardService.java index 66aa40325a4f..bdd2d2bc7059 100644 --- a/services/core/java/com/android/server/clipboard/ClipboardService.java +++ b/services/core/java/com/android/server/clipboard/ClipboardService.java @@ -20,6 +20,7 @@ import android.app.ActivityManagerNative; import android.app.AppGlobals; import android.app.AppOpsManager; import android.app.IActivityManager; +import android.app.KeyguardManager; import android.content.BroadcastReceiver; import android.content.ClipData; import android.content.ClipDescription; @@ -255,7 +256,7 @@ public class ClipboardService extends IClipboard.Stub { public ClipData getPrimaryClip(String pkg) { synchronized (this) { if (mAppOps.noteOp(AppOpsManager.OP_READ_CLIPBOARD, Binder.getCallingUid(), - pkg) != AppOpsManager.MODE_ALLOWED) { + pkg) != AppOpsManager.MODE_ALLOWED || isDeviceLocked()) { return null; } addActiveOwnerLocked(Binder.getCallingUid(), pkg); @@ -266,7 +267,7 @@ public class ClipboardService extends IClipboard.Stub { public ClipDescription getPrimaryClipDescription(String callingPackage) { synchronized (this) { if (mAppOps.checkOp(AppOpsManager.OP_READ_CLIPBOARD, Binder.getCallingUid(), - callingPackage) != AppOpsManager.MODE_ALLOWED) { + callingPackage) != AppOpsManager.MODE_ALLOWED || isDeviceLocked()) { return null; } PerUserClipboard clipboard = getClipboard(); @@ -277,7 +278,7 @@ public class ClipboardService extends IClipboard.Stub { public boolean hasPrimaryClip(String callingPackage) { synchronized (this) { if (mAppOps.checkOp(AppOpsManager.OP_READ_CLIPBOARD, Binder.getCallingUid(), - callingPackage) != AppOpsManager.MODE_ALLOWED) { + callingPackage) != AppOpsManager.MODE_ALLOWED || isDeviceLocked()) { return false; } return getClipboard().primaryClip != null; @@ -301,7 +302,7 @@ public class ClipboardService extends IClipboard.Stub { public boolean hasClipboardText(String callingPackage) { synchronized (this) { if (mAppOps.checkOp(AppOpsManager.OP_READ_CLIPBOARD, Binder.getCallingUid(), - callingPackage) != AppOpsManager.MODE_ALLOWED) { + callingPackage) != AppOpsManager.MODE_ALLOWED || isDeviceLocked()) { return false; } PerUserClipboard clipboard = getClipboard(); @@ -313,6 +314,11 @@ public class ClipboardService extends IClipboard.Stub { } } + private boolean isDeviceLocked() { + final KeyguardManager keyguardManager = mContext.getSystemService(KeyguardManager.class); + return keyguardManager != null && keyguardManager.isDeviceLocked(); + } + private final void checkUriOwnerLocked(Uri uri, int uid) { if (!"content".equals(uri.getScheme())) { return; |