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

Commit 5402a30a authored by Ricardo Cerqueira's avatar Ricardo Cerqueira
Browse files

AssetRedirectionService: Check for permissions before running dump()

Fix android.security.cts.ServicePermissionsTest failure

Change-Id: I9d629d19f3ff231db477d156c8bf557d4b8ee861
parent 4ff216e8
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -8,11 +8,13 @@ import org.xmlpull.v1.XmlPullParserException;

import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.ThemeInfo;
import android.content.res.AssetManager;
import android.content.res.PackageRedirectionMap;
import android.content.res.Resources;
import android.os.Binder;
import android.os.RemoteException;
import android.text.TextUtils;
import android.util.Log;
@@ -203,6 +205,16 @@ public class AssetRedirectionManagerService extends IAssetRedirectionManager.Stu
    protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
        synchronized (mRedirections) {
            final ArrayList<RedirectionKey> filteredKeySet = new ArrayList<RedirectionKey>();

            if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.DUMP)
                    != PackageManager.PERMISSION_GRANTED) {

                pw.println("Permission Denial: can't dump assetredirectionservice from from pid="
                        + Binder.getCallingPid()
                        + ", uid=" + Binder.getCallingUid());
                return;
            }

            for (Map.Entry<RedirectionKey, PackageRedirectionMap> entry: mRedirections.entrySet()) {
                PackageRedirectionMap map = entry.getValue();
                if (map != null && map.getPackageId() != -1) {