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

Commit fd612ab9 authored by Louis Chang's avatar Louis Chang Committed by Android (Google) Code Review
Browse files

Merge "[RESTRICT AUTOMERGE] Strip part of the activity info of another uid if...

Merge "[RESTRICT AUTOMERGE] Strip part of the activity info of another uid if no privilege" into sc-qpr1-dev
parents 7606f4c1 954d2778
Loading
Loading
Loading
Loading
+30 −3
Original line number Diff line number Diff line
@@ -4168,12 +4168,39 @@ class Task extends WindowContainer<WindowContainer> {

        if (info.topActivityInfo != null
                && task.effectiveUid != info.topActivityInfo.applicationInfo.uid) {
            info.topActivity = null;
            info.topActivityInfo = null;
            // Making a copy to prevent eliminating the info in the original ActivityRecord.
            info.topActivityInfo = new ActivityInfo(info.topActivityInfo);
            info.topActivityInfo.applicationInfo =
                    new ApplicationInfo(info.topActivityInfo.applicationInfo);

            // Strip the sensitive info.
            info.topActivity = new ComponentName("", "");
            info.topActivityInfo.packageName = "";
            info.topActivityInfo.taskAffinity = "";
            info.topActivityInfo.processName = "";
            info.topActivityInfo.name = "";
            info.topActivityInfo.parentActivityName = "";
            info.topActivityInfo.targetActivity = "";
            info.topActivityInfo.splitName = "";
            info.topActivityInfo.applicationInfo.className = "";
            info.topActivityInfo.applicationInfo.credentialProtectedDataDir = "";
            info.topActivityInfo.applicationInfo.dataDir = "";
            info.topActivityInfo.applicationInfo.deviceProtectedDataDir = "";
            info.topActivityInfo.applicationInfo.manageSpaceActivityName = "";
            info.topActivityInfo.applicationInfo.nativeLibraryDir = "";
            info.topActivityInfo.applicationInfo.nativeLibraryRootDir = "";
            info.topActivityInfo.applicationInfo.processName = "";
            info.topActivityInfo.applicationInfo.publicSourceDir = "";
            info.topActivityInfo.applicationInfo.scanPublicSourceDir = "";
            info.topActivityInfo.applicationInfo.scanSourceDir = "";
            info.topActivityInfo.applicationInfo.sourceDir = "";
            info.topActivityInfo.applicationInfo.taskAffinity = "";
            info.topActivityInfo.applicationInfo.name = "";
            info.topActivityInfo.applicationInfo.packageName = "";
        }

        if (task.effectiveUid != baseActivityUid) {
            info.baseActivity = null;
            info.baseActivity = new ComponentName("", "");
        }
    }

+5 −4
Original line number Diff line number Diff line
@@ -1147,10 +1147,11 @@ public class RecentTasksTest extends WindowTestsBase {
    @Test
    public void testCreateRecentTaskInfo_detachedTask() {
        final Task task = createTaskBuilder(".Task").build();
        final ComponentName componentName = new ComponentName("com.foo", ".BarActivity");
        new ActivityBuilder(mSupervisor.mService)
                .setTask(task)
                .setUid(NOBODY_UID)
                .setComponent(new ComponentName("com.foo", ".BarActivity"))
                .setComponent(componentName)
                .build();
        final TaskDisplayArea tda = task.getDisplayArea();

@@ -1166,9 +1167,9 @@ public class RecentTasksTest extends WindowTestsBase {
        info = mRecentTasks.createRecentTaskInfo(task, true /* stripExtras */,
                false /* getTasksAllowed */);

        assertTrue(info.topActivity == null);
        assertTrue(info.topActivityInfo == null);
        assertTrue(info.baseActivity == null);
        assertFalse(info.topActivity.equals(componentName));
        assertFalse(info.topActivityInfo.packageName.equals(componentName.getPackageName()));
        assertFalse(info.baseActivity.equals(componentName));

        // The task can be put in split screen even if it is not attached now.
        task.removeImmediately();