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

Commit e865b9d9 authored by Eugene Susla's avatar Eugene Susla
Browse files

Log a warning if non-role holder attempts to read sms

Test: presubmit
Change-Id: I7c0ee96275e8818af5535e789203243ee14659e4
parent 2bfd202e
Loading
Loading
Loading
Loading
+12 −0
Original line number Original line Diff line number Diff line
@@ -28,6 +28,7 @@ import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.Nullable;
import android.annotation.UnsupportedAppUsage;
import android.annotation.UnsupportedAppUsage;
import android.app.AppOpsManager;
import android.app.AppOpsManager;
import android.app.role.RoleManager;
import android.content.pm.PathPermission;
import android.content.pm.PathPermission;
import android.content.pm.ProviderInfo;
import android.content.pm.ProviderInfo;
import android.content.res.AssetFileDescriptor;
import android.content.res.AssetFileDescriptor;
@@ -225,6 +226,17 @@ public abstract class ContentProvider implements ContentInterface, ComponentCall
        @Override
        @Override
        public Cursor query(String callingPkg, Uri uri, @Nullable String[] projection,
        public Cursor query(String callingPkg, Uri uri, @Nullable String[] projection,
                @Nullable Bundle queryArgs, @Nullable ICancellationSignal cancellationSignal) {
                @Nullable Bundle queryArgs, @Nullable ICancellationSignal cancellationSignal) {
            if (uri.toString().startsWith("content://sms")) {
                RoleManager rm = getContext().getSystemService(RoleManager.class);
                if (!rm.isRoleHeld(RoleManager.ROLE_SMS)
                        && !rm.isRoleHeld(RoleManager.ROLE_DIALER)
                        && !rm.isRoleHeld(RoleManager.ROLE_ASSISTANT)) {
                    // STOPSHIP: log it to westworld instead
                    Log.wtf(TAG, "Sms access attempted by " + callingPkg
                            + " despite not holding an appropriate role");
                }
            }

            uri = validateIncomingUri(uri);
            uri = validateIncomingUri(uri);
            uri = maybeGetUriWithoutUserId(uri);
            uri = maybeGetUriWithoutUserId(uri);
            if (enforceReadPermission(callingPkg, uri, null) != AppOpsManager.MODE_ALLOWED) {
            if (enforceReadPermission(callingPkg, uri, null) != AppOpsManager.MODE_ALLOWED) {