Skip to content

Commit

Permalink
avformat/vividas: improve extradata packing checks in track_header()
Browse files Browse the repository at this point in the history
Fixes: out of array accesses
Fixes: 26622/clusterfuzz-testcase-minimized-ffmpeg_dem_VIVIDAS_fuzzer-6581200338288640

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
  • Loading branch information
michaelni committed Nov 4, 2020
1 parent 437b730 commit 27a99e2
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions libavformat/vividas.c
Expand Up @@ -28,6 +28,7 @@
* @sa http://wiki.multimedia.cx/index.php?title=Vividas_VIV
*/

#include "libavutil/avassert.h"
#include "libavutil/intreadwrite.h"
#include "avio_internal.h"
#include "avformat.h"
Expand Down Expand Up @@ -379,7 +380,7 @@ static int track_header(VividasDemuxContext *viv, AVFormatContext *s, uint8_t *

if (avio_tell(pb) < off) {
int num_data;
int xd_size = 0;
int xd_size = 1;
int data_len[256];
int offset = 1;
uint8_t *p;
Expand All @@ -393,10 +394,10 @@ static int track_header(VividasDemuxContext *viv, AVFormatContext *s, uint8_t *
return AVERROR_INVALIDDATA;
}
data_len[j] = len;
xd_size += len;
xd_size += len + 1 + len/255;
}

ret = ff_alloc_extradata(st->codecpar, 64 + xd_size + xd_size / 255);
ret = ff_alloc_extradata(st->codecpar, xd_size);
if (ret < 0)
return ret;

Expand All @@ -405,9 +406,7 @@ static int track_header(VividasDemuxContext *viv, AVFormatContext *s, uint8_t *

for (j = 0; j < num_data - 1; j++) {
unsigned delta = av_xiphlacing(&p[offset], data_len[j]);
if (delta > data_len[j]) {
return AVERROR_INVALIDDATA;
}
av_assert0(delta <= xd_size - offset);
offset += delta;
}

Expand All @@ -418,6 +417,7 @@ static int track_header(VividasDemuxContext *viv, AVFormatContext *s, uint8_t *
av_freep(&st->codecpar->extradata);
break;
}
av_assert0(data_len[j] <= xd_size - offset);
offset += data_len[j];
}

Expand Down

0 comments on commit 27a99e2

Please sign in to comment.