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

Commit 87421816 authored by Frankie Lizcano's avatar Frankie Lizcano
Browse files

Tuner HAL VTS: Fix Memory Leak

This CL fixes an issue on the Tuner HAL VTS that lead to a memory leak.
Heap space was allocated to store Lnb Id's for dataflows without being
cleaned using Free(). The fix includes switching to the use of an
integer passed by reference. No heap memory is allocated.

Bug: b/240572001

Test: Test: ts-tradefed run vts --module VtsHalTvTunerTargetTest
Change-Id: I9fcad4c05f548ee4b64cfb34175f34834eec6c56
parent 81dcde82
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -25,6 +25,8 @@
#include <utils/Mutex.h>
#include <map>

#define INVALID_LNB_ID -1

using android::Condition;
using android::Mutex;

+8 −10
Original line number Diff line number Diff line
@@ -129,8 +129,8 @@ void TunerBroadcastAidlTest::broadcastSingleFilterTest(FilterConfig filterConf,
    mFrontendTests.getFrontendIdByType(frontendConf.type, feId);
    ASSERT_TRUE(mFrontendTests.openFrontendById(feId));
    ASSERT_TRUE(mFrontendTests.setFrontendCallback());
    if (mLnbId) {
        ASSERT_TRUE(mFrontendTests.setLnb(*mLnbId));
    if (mLnbId != INVALID_LNB_ID) {
        ASSERT_TRUE(mFrontendTests.setLnb(mLnbId));
    }
    if (frontendConf.isSoftwareFe) {
        mFrontendTests.setSoftwareFrontendDvrConfig(dvrMap[live.dvrSoftwareFeId]);
@@ -162,10 +162,9 @@ void TunerBroadcastAidlTest::broadcastSingleFilterTestWithLnb(FilterConfig filte
        ASSERT_TRUE(mLnbTests.getLnbIds(ids));
        ASSERT_TRUE(ids.size() > 0);
        ASSERT_TRUE(mLnbTests.openLnbById(ids[0]));
        mLnbId = &ids[0];
        mLnbId = ids[0];
    } else {
        mLnbId = (int32_t*)malloc(sizeof(int32_t));
        ASSERT_TRUE(mLnbTests.openLnbByName(lnbConf.name, *mLnbId));
        ASSERT_TRUE(mLnbTests.openLnbByName(lnbConf.name, mLnbId));
    }
    ASSERT_TRUE(mLnbTests.setLnbCallback());
    ASSERT_TRUE(mLnbTests.setVoltage(lnbConf.voltage));
@@ -173,7 +172,7 @@ void TunerBroadcastAidlTest::broadcastSingleFilterTestWithLnb(FilterConfig filte
    ASSERT_TRUE(mLnbTests.setSatellitePosition(lnbConf.position));
    broadcastSingleFilterTest(filterConf, frontendConf);
    ASSERT_TRUE(mLnbTests.closeLnb());
    mLnbId = nullptr;
    mLnbId = INVALID_LNB_ID;
}

void TunerBroadcastAidlTest::mediaFilterUsingSharedMemoryTest(FilterConfig filterConf,
@@ -248,10 +247,9 @@ void TunerRecordAidlTest::recordSingleFilterTestWithLnb(FilterConfig filterConf,
        ASSERT_TRUE(mLnbTests.getLnbIds(ids));
        ASSERT_TRUE(ids.size() > 0);
        ASSERT_TRUE(mLnbTests.openLnbById(ids[0]));
        mLnbId = &ids[0];
        mLnbId = ids[0];
    } else {
        mLnbId = (int32_t*)malloc(sizeof(int32_t));
        ASSERT_TRUE(mLnbTests.openLnbByName(lnbConf.name, *mLnbId));
        ASSERT_TRUE(mLnbTests.openLnbByName(lnbConf.name, mLnbId));
    }
    ASSERT_TRUE(mLnbTests.setLnbCallback());
    ASSERT_TRUE(mLnbTests.setVoltage(lnbConf.voltage));
@@ -262,7 +260,7 @@ void TunerRecordAidlTest::recordSingleFilterTestWithLnb(FilterConfig filterConf,
    }
    recordSingleFilterTest(filterConf, frontendConf, dvrConf);
    ASSERT_TRUE(mLnbTests.closeLnb());
    mLnbId = nullptr;
    mLnbId = INVALID_LNB_ID;
}

void TunerRecordAidlTest::attachSingleFilterToRecordDvrTest(FilterConfig filterConf,
+2 −4
Original line number Diff line number Diff line
@@ -276,7 +276,6 @@ class TunerRecordAidlTest : public testing::TestWithParam<std::string> {
    virtual void TearDown() override {
        clearIds();
        mService = nullptr;
        mLnbId = nullptr;
    }

  protected:
@@ -299,7 +298,7 @@ class TunerRecordAidlTest : public testing::TestWithParam<std::string> {
    LnbTests mLnbTests;

  private:
    int32_t* mLnbId = nullptr;
    int32_t mLnbId = INVALID_LNB_ID;
};

GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(TunerRecordAidlTest);
@@ -357,7 +356,6 @@ class TunerBroadcastAidlTest : public testing::TestWithParam<std::string> {
    virtual void TearDown() override {
        clearIds();
        mService = nullptr;
        mLnbId = nullptr;
    }

  protected:
@@ -380,7 +378,7 @@ class TunerBroadcastAidlTest : public testing::TestWithParam<std::string> {
    void mediaFilterUsingSharedMemoryTest(FilterConfig filterConf, FrontendConfig frontendConf);

  private:
    int32_t* mLnbId = nullptr;
    int32_t mLnbId = INVALID_LNB_ID;
};

GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(TunerBroadcastAidlTest);