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

Commit b3192809 authored by Winson Chung's avatar Winson Chung
Browse files

Backport missing permission check for querying main activity intent

- This was fixed in T in ag/16820166, but the original code was
  submitted in S.  This ensures that the caller of this method
  is either holding the ACCESS_SHORTCUTS permission or is the
  default launcher.

Bug: 229256049
Test: atest WMShellUnitTests

Change-Id: Ib233ad754a6c6e3c4e0d0e10ed788ab8e055cccc
Merged-In: Ib233ad754a6c6e3c4e0d0e10ed788ab8e055cccc
(cherry picked from commit f4ed441e)
parent 9142d8c9
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -56,8 +56,8 @@ interface ILauncherApps {
    void startActivityAsUser(in IApplicationThread caller, String callingPackage,
            String callingFeatureId, in ComponentName component, in Rect sourceBounds,
            in Bundle opts, in UserHandle user);
    PendingIntent getActivityLaunchIntent(in ComponentName component, in Bundle opts,
            in UserHandle user);
    PendingIntent getActivityLaunchIntent(String callingPackage, in ComponentName component,
            in Bundle opts, in UserHandle user);
    void showAppDetailsAsUser(in IApplicationThread caller, String callingPackage,
            String callingFeatureId, in ComponentName component, in Rect sourceBounds,
            in Bundle opts, in UserHandle user);
+2 −1
Original line number Diff line number Diff line
@@ -752,7 +752,8 @@ public class LauncherApps {
        }
        try {
            // due to b/209607104, startActivityOptions will be ignored
            return mService.getActivityLaunchIntent(component, null /* opts */, user);
            return mService.getActivityLaunchIntent(mContext.getPackageName(), component,
                    null /* opts */, user);
        } catch (RemoteException re) {
            throw re.rethrowFromSystemServer();
        }
+3 −2
Original line number Diff line number Diff line
@@ -1098,8 +1098,9 @@ public class LauncherAppsService extends SystemService {
        }

        @Override
        public PendingIntent getActivityLaunchIntent(ComponentName component, Bundle opts,
                UserHandle user) {
        public PendingIntent getActivityLaunchIntent(String callingPackage, ComponentName component,
                Bundle opts, UserHandle user) {
            ensureShortcutPermission(callingPackage);
            if (!canAccessProfile(user.getIdentifier(), "Cannot start activity")) {
                throw new ActivityNotFoundException("Activity could not be found");
            }