Browse Source

Fix av_packet_split_side_data.

p cannot be calculated before av_dup_packet since that one
might change avpkt->data, causing invalid reads and a
non-working range check.

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
tags/n0.9
Reimar Döffinger 14 years ago
parent
commit
54a09f18e3
1 changed files with 2 additions and 1 deletions
  1. +2
    -1
      libavcodec/avpacket.c

+ 2
- 1
libavcodec/avpacket.c View File

@@ -237,10 +237,11 @@ int av_packet_split_side_data(AVPacket *pkt){
if (!pkt->side_data_elems && pkt->size >12 && AV_RB64(pkt->data + pkt->size - 8) == FF_MERGE_MARKER){
int i;
unsigned int size;
uint8_t *p= pkt->data + pkt->size - 8 - 5;
uint8_t *p;

av_dup_packet(pkt);

p = pkt->data + pkt->size - 8 - 5;
for (i=1; ; i++){
size = AV_RB32(p);
if (size>INT_MAX || p - pkt->data <= size)


Loading…
Cancel
Save