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

Commit 71498b56 authored by Martin Stjernholm's avatar Martin Stjernholm Committed by Android (Google) Code Review
Browse files

Merge "Only allow access to the dexopt commands from root or shell." into udc-dev

parents 48df6022 8b7f36af
Loading
Loading
Loading
Loading
+0 −8
Original line number Diff line number Diff line
@@ -6675,15 +6675,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
        @Deprecated
        public void legacyDumpProfiles(String packageName, boolean dumpClassesAndMethods)
                throws LegacyDexoptDisabledException {
            /* Only the shell, root, or the app user should be able to dump profiles. */
            final int callingUid = Binder.getCallingUid();
            final Computer snapshot = snapshotComputer();
            final String[] callerPackageNames = snapshot.getPackagesForUid(callingUid);
            if (!PackageManagerServiceUtils.isRootOrShell(callingUid)
                    && !ArrayUtils.contains(callerPackageNames, packageName)) {
                throw new SecurityException("dumpProfiles");
            }

            AndroidPackage pkg = snapshot.getPackage(packageName);
            if (pkg == null) {
                throw new IllegalArgumentException("Unknown package: " + packageName);
+5 −0
Original line number Diff line number Diff line
@@ -391,6 +391,11 @@ class PackageManagerShellCommand extends ShellCommand {
    private int runLegacyDexoptCommand(@NonNull String cmd)
            throws RemoteException, LegacyDexoptDisabledException {
        Installer.checkLegacyDexoptDisabled();

        if (!PackageManagerServiceUtils.isRootOrShell(Binder.getCallingUid())) {
            throw new SecurityException("Dexopt shell commands need root or shell access");
        }

        switch (cmd) {
            case "compile":
                return runCompile();