[FFmpeg-cvslog] avpacket: Fixing side data copy when src == dst
Vignesh Venkatasubramanian
git at videolan.org
Mon Sep 2 22:01:26 CEST 2013
ffmpeg | branch: master | Vignesh Venkatasubramanian <vigneshv at google.com> | Mon Sep 2 10:42:22 2013 -0700| [fdd1aaf87aaedef00f8b60ad148ccf48226b9d5c] | committer: Michael Niedermayer
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 <vigneshv at google.com>
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=fdd1aaf87aaedef00f8b60ad148ccf48226b9d5c
---
libavcodec/avpacket.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/libavcodec/avpacket.c b/libavcodec/avpacket.c
index b6b4109..3469647 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);
More information about the ffmpeg-cvslog
mailing list