Skip to content

Commit

Permalink
Fix use after free in xnn_insert_clamp_node
Browse files Browse the repository at this point in the history
xnn_define_tensor_value can invalidate the output_value pointer, so copy data referred from it before calling xnn_define_tensor_value.

PiperOrigin-RevId: 678807574
  • Loading branch information
dsharletg authored and xnnpack-bot committed Sep 25, 2024
1 parent 3ac5962 commit 2286715
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions src/subgraph.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,9 @@ enum xnn_status xnn_insert_clamp_node(xnn_subgraph_t subgraph, float output_min,
struct xnn_value* output_value = &subgraph->values[output_id];
uint32_t new_id = XNN_INVALID_VALUE_ID;
enum xnn_status status;
const size_t num_dims = output_value->shape.num_dims;
const size_t* dims = output_value->shape.dim;
size_t num_dims = output_value->shape.num_dims;
size_t dims[XNN_MAX_TENSOR_DIMS];
memcpy(dims, output_value->shape.dim, num_dims * sizeof(size_t));
switch (output_value->datatype) {
case xnn_datatype_fp16:
status = xnn_define_tensor_value(
Expand Down

0 comments on commit 2286715

Please sign in to comment.