From 56cda83f8c8397df5e0e69bc933a226427b0d5d2 Mon Sep 17 00:00:00 2001 From: Lev Proleev Date: Thu, 5 Dec 2019 14:49:47 +0000 Subject: [PATCH] Fix use-after-free error in NNAPI VTS tests Replace std::initializer_list with std::vector. Fix: 145705114 Test: VtsHalNeuralnetworksV1_[23]TargetTest Change-Id: I92cbc56b2b8fbb36b3f3225e7cd0d4b05c84041e --- .../1.2/vts/functional/GeneratedTestHarness.cpp | 9 +++++---- .../1.3/vts/functional/GeneratedTestHarness.cpp | 17 ++++++++--------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/neuralnetworks/1.2/vts/functional/GeneratedTestHarness.cpp b/neuralnetworks/1.2/vts/functional/GeneratedTestHarness.cpp index c1bf494328..4909214a3f 100644 --- a/neuralnetworks/1.2/vts/functional/GeneratedTestHarness.cpp +++ b/neuralnetworks/1.2/vts/functional/GeneratedTestHarness.cpp @@ -29,13 +29,14 @@ #include #include #include +#include #include -#include #include #include #include #include +#include #include "1.0/Utils.h" #include "1.2/Callbacks.h" @@ -333,9 +334,9 @@ void EvaluatePreparedModel(const sp& preparedModel, const TestMo void EvaluatePreparedModel(const sp& preparedModel, const TestModel& testModel, bool testDynamicOutputShape) { - std::initializer_list outputTypesList; - std::initializer_list measureTimingList; - std::initializer_list executorList; + std::vector outputTypesList; + std::vector measureTimingList; + std::vector executorList; if (testDynamicOutputShape) { outputTypesList = {OutputType::UNSPECIFIED, OutputType::INSUFFICIENT}; diff --git a/neuralnetworks/1.3/vts/functional/GeneratedTestHarness.cpp b/neuralnetworks/1.3/vts/functional/GeneratedTestHarness.cpp index 3e947f5163..f61240efa6 100644 --- a/neuralnetworks/1.3/vts/functional/GeneratedTestHarness.cpp +++ b/neuralnetworks/1.3/vts/functional/GeneratedTestHarness.cpp @@ -34,13 +34,14 @@ #include #include #include +#include #include -#include #include #include #include #include +#include #include "1.0/Utils.h" #include "1.2/Callbacks.h" @@ -368,9 +369,9 @@ void EvaluatePreparedModel(const sp& preparedModel, const TestMo void EvaluatePreparedModel(const sp& preparedModel, const TestModel& testModel, TestKind testKind) { - std::initializer_list outputTypesList; - std::initializer_list measureTimingList; - std::initializer_list executorList; + std::vector outputTypesList; + std::vector measureTimingList; + std::vector executorList; switch (testKind) { case TestKind::GENERAL: { @@ -403,11 +404,9 @@ void EvaluatePreparedCoupledModels(const sp& preparedModel, const TestModel& testModel, const sp& preparedCoupledModel, const TestModel& coupledModel) { - std::initializer_list outputTypesList = {OutputType::FULLY_SPECIFIED}; - std::initializer_list measureTimingList = {MeasureTiming::NO, - MeasureTiming::YES}; - std::initializer_list executorList = {Executor::ASYNC, Executor::SYNC, - Executor::BURST}; + const std::vector outputTypesList = {OutputType::FULLY_SPECIFIED}; + const std::vector measureTimingList = {MeasureTiming::NO, MeasureTiming::YES}; + const std::vector executorList = {Executor::ASYNC, Executor::SYNC, Executor::BURST}; for (const OutputType outputType : outputTypesList) { for (const MeasureTiming measureTiming : measureTimingList) {