diff options
author | Eric Kunze <eric.kunze@arm.com> | 2022-10-14 13:33:58 -0700 |
---|---|---|
committer | Eric Kunze <eric.kunze@arm.com> | 2022-10-18 16:04:45 -0700 |
commit | 4196491afc23d375b5476b05be16defeed4eadad (patch) | |
tree | 1244a4b126fc3a746e7b8fddaeb817408831cc05 /reference_model | |
parent | bc2a3db54ecee48fe2236f7fc03da8fd07d81ca0 (diff) | |
download | reference_model-4196491afc23d375b5476b05be16defeed4eadad.tar.gz |
Update to check tensor size is valid
Validate tensor arguments
Signed-off-by: Eric Kunze <eric.kunze@arm.com>
Change-Id: Iac398f2c3e600944c6f65c3d8433bd17095f820b
Diffstat (limited to 'reference_model')
-rw-r--r-- | reference_model/src/subgraph_traverser.cc | 9 | ||||
-rw-r--r-- | reference_model/src/tosa_model_types.h | 22 |
2 files changed, 31 insertions, 0 deletions
diff --git a/reference_model/src/subgraph_traverser.cc b/reference_model/src/subgraph_traverser.cc index 15d82e6..ae216d8 100644 --- a/reference_model/src/subgraph_traverser.cc +++ b/reference_model/src/subgraph_traverser.cc @@ -14,6 +14,7 @@ // limitations under the License. #include "subgraph_traverser.h" +#include "tosa_model_types.h" #ifndef SUBGRAPH_ERROR_IF #define SUBGRAPH_ERROR_IF(COND, fmt, ...) \ @@ -323,6 +324,7 @@ int SubgraphTraverser::allocateTensor() auto got = used_tensor_name_set.find(ts->GetName()); if (got != used_tensor_name_set.end()) { + uint32_t elements = 1; for (auto& dim : ts->GetShape()) { if (dim <= 0) @@ -331,6 +333,13 @@ int SubgraphTraverser::allocateTensor() this->setGraphStatus(GraphStatus::TOSA_UNPREDICTABLE); return 1; } + if (dim > static_cast<int32_t>(TOSA_MAX_TENSOR_SIZE / elements)) + { + // Size greather than maximum defined in spec + DEBUG_INFO(GT, "Tensor %s size is greater than allowed maximum", ts->GetName().c_str()); + this->setGraphStatus(GraphStatus::TOSA_UNPREDICTABLE); + return 1; + } } } diff --git a/reference_model/src/tosa_model_types.h b/reference_model/src/tosa_model_types.h new file mode 100644 index 0000000..84402ae --- /dev/null +++ b/reference_model/src/tosa_model_types.h @@ -0,0 +1,22 @@ +// Copyright (c) 2022, ARM Limited. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef TOSA_MODEL_TYPES_H +#define TOSA_MODEL_TYPES_H + +#include <inttypes.h> + +inline const uint32_t TOSA_MAX_TENSOR_SIZE = ((1u << 31) - 1); + +#endif // TOSA_MODEL_TYPES_H
\ No newline at end of file |