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

Commit 3119b9a6 authored by Mayank Garg's avatar Mayank Garg
Browse files

Clearing binder identity before getting the current User

Otherwise it checks for Interact user permission which is not required for the locale change.

Flag: EXEMPT minor fix

Bug: 322229751
Test: atest --user-type secondary_user_on_secondary_display CtsCarTestCases:android.car.cts.LocaleManagerTest
Test: atest CtsCarTestCases:android.car.cts.LocaleManagerTest
Change-Id: I7a5b18a6caf49a5dc91043a59015d2360ad4e766
parent 142a8e13
Loading
Loading
Loading
Loading
+18 −10
Original line number Diff line number Diff line
@@ -16957,17 +16957,25 @@ public class ActivityManagerService extends IActivityManager.Stub
        int userId = UserHandle.getCallingUserId();
        if (UserManager.isVisibleBackgroundUsersEnabled() && userId != getCurrentUserId()) {
            // The check is added mainly for auto devices. On auto devices, it is possible that
            // multiple users are visible simultaneously using visible background users.
            // In such cases, it is desired that only the current user (not the visible background
            // user) can change the locale and other persistent settings of the device.
            Slog.w(TAG, "Only current user is allowed to update persistent configuration if "
                    + "visible background users are enabled. Current User" + getCurrentUserId()
                    + ". Calling User: " + userId);
        if (UserManager.isVisibleBackgroundUsersEnabled()) {
            final long origId = Binder.clearCallingIdentity();
            try {
                if (userId != getCurrentUserId()) {
                    // The check is added mainly for auto devices. On auto devices, it is
                    // possible that multiple users are visible simultaneously using visible
                    // background users. In such cases, it is desired that only the current user
                    // (not the visible background user) can change the locale and other persistent
                    // settings of the device.
                    Slog.w(TAG, "Only current user is allowed to update persistent configuration "
                            + "if visible background users are enabled. Current User"
                            + getCurrentUserId() + ". Calling User: " + userId);
                    throw new SecurityException("Only current user is allowed to update persistent "
                            + "configuration.");
                }
            } finally {
                Binder.restoreCallingIdentity(origId);
            }
        }
        mActivityTaskManager.updatePersistentConfiguration(values, userId);
    }