mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-02-17 04:17:05 +00:00
avcodec/avpacket: allow only one element per type in packet side data
It was never meant to do otherwise, as av_packet_get_side_data() returns the first entry it finds of a given type. Based on code from libavformat's av_stream_add_side_data(). Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
parent
3d55e4883c
commit
28f60eeabb
@ -296,7 +296,18 @@ int av_packet_add_side_data(AVPacket *pkt, enum AVPacketSideDataType type,
|
|||||||
uint8_t *data, size_t size)
|
uint8_t *data, size_t size)
|
||||||
{
|
{
|
||||||
AVPacketSideData *tmp;
|
AVPacketSideData *tmp;
|
||||||
int elems = pkt->side_data_elems;
|
int i, elems = pkt->side_data_elems;
|
||||||
|
|
||||||
|
for (i = 0; i < elems; i++) {
|
||||||
|
AVPacketSideData *sd = &pkt->side_data[i];
|
||||||
|
|
||||||
|
if (sd->type == type) {
|
||||||
|
av_free(sd->data);
|
||||||
|
sd->data = data;
|
||||||
|
sd->size = size;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ((unsigned)elems + 1 > AV_PKT_DATA_NB)
|
if ((unsigned)elems + 1 > AV_PKT_DATA_NB)
|
||||||
return AVERROR(ERANGE);
|
return AVERROR(ERANGE);
|
||||||
|
Loading…
Reference in New Issue
Block a user