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

Commit fe6b4c0d authored by Alex Buynytskyy's avatar Alex Buynytskyy
Browse files

Per-uid timeouts.

- don't allow read restrictions for system uids,
- calling into incfs per-uid function.

Bug: 162345970
Test: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest PackageManagerServiceTest

Change-Id: If52ab97e67f867f5905f8919e886262dab7aa859
Merged-In: If52ab97e67f867f5905f8919e886262dab7aa859
parent 47c04289
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -28304,6 +28304,13 @@ public class PackageManagerService extends IPackageManager.Stub
                    }
                    continue;
                }
                if (ps.appId < Process.FIRST_APPLICATION_UID) {
                    if (DEBUG_PER_UID_READ_TIMEOUTS) {
                        Slog.i(TAG, "PerUidReadTimeouts: package is system, appId=" + ps.appId);
                    }
                    continue;
                }
                final AndroidPackage pkg = ps.getPkg();
                if (pkg.getLongVersionCode() < perPackage.versionCodes.minVersionCode
                        || pkg.getLongVersionCode() > perPackage.versionCodes.maxVersionCode) {
+11 −1
Original line number Diff line number Diff line
@@ -210,7 +210,17 @@ public:
    ErrorCode setUidReadTimeouts(const Control& control,
                                 const std::vector<android::os::incremental::PerUidReadTimeouts>&
                                         perUidReadTimeouts) const final {
        return -ENOTSUP;
        std::vector<incfs::UidReadTimeouts> timeouts;
        timeouts.resize(perUidReadTimeouts.size());
        for (int i = 0, size = perUidReadTimeouts.size(); i < size; ++i) {
            auto&& timeout = timeouts[i];
            const auto& perUidTimeout = perUidReadTimeouts[i];
            timeout.uid = perUidTimeout.uid;
            timeout.minTimeUs = perUidTimeout.minTimeUs;
            timeout.minPendingTimeUs = perUidTimeout.minPendingTimeUs;
            timeout.maxPendingTimeUs = perUidTimeout.maxPendingTimeUs;
        }
        return incfs::setUidReadTimeouts(control, timeouts);
    }
};