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

Commit 381e5b4d authored by Miranda Kephart's avatar Miranda Kephart
Browse files

Send PendingIntent for screenshot smart actions

Currently we extract the intent and send that directly, which means
it is sent with SysUI's permissions (which is a security
vulnerability). This change switches to sending the PendingIntent
(with the creator's permissions) instead.

Bug: 159822190
Fix: 159822190
Test: manual (ensured that the smart actions still work)
Change-Id: Ia567272382021d4324974fb7d8c2c01b7e556846
parent b0f26f32
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -58,7 +58,6 @@ import android.os.Looper;
import android.os.Message;
import android.os.PowerManager;
import android.os.RemoteException;
import android.os.UserHandle;
import android.provider.Settings;
import android.util.DisplayMetrics;
import android.util.Log;
@@ -1179,11 +1178,15 @@ public class GlobalScreenshot implements ViewTreeObserver.OnComputeInternalInset
        @Override
        public void onReceive(Context context, Intent intent) {
            PendingIntent pendingIntent = intent.getParcelableExtra(EXTRA_ACTION_INTENT);
            Intent actionIntent = pendingIntent.getIntent();
            String actionType = intent.getStringExtra(EXTRA_ACTION_TYPE);
            Slog.d(TAG, "Executing smart action [" + actionType + "]:" + actionIntent);
            Slog.d(TAG, "Executing smart action [" + actionType + "]:" + pendingIntent.getIntent());
            ActivityOptions opts = ActivityOptions.makeBasic();
            context.startActivityAsUser(actionIntent, opts.toBundle(), UserHandle.CURRENT);

            try {
                pendingIntent.send(context, 0, null, null, null, null, opts.toBundle());
            } catch (PendingIntent.CanceledException e) {
                Log.e(TAG, "Pending intent canceled", e);
            }

            ScreenshotSmartActions.notifyScreenshotAction(
                    context, intent.getStringExtra(EXTRA_ID), actionType, true);