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

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

Change-Id: I569c04dde3fd34564dcfc5b34d50ecad69f6d614
This commit is contained in:
Xusong Wang 2021-08-28 00:23:02 +00:00 committed by Automerger Merge Worker
commit 6713a4f73f
2 changed files with 7 additions and 15 deletions

View file

@ -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(

View file

@ -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;
};