From fdd1aaf87aaedef00f8b60ad148ccf48226b9d5c Mon Sep 17 00:00:00 2001 From: Vignesh Venkatasubramanian Date: Mon, 2 Sep 2013 10:42:22 -0700 Subject: [PATCH] avpacket: Fixing side data copy when src == dst Fixing av_packet_copy_side_data to work correctly when source and destination are the same. This makes sure that there is no memory leak and double frees. Signed-off by: Vignesh Venkatasubramanian Signed-off-by: Michael Niedermayer --- libavcodec/avpacket.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libavcodec/avpacket.c b/libavcodec/avpacket.c index b6b4109a2c..3469647277 100644 --- a/libavcodec/avpacket.c +++ b/libavcodec/avpacket.c @@ -225,8 +225,10 @@ int av_copy_packet_side_data(AVPacket *pkt, AVPacket *src) int i; DUP_DATA(pkt->side_data, src->side_data, src->side_data_elems * sizeof(*src->side_data), 0, ALLOC_MALLOC); - memset(pkt->side_data, 0, - src->side_data_elems * sizeof(*src->side_data)); + if (src != pkt) { + memset(pkt->side_data, 0, + src->side_data_elems * sizeof(*src->side_data)); + } for (i = 0; i < src->side_data_elems; i++) { DUP_DATA(pkt->side_data[i].data, src->side_data[i].data, src->side_data[i].size, 1, ALLOC_MALLOC);