diff --git a/libavformat/iff.c b/libavformat/iff.c index f4d806b7b8..2a3729f97e 100644 --- a/libavformat/iff.c +++ b/libavformat/iff.c @@ -529,8 +529,11 @@ static int iff_read_header(AVFormatContext *s) st->codecpar->extradata = av_malloc(data_size + IFF_EXTRA_VIDEO_SIZE + AV_INPUT_BUFFER_PADDING_SIZE); if (!st->codecpar->extradata) return AVERROR(ENOMEM); - if (avio_read(pb, st->codecpar->extradata + IFF_EXTRA_VIDEO_SIZE, data_size) < 0) + if (avio_read(pb, st->codecpar->extradata + IFF_EXTRA_VIDEO_SIZE, data_size) < 0) { + av_freep(&st->codecpar->extradata); + st->codecpar->extradata_size = 0; return AVERROR(EIO); + } break; case ID_BMHD: