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

Commit 7218cfcb authored by Patrick Baumann's avatar Patrick Baumann
Browse files

Clear calling identity when calling platformcompat

This change ensures that when we're checking whether a package has the
app enumeration feature enabled, we first clear calling identity as no
apps will have the permission needed to call it.

Test: atest AppEnumerationTests
Bug: 136675067
Change-Id: Ifd196bcc6e8f54e45318381578a0bac5243464e4
parent ca01d294
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -34,6 +34,7 @@ import android.content.pm.parsing.ComponentParseUtils.ParsedIntentInfo;
import android.content.pm.parsing.ComponentParseUtils.ParsedProvider;
import android.content.pm.parsing.ComponentParseUtils.ParsedProvider;
import android.content.pm.parsing.ComponentParseUtils.ParsedService;
import android.content.pm.parsing.ComponentParseUtils.ParsedService;
import android.net.Uri;
import android.net.Uri;
import android.os.Binder;
import android.os.Process;
import android.os.Process;
import android.os.Trace;
import android.os.Trace;
import android.os.UserHandle;
import android.os.UserHandle;
@@ -171,11 +172,13 @@ public class AppsFilter {
        @Override
        @Override
        public boolean packageIsEnabled(AndroidPackage pkg) {
        public boolean packageIsEnabled(AndroidPackage pkg) {
            Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "packageIsEnabled");
            Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "packageIsEnabled");
            final long token = Binder.clearCallingIdentity();
            try {
            try {
                // TODO(b/135203078): Do not use toAppInfo
                // TODO(b/135203078): Do not use toAppInfo
                return mInjector.getCompatibility().isChangeEnabled(
                return mInjector.getCompatibility().isChangeEnabled(
                        PackageManager.FILTER_APPLICATION_QUERY, pkg.toAppInfoWithoutState());
                        PackageManager.FILTER_APPLICATION_QUERY, pkg.toAppInfoWithoutState());
            } finally {
            } finally {
                Binder.restoreCallingIdentity(token);
                Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
                Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
            }
            }
        }
        }