Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 06183a57 authored by Siyamed Sinir's avatar Siyamed Sinir Committed by Android (Google) Code Review
Browse files

Merge "Prevent getting data from Clipboard if device is locked" into mnc-dev

parents 328c129f 0b8fa2f5
Loading
Loading
Loading
Loading
+10 −4
Original line number Original line Diff line number Diff line
@@ -20,6 +20,7 @@ import android.app.ActivityManagerNative;
import android.app.AppGlobals;
import android.app.AppGlobals;
import android.app.AppOpsManager;
import android.app.AppOpsManager;
import android.app.IActivityManager;
import android.app.IActivityManager;
import android.app.KeyguardManager;
import android.content.BroadcastReceiver;
import android.content.BroadcastReceiver;
import android.content.ClipData;
import android.content.ClipData;
import android.content.ClipDescription;
import android.content.ClipDescription;
@@ -247,7 +248,7 @@ public class ClipboardService extends IClipboard.Stub {
    public ClipData getPrimaryClip(String pkg) {
    public ClipData getPrimaryClip(String pkg) {
        synchronized (this) {
        synchronized (this) {
            if (mAppOps.noteOp(AppOpsManager.OP_READ_CLIPBOARD, Binder.getCallingUid(),
            if (mAppOps.noteOp(AppOpsManager.OP_READ_CLIPBOARD, Binder.getCallingUid(),
                    pkg) != AppOpsManager.MODE_ALLOWED) {
                    pkg) != AppOpsManager.MODE_ALLOWED || isDeviceLocked()) {
                return null;
                return null;
            }
            }
            addActiveOwnerLocked(Binder.getCallingUid(), pkg);
            addActiveOwnerLocked(Binder.getCallingUid(), pkg);
@@ -258,7 +259,7 @@ public class ClipboardService extends IClipboard.Stub {
    public ClipDescription getPrimaryClipDescription(String callingPackage) {
    public ClipDescription getPrimaryClipDescription(String callingPackage) {
        synchronized (this) {
        synchronized (this) {
            if (mAppOps.checkOp(AppOpsManager.OP_READ_CLIPBOARD, Binder.getCallingUid(),
            if (mAppOps.checkOp(AppOpsManager.OP_READ_CLIPBOARD, Binder.getCallingUid(),
                    callingPackage) != AppOpsManager.MODE_ALLOWED) {
                    callingPackage) != AppOpsManager.MODE_ALLOWED || isDeviceLocked()) {
                return null;
                return null;
            }
            }
            PerUserClipboard clipboard = getClipboard();
            PerUserClipboard clipboard = getClipboard();
@@ -269,7 +270,7 @@ public class ClipboardService extends IClipboard.Stub {
    public boolean hasPrimaryClip(String callingPackage) {
    public boolean hasPrimaryClip(String callingPackage) {
        synchronized (this) {
        synchronized (this) {
            if (mAppOps.checkOp(AppOpsManager.OP_READ_CLIPBOARD, Binder.getCallingUid(),
            if (mAppOps.checkOp(AppOpsManager.OP_READ_CLIPBOARD, Binder.getCallingUid(),
                    callingPackage) != AppOpsManager.MODE_ALLOWED) {
                    callingPackage) != AppOpsManager.MODE_ALLOWED || isDeviceLocked()) {
                return false;
                return false;
            }
            }
            return getClipboard().primaryClip != null;
            return getClipboard().primaryClip != null;
@@ -293,7 +294,7 @@ public class ClipboardService extends IClipboard.Stub {
    public boolean hasClipboardText(String callingPackage) {
    public boolean hasClipboardText(String callingPackage) {
        synchronized (this) {
        synchronized (this) {
            if (mAppOps.checkOp(AppOpsManager.OP_READ_CLIPBOARD, Binder.getCallingUid(),
            if (mAppOps.checkOp(AppOpsManager.OP_READ_CLIPBOARD, Binder.getCallingUid(),
                    callingPackage) != AppOpsManager.MODE_ALLOWED) {
                    callingPackage) != AppOpsManager.MODE_ALLOWED || isDeviceLocked()) {
                return false;
                return false;
            }
            }
            PerUserClipboard clipboard = getClipboard();
            PerUserClipboard clipboard = getClipboard();
@@ -305,6 +306,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) {
    private final void checkUriOwnerLocked(Uri uri, int uid) {
        if (!"content".equals(uri.getScheme())) {
        if (!"content".equals(uri.getScheme())) {
            return;
            return;