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

Commit 93ec6f2a authored by Devin Moore's avatar Devin Moore
Browse files

Don't store a pointer to internal SensorManager

The underlying SensorManager::getInstanceForPackage already manages and
caches the SensorManager instance.
The fuzzers are treating this as a memory leak since it's never freed in
sensorservice.

Test: m
Bug: 266474722
Change-Id: I0025cf9c2e51f96e134dcdfe13771b5289535ce5
parent 24b785d3
Loading
Loading
Loading
Loading
+2 −6
Original line number Diff line number Diff line
@@ -185,13 +185,9 @@ ndk::ScopedAStatus SensorManagerAidl::getSensorList(std::vector<SensorInfo>* _ai
}

::android::SensorManager& SensorManagerAidl::getInternalManager() {
    std::lock_guard<std::mutex> lock(mInternalManagerMutex);
    if (mInternalManager == nullptr) {
        mInternalManager = &::android::SensorManager::getInstanceForPackage(
    return ::android::SensorManager::getInstanceForPackage(
            String16(ISensorManager::descriptor));
}
    return *mInternalManager;
}

/* One global looper for all event queues created from this SensorManager. */
sp<Looper> SensorManagerAidl::getLooper() {
+0 −2
Original line number Diff line number Diff line
@@ -57,8 +57,6 @@ private:
    ::android::SensorManager& getInternalManager();
    sp<Looper> getLooper();

    std::mutex mInternalManagerMutex;
    ::android::SensorManager* mInternalManager = nullptr; // does not own
    sp<Looper> mLooper;

    volatile bool mStopThread;
+2 −6
Original line number Diff line number Diff line
@@ -193,13 +193,9 @@ sp<Looper> SensorManager::getLooper() {
}

::android::SensorManager& SensorManager::getInternalManager() {
    std::lock_guard<std::mutex> lock(mInternalManagerMutex);
    if (mInternalManager == nullptr) {
        mInternalManager = &::android::SensorManager::getInstanceForPackage(
    return ::android::SensorManager::getInstanceForPackage(
            String16(ISensorManager::descriptor));
}
    return *mInternalManager;
}

Return<void> SensorManager::createEventQueue(
        const sp<IEventQueueCallback> &callback, createEventQueue_cb _hidl_cb) {
+0 −2
Original line number Diff line number Diff line
@@ -58,8 +58,6 @@ private:
    ::android::SensorManager& getInternalManager();
    sp<Looper> getLooper();

    std::mutex mInternalManagerMutex;
    ::android::SensorManager* mInternalManager = nullptr; // does not own
    sp<Looper> mLooper;

    volatile bool mStopThread;