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

Commit f4c9e3bd authored by Martin Stjernholm's avatar Martin Stjernholm Committed by Automerger Merge Worker
Browse files

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

parents ff118ba6 71498b56
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();