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

Commit c1607eef authored by Michał Brzeziński's avatar Michał Brzeziński Committed by Android (Google) Code Review
Browse files

Merge "Revert "Do not allow adb to set shell, system, or root uid app ops"" into main

parents b08c9520 46295e6a
Loading
Loading
Loading
Loading
+0 −21
Original line number Diff line number Diff line
@@ -223,12 +223,6 @@ public class AppOpsService extends IAppOpsService.Stub {
    // Constant meaning that any UID should be matched when dispatching callbacks
    private static final int UID_ANY = -2;

    private static final int[] ADB_NON_SETTABLE_APP_IDS = {
            Process.ROOT_UID,
            Process.SYSTEM_UID,
            Process.SHELL_UID,
    };

    private static final int[] OPS_RESTRICTED_ON_SUSPEND = {
            OP_PLAY_AUDIO,
            OP_RECORD_AUDIO,
@@ -4941,32 +4935,17 @@ public class AppOpsService extends IAppOpsService.Stub {
                    }

                    if (!shell.targetsUid && shell.packageName != null) {
                        if (ArrayUtils.contains(ADB_NON_SETTABLE_APP_IDS,
                                UserHandle.getAppId(shell.packageUid))) {
                            err.println("Error: Cannot set app ops for uid " + shell.packageUid);
                            return -1;
                        }
                        shell.mInterface.setMode(shell.op, shell.packageUid, shell.packageName,
                                mode);
                    } else if (shell.targetsUid && shell.packageName != null) {
                        try {
                            final int uid = shell.mInternal.mContext.getPackageManager()
                                    .getPackageUidAsUser(shell.packageName, shell.userId);
                            if (ArrayUtils.contains(ADB_NON_SETTABLE_APP_IDS,
                                    UserHandle.getAppId(uid))) {
                                err.println("Error: Cannot set app ops for uid " + uid);
                                return -1;
                            }
                            shell.mInterface.setUidMode(shell.op, uid, mode);
                        } catch (PackageManager.NameNotFoundException e) {
                            return -1;
                        }
                    } else {
                        if (ArrayUtils.contains(ADB_NON_SETTABLE_APP_IDS,
                                UserHandle.getAppId(shell.nonpackageUid))) {
                            err.println("Error: Cannot set app ops for uid " + shell.nonpackageUid);
                            return -1;
                        }
                        shell.mInterface.setUidMode(shell.op, shell.nonpackageUid, mode);
                    }
                    return 0;