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

Commit c0f6f63e authored by David Chen's avatar David Chen
Browse files

Fix bug in statsd with uid memory guardrail

Previously unsigned a negative number to unsigned type, so the int
comparison didn't work as planned.

Test: Manually tested and observed log messages.
Change-Id: Ic72c4dbde5e560288fd64ca11c4bcc81021fb1a9
parent 633792e2
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -106,9 +106,9 @@ void UidMap::updateMap(const int64_t& timestamp, const vector<int32_t>& uid,
            t->set_uid(uid[j]);
        }
        mBytesUsed += snapshot->ByteSize();
        ensureBytesUsedBelowLimit();
        StatsdStats::getInstance().setCurrentUidMapMemory(mBytesUsed);
        StatsdStats::getInstance().setUidMapSnapshots(mOutput.snapshots_size());
        ensureBytesUsedBelowLimit();
        getListenerListCopyLocked(&broadcastList);
    }
    // To avoid invoking callback while holding the internal lock. we get a copy of the listener
@@ -142,9 +142,9 @@ void UidMap::updateApp(const int64_t& timestamp, const String16& app_16, const i
        log->set_uid(uid);
        log->set_version(versionCode);
        mBytesUsed += log->ByteSize();
        ensureBytesUsedBelowLimit();
        StatsdStats::getInstance().setCurrentUidMapMemory(mBytesUsed);
        StatsdStats::getInstance().setUidMapChanges(mOutput.changes_size());
        ensureBytesUsedBelowLimit();

        auto range = mMap.equal_range(int(uid));
        bool found = false;
@@ -222,9 +222,9 @@ void UidMap::removeApp(const int64_t& timestamp, const String16& app_16, const i
        log->set_app(app);
        log->set_uid(uid);
        mBytesUsed += log->ByteSize();
        ensureBytesUsedBelowLimit();
        StatsdStats::getInstance().setCurrentUidMapMemory(mBytesUsed);
        StatsdStats::getInstance().setUidMapChanges(mOutput.changes_size());
        ensureBytesUsedBelowLimit();

        auto range = mMap.equal_range(int(uid));
        for (auto it = range.first; it != range.second; ++it) {
+2 −2
Original line number Diff line number Diff line
@@ -152,9 +152,9 @@ private:
    // until the memory consumed by mOutput is below the specified limit.
    void ensureBytesUsedBelowLimit();

    // Override used for testing the max memory allowed by uid map. -1 means we use the value
    // Override used for testing the max memory allowed by uid map. 0 means we use the value
    // specified in StatsdStats.h with the rest of the guardrails.
    size_t maxBytesOverride = -1;
    size_t maxBytesOverride = 0;

    // Cache the size of mOutput;
    size_t mBytesUsed;