Commit 5e1bf9d8 authored by Michael Niedermayer's avatar Michael Niedermayer

avcodec/avpacket: clear side_data_elems

Fixes null pointer dereference
Found-by: 's avatar连一汉 <lianyihan@360.cn>
Signed-off-by: 's avatarMichael Niedermayer <michael@niedermayer.cc>
parent dca03ec5
...@@ -198,6 +198,7 @@ static int copy_packet_data(AVPacket *pkt, const AVPacket *src, int dup) ...@@ -198,6 +198,7 @@ static int copy_packet_data(AVPacket *pkt, const AVPacket *src, int dup)
{ {
pkt->data = NULL; pkt->data = NULL;
pkt->side_data = NULL; pkt->side_data = NULL;
pkt->side_data_elems = 0;
if (pkt->buf) { if (pkt->buf) {
AVBufferRef *ref = av_buffer_ref(src->buf); AVBufferRef *ref = av_buffer_ref(src->buf);
if (!ref) if (!ref)
...@@ -207,9 +208,11 @@ static int copy_packet_data(AVPacket *pkt, const AVPacket *src, int dup) ...@@ -207,9 +208,11 @@ static int copy_packet_data(AVPacket *pkt, const AVPacket *src, int dup)
} else { } else {
DUP_DATA(pkt->data, src->data, pkt->size, 1, ALLOC_BUF); DUP_DATA(pkt->data, src->data, pkt->size, 1, ALLOC_BUF);
} }
if (pkt->side_data_elems && dup) if (src->side_data_elems && dup) {
pkt->side_data = src->side_data; pkt->side_data = src->side_data;
if (pkt->side_data_elems && !dup) { pkt->side_data_elems = src->side_data_elems;
}
if (src->side_data_elems && !dup) {
return av_copy_packet_side_data(pkt, src); return av_copy_packet_side_data(pkt, src);
} }
return 0; return 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment