summaryrefslogtreecommitdiff
path: root/libavfilter/dnn
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2021-03-10 15:40:36 +0100
committerAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2021-03-11 12:44:09 +0100
commitd915c1dd7ade0f2baaf9686c668183a770bac44c (patch)
tree1c7012cb1f191956275a5a82bd6b9bd5dd082b01 /libavfilter/dnn
parentf51f13902bbd2bb4dfb736cec830a830ba71fcc0 (diff)
dnn/dnn_backend_native_layer_conv2d: Fix memleak on realloc failure
Reviewed-by: Guo, Yejun <yejun.guo@intel.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Diffstat (limited to 'libavfilter/dnn')
-rw-r--r--libavfilter/dnn/dnn_backend_native_layer_conv2d.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/libavfilter/dnn/dnn_backend_native_layer_conv2d.c b/libavfilter/dnn/dnn_backend_native_layer_conv2d.c
index b5c2c394ef..2b83896da9 100644
--- a/libavfilter/dnn/dnn_backend_native_layer_conv2d.c
+++ b/libavfilter/dnn/dnn_backend_native_layer_conv2d.c
@@ -197,6 +197,7 @@ int ff_dnn_execute_layer_conv2d(DnnOperand *operands, const int32_t *input_opera
int width = operands[input_operand_indexes[0]].dims[2];
int pad_size = (conv_params->padding_method == VALID) ? (conv_params->kernel_size - 1) / 2 * conv_params->dilation : 0;
DnnOperand *output_operand = &operands[output_operand_index];
+ void *tmp;
output_operand->dims[0] = operands[input_operand_indexes[0]].dims[0];
output_operand->dims[1] = height - pad_size * 2;
@@ -208,11 +209,12 @@ int ff_dnn_execute_layer_conv2d(DnnOperand *operands, const int32_t *input_opera
av_log(ctx, AV_LOG_ERROR, "The output data length overflow\n");
return DNN_ERROR;
}
- output_operand->data = av_realloc(output_operand->data, output_operand->length);
- if (!output_operand->data) {
+ tmp = av_realloc(output_operand->data, output_operand->length);
+ if (!tmp) {
av_log(ctx, AV_LOG_ERROR, "Failed to reallocate memory for output\n");
return DNN_ERROR;
}
+ output_operand->data = tmp;
thread_common_param.output_data = output_operand->data;
thread_common_param.operands = operands;
thread_common_param.input_operand_indexes = input_operand_indexes;