@@ -116,6 +116,14 @@ Result<Tag> MethodMeta::input_tag(size_t index) const {
116
116
index,
117
117
num_inputs);
118
118
auto input_index = s_plan_->inputs ()->Get (index);
119
+ size_t num_values = s_plan_->values ()->size ();
120
+ ET_CHECK_OR_RETURN_ERROR (
121
+ input_index >= 0 && input_index < num_values,
122
+ InvalidProgram,
123
+ " internal value index %d out of range [0,%zu) for input %zu" ,
124
+ input_index,
125
+ num_values,
126
+ index);
119
127
auto serialization_value = s_plan_->values ()->Get (input_index);
120
128
return get_tag (serialization_value, index);
121
129
}
@@ -132,6 +140,7 @@ Result<TensorInfo> MethodMeta::input_tensor_meta(size_t index) const {
132
140
(size_t )tag.get (),
133
141
index);
134
142
auto input_index = s_plan_->inputs ()->Get (index);
143
+ // input_index was already validated by input_tag().
135
144
auto tensor_value = s_plan_->values ()->Get (input_index)->val_as_Tensor ();
136
145
return TensorInfo (
137
146
Span<const int32_t >(
@@ -156,8 +165,16 @@ Result<Tag> MethodMeta::output_tag(size_t index) const {
156
165
" index %zu out of range. num_outputs: %zu" ,
157
166
index,
158
167
num_outputs);
159
- auto input_index = s_plan_->outputs ()->Get (index);
160
- auto serialization_value = s_plan_->values ()->Get (input_index);
168
+ auto output_index = s_plan_->outputs ()->Get (index);
169
+ size_t num_values = s_plan_->values ()->size ();
170
+ ET_CHECK_OR_RETURN_ERROR (
171
+ output_index >= 0 && output_index < num_values,
172
+ InvalidProgram,
173
+ " internal value index %d out of range [0,%zu) for output %zu" ,
174
+ output_index,
175
+ num_values,
176
+ index);
177
+ auto serialization_value = s_plan_->values ()->Get (output_index);
161
178
return get_tag (serialization_value, index);
162
179
}
163
180
@@ -173,6 +190,7 @@ Result<TensorInfo> MethodMeta::output_tensor_meta(size_t index) const {
173
190
(size_t )tag.get (),
174
191
index);
175
192
auto output_index = s_plan_->outputs ()->Get (index);
193
+ // output_index was already validated by output_tag().
176
194
auto tensor_value = s_plan_->values ()->Get (output_index)->val_as_Tensor ();
177
195
178
196
return TensorInfo (
0 commit comments