summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSiyamed Sinir <siyamed@google.com>2017-09-06 18:02:23 -0700
committerandroid-build-team Robot <android-build-team-robot@google.com>2017-09-28 17:13:56 +0000
commit93685c70c4f12217b7ec8e79eb95573d66e86c5f (patch)
tree6b9797825a95c86eba73b43c6e5f0837ed1ce0b3
parent4f062f9328975b8ab61f863400d32b813e99338c (diff)
downloadbase-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.java14
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;