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

Commit 14673993 authored by Xusong Wang's avatar Xusong Wang Committed by Automerger Merge Worker
Browse files

Fix use-after-free crash in VtsHalNeuralnetworksTargetTest. am: dee204e1 am:...

Fix use-after-free crash in VtsHalNeuralnetworksTargetTest. am: dee204e1 am: 6713a4f7 am: f6f88872

Original change: https://googleplex-android-review.googlesource.com/c/platform/hardware/interfaces/+/15694529

Change-Id: I16ecbf07d4ef2325a1d0805be5e3b9a349c95aa1
parents 6ae93f7c f6f88872
Loading
Loading
Loading
Loading
+6 −13
Original line number Diff line number Diff line
@@ -153,26 +153,19 @@ void TestBlobAHWB::initialize(uint32_t size) {
            .stride = size,
    };

    ASSERT_EQ(AHardwareBuffer_allocate(&desc, &mAhwb), 0);
    ASSERT_NE(mAhwb, nullptr);
    AHardwareBuffer* ahwb = nullptr;
    ASSERT_EQ(AHardwareBuffer_allocate(&desc, &ahwb), 0);
    ASSERT_NE(ahwb, nullptr);

    const auto sharedMemory =
            nn::createSharedMemoryFromAHWB(mAhwb, /*takeOwnership=*/false).value();
    mMapping = nn::map(sharedMemory).value();
    mMemory = nn::createSharedMemoryFromAHWB(ahwb, /*takeOwnership=*/true).value();
    mMapping = nn::map(mMemory).value();
    mPtr = static_cast<uint8_t*>(std::get<void*>(mMapping.pointer));
    CHECK_NE(mPtr, nullptr);
    mAidlMemory = utils::convert(sharedMemory).value();
    mAidlMemory = utils::convert(mMemory).value();

    mIsValid = true;
}

TestBlobAHWB::~TestBlobAHWB() {
    if (mAhwb) {
        AHardwareBuffer_unlock(mAhwb, nullptr);
        AHardwareBuffer_release(mAhwb);
    }
}

std::string gtestCompliantName(std::string name) {
    // gtest test names must only contain alphanumeric characters
    std::replace_if(
+1 −2
Original line number Diff line number Diff line
@@ -102,11 +102,10 @@ class TestBlobAHWB : public TestMemoryBase {
    // The constructor calls initialize, which constructs the memory resources. This is a
    // workaround that gtest macros cannot be used directly in a constructor.
    TestBlobAHWB(uint32_t size) { initialize(size); }
    ~TestBlobAHWB();

  private:
    void initialize(uint32_t size);
    AHardwareBuffer* mAhwb = nullptr;
    nn::SharedMemory mMemory;
    nn::Mapping mMapping;
};