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

Commit b6a34095 authored by Gavin Corkery's avatar Gavin Corkery
Browse files

Fix Rescue Party observability criteria

The previous behavior erroneously returned if the package
was not found by PackageManager#getModuleInfo, which means
the persistent process check would never be performed. This
caused packages like com.android.systemui to not be handled
by Rescue Party's mitigation logic. Instead, ensure that
both cases are checked.

Test: setprop persist.sys.enable_rescue true,
      adb shell setprop debug.crash_sysui 1,
      adb shell kill `pidof com.android.systemui`,
      ensure recovery mode is reached
Bug: 169284310
Change-Id: Ifec19b8daba1dacc7f5efcfa47ed3c3a046612e3
Merged-In: Ifec19b8daba1dacc7f5efcfa47ed3c3a046612e3
(cherry picked from commit f2abc4e6)
parent a80fb3bb
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -454,10 +454,14 @@ public class RescueParty {
        public boolean mayObservePackage(String packageName) {
            PackageManager pm = mContext.getPackageManager();
            try {
                // A package is a Mainline module if this is non-null
                // A package is a module if this is non-null
                if (pm.getModuleInfo(packageName, 0) != null) {
                    return true;
                }
            } catch (PackageManager.NameNotFoundException ignore) {
            }

            try {
                ApplicationInfo info = pm.getApplicationInfo(packageName, 0);
                return (info.flags & PERSISTENT_MASK) == PERSISTENT_MASK;
            } catch (PackageManager.NameNotFoundException e) {