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

Commit 9323df6e authored by Jeff Sharkey's avatar Jeff Sharkey
Browse files

Use callerPackage instead of callerApp.

When AlarmManager sends a broadcast, it only knows the packageName
that requested the broadcast, and the callerApp may not even be
running anymore.  Since we only need the package name for enforcement,
use that instead of the possibly null callerApp.

Bug: 27397019
Change-Id: I8a52d73b4a83eebf85aa1adbfe06bd8886814d4b
parent 100bd9c2
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -17144,7 +17144,7 @@ public final class ActivityManagerService extends ActivityManagerNative
                // but historically it has not been protected and apps may be using it
                // to poke their own app widget.  So, instead of making it protected,
                // just limit it to the caller.
                if (callerApp == null) {
                if (callerPackage == null) {
                    String msg = "Permission Denial: not allowed to send broadcast "
                            + action + " from unknown caller.";
                    Slog.w(TAG, msg);
@@ -17153,17 +17153,17 @@ public final class ActivityManagerService extends ActivityManagerNative
                    // They are good enough to send to an explicit component...  verify
                    // it is being sent to the calling app.
                    if (!intent.getComponent().getPackageName().equals(
                            callerApp.info.packageName)) {
                            callerPackage)) {
                        String msg = "Permission Denial: not allowed to send broadcast "
                                + action + " to "
                                + intent.getComponent().getPackageName() + " from "
                                + callerApp.info.packageName;
                                + callerPackage;
                        Slog.w(TAG, msg);
                        throw new SecurityException(msg);
                    }
                } else {
                    // Limit broadcast to their own package.
                    intent.setPackage(callerApp.info.packageName);
                    intent.setPackage(callerPackage);
                }
            }
        }