avio_rb32(pb); /* Max samples. */
thp->fps = av_d2q(av_int2float(avio_rb32(pb)), INT_MAX);
+ if (thp->fps.den <= 0 || thp->fps.num < 0)
+ return AVERROR_INVALIDDATA;
thp->framecnt = avio_rb32(pb);
thp->first_framesz = avio_rb32(pb);
pb->maxsize = avio_rb32(pb);
avio_seek (pb, thp->compoff, SEEK_SET);
thp->compcount = avio_rb32(pb);
+ if (thp->compcount > FF_ARRAY_ELEMS(thp->components))
+ return AVERROR_INVALIDDATA;
+
/* Read the list of component types. */
avio_read(pb, thp->components, 16);
}
}
+ if (!thp->vst)
+ return AVERROR_INVALIDDATA;
+
return 0;
}
if (ret < 0)
return ret;
if (ret != size) {
- av_packet_unref(pkt);
return AVERROR(EIO);
}
if (ret < 0)
return ret;
if (ret != thp->audiosize) {
- av_packet_unref(pkt);
return AVERROR(EIO);
}