aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2023-06-23 11:04:46 -0300
committerJames Almer <jamrial@gmail.com>2023-06-23 11:06:35 -0300
commita9d41ab89016fabe5d2f0dba4d10b2580608d428 (patch)
treedfcbd8b68dd0c6b32dbfab03b3b0131eed9f227b /libavcodec
parent5fdb12d6a06016ee01022b96f271b7223976c3d8 (diff)
downloadffmpeg-a9d41ab89016fabe5d2f0dba4d10b2580608d428.tar.gz
avcodec/evc_frame_merge: remove an av_packet_copy_props() call
And only fill out if no failures can happen, fixing potential leaks. Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/evc_frame_merge_bsf.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/libavcodec/evc_frame_merge_bsf.c b/libavcodec/evc_frame_merge_bsf.c
index 3e1258c6c9..cfdf24c69e 100644
--- a/libavcodec/evc_frame_merge_bsf.c
+++ b/libavcodec/evc_frame_merge_bsf.c
@@ -228,15 +228,17 @@ static int evc_frame_merge_filter(AVBSFContext *bsf, AVPacket *out)
data_size = ctx->au_buffer.data_size;
ctx->au_buffer.data_size = 0;
- err = av_new_packet(out, data_size);
- if (err < 0)
- goto end;
- err = av_packet_copy_props(out, buffer_pkt);
+ // drop the data in buffer_pkt, if any, but keep the props
+ av_buffer_unref(&buffer_pkt->buf);
+ err = av_buffer_realloc(&buffer_pkt->buf, data_size + AV_INPUT_BUFFER_PADDING_SIZE);
if (err < 0)
goto end;
- av_packet_unref(buffer_pkt);
+ buffer_pkt->data = buffer_pkt->buf->data;
+ buffer_pkt->size = data_size;
+ av_packet_move_ref(out, buffer_pkt);
memcpy(out->data, ctx->au_buffer.data, data_size);
+ memset(out->data + data_size, 0, AV_INPUT_BUFFER_PADDING_SIZE);
err = 0;
end: