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

Commit cfa39d19 authored by Christopher Tate's avatar Christopher Tate
Browse files

Don't crash when a broadcast requires an unknown permission

Bug: 117104008
Test: manual
Test: tests/ActivityTests
Change-Id: I1a7918ca33de4f8df092ae79d5ceab313e501a41
parent b6f498a2
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -898,6 +898,11 @@ public final class BroadcastQueue {
        for (int i = perms.length-1; i >= 0; i--) {
            try {
                PermissionInfo pi = pm.getPermissionInfo(perms[i], "android", 0);
                if (pi == null) {
                    // a required permission that no package has actually
                    // defined cannot be signature-required.
                    return false;
                }
                if ((pi.protectionLevel & (PermissionInfo.PROTECTION_MASK_BASE
                        | PermissionInfo.PROTECTION_FLAG_PRIVILEGED))
                        != PermissionInfo.PROTECTION_SIGNATURE) {
+8 −0
Original line number Diff line number Diff line
@@ -439,6 +439,14 @@ public class ActivityTestMain extends Activity {
                return true;
            }
        });
        menu.add("Require unknown permission").setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
            @Override public boolean onMenuItemClick(MenuItem item) {
                final Intent intent = new Intent(SLOW_RECEIVER_ACTION);
                intent.putExtra(SLOW_RECEIVER_EXTRA, 5038);
                sendOrderedBroadcast(intent, "com.google.android.test.activity.permission.UNDEFINED");
                return true;
            }
        });
        menu.add("Stack Doc").setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
            @Override public boolean onMenuItemClick(MenuItem item) {
                ActivityManager.AppTask task = findDocTask();