Skip to content

Commit cea9b23

Browse files
Validate kTensorDimensionLimit
Differential Revision: D78675986 Pull Request resolved: #12684
1 parent a624083 commit cea9b23

File tree

3 files changed

+17
-0
lines changed

3 files changed

+17
-0
lines changed

runtime/executor/targets.bzl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ def define_common_targets():
133133
],
134134
deps = [
135135
"//executorch/schema:program",
136+
"//executorch/runtime/core/exec_aten/util:tensor_dimension_limit"
136137
],
137138
visibility = [
138139
"//executorch/runtime/executor/...",

runtime/executor/tensor_parser_aten.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
#include <executorch/runtime/core/exec_aten/util/dim_order_util.h>
1212
#include <executorch/runtime/core/exec_aten/util/scalar_type_util.h>
13+
#include <executorch/runtime/core/exec_aten/util/tensor_dimension_limit.h>
1314
#include <executorch/runtime/core/named_data_map.h>
1415
#include <executorch/runtime/executor/memory_manager.h>
1516
#include <executorch/runtime/executor/program.h>
@@ -58,6 +59,13 @@ Result<at::Tensor> parseTensor(
5859
s_tensor->sizes() != nullptr, InvalidProgram, "Missing sizes field");
5960
size_t ndim = s_tensor->sizes()->size();
6061

62+
ET_CHECK_OR_RETURN_ERROR(
63+
ndim <= kTensorDimensionLimit,
64+
InvalidProgram,
65+
"Tensor rank too large %" ET_PRIsize_t " > %zu",
66+
ndim,
67+
kTensorDimensionLimit)
68+
6169
ET_CHECK_OR_RETURN_ERROR(
6270
s_tensor->dim_order() != nullptr,
6371
InvalidProgram,

runtime/executor/tensor_parser_portable.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#include <executorch/runtime/core/exec_aten/exec_aten.h>
1212
#include <executorch/runtime/core/exec_aten/util/dim_order_util.h>
1313
#include <executorch/runtime/core/exec_aten/util/scalar_type_util.h>
14+
#include <executorch/runtime/core/exec_aten/util/tensor_dimension_limit.h>
1415
#include <executorch/runtime/core/named_data_map.h>
1516
#include <executorch/runtime/executor/memory_manager.h>
1617
#include <executorch/runtime/executor/program.h>
@@ -62,6 +63,13 @@ Result<Tensor> parseTensor(
6263
const auto serialized_sizes = s_tensor->sizes()->data();
6364
const auto dim = s_tensor->sizes()->size();
6465

66+
ET_CHECK_OR_RETURN_ERROR(
67+
dim <= kTensorDimensionLimit,
68+
InvalidProgram,
69+
"Tensor rank too large %" PRIu32 " > %zu",
70+
dim,
71+
kTensorDimensionLimit)
72+
6573
ET_CHECK_OR_RETURN_ERROR(
6674
s_tensor->dim_order() != nullptr,
6775
InvalidProgram,

0 commit comments

Comments
 (0)