diff options
author | Mike Kelly <mike.kelly@arm.com> | 2023-03-08 10:08:20 +0000 |
---|---|---|
committer | Kevin May <kevin.may@arm.com> | 2023-03-08 13:57:20 +0000 |
commit | 084cb4dcb9eca3eac3fc634f052ddb7d7fcc0bb4 (patch) | |
tree | 9cdbb9ca9855f9655ba1bbf97691b25a671c5821 /ArmnnPreparedModel_1_2.cpp | |
parent | 0637bf38b24bba3a3d88f34ed956111a3abddda2 (diff) | |
download | android-nn-driver-branches/android-nn-driver_23_02.tar.gz |
IVGCVSW-7404 Out of bounds detectionv23.02branches/android-nn-driver_23_02
* Added test to ensure that all inputs and outputs do not go out of
bounds.
Signed-off-by: Mike Kelly <mike.kelly@arm.com>
Change-Id: Ia97e85f71e46cd2203306243e4dcbc23e0f29ec1
Diffstat (limited to 'ArmnnPreparedModel_1_2.cpp')
-rw-r--r-- | ArmnnPreparedModel_1_2.cpp | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/ArmnnPreparedModel_1_2.cpp b/ArmnnPreparedModel_1_2.cpp index c54ee354..a401b30e 100644 --- a/ArmnnPreparedModel_1_2.cpp +++ b/ArmnnPreparedModel_1_2.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd and Contributors. All rights reserved. +// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -312,11 +312,20 @@ Return<V1_0::ErrorStatus> ArmnnPreparedModel_1_2<HalVersion>::PrepareMemoryForIn for (unsigned int i = 0; i < request.inputs.size(); i++) { const auto& inputArg = request.inputs[i]; - armnn::TensorInfo inputTensorInfo = m_Runtime->GetInputTensorInfo(m_NetworkId, i); // inputs (of type InputTensors) is composed of a vector of ConstTensors. // Therefore, set all TensorInfo isConstant parameters of input Tensors to true. inputTensorInfo.SetConstant(); + auto result = ValidateRequestArgument<V1_0::ErrorStatus, V1_0::Request>(request, + inputTensorInfo, + inputArg, + "input"); + + if (result != V1_0::ErrorStatus::NONE) + { + return result; + } + const armnn::Tensor inputTensor = GetTensorForRequestArgument(inputArg, inputTensorInfo, memPools); if (inputTensor.GetMemoryArea() == nullptr) @@ -342,8 +351,17 @@ Return<V1_0::ErrorStatus> ArmnnPreparedModel_1_2<HalVersion>::PrepareMemoryForOu for (unsigned int i = 0; i < request.outputs.size(); i++) { const auto& outputArg = request.outputs[i]; + armnn::TensorInfo outputTensorInfo = m_Runtime->GetOutputTensorInfo(m_NetworkId, i); + auto result = ValidateRequestArgument<V1_0::ErrorStatus, V1_0::Request>(request, + outputTensorInfo, + outputArg, + "output"); + + if (result != V1_0::ErrorStatus::NONE) + { + return result; + } - const armnn::TensorInfo outputTensorInfo = m_Runtime->GetOutputTensorInfo(m_NetworkId, i); const armnn::Tensor outputTensor = GetTensorForRequestArgument(outputArg, outputTensorInfo, memPools); if (outputTensor.GetMemoryArea() == nullptr) { |