avformat/siff: Fix checks and variable types
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
8f92c0898d
commit
e71dce5769
@ -56,7 +56,7 @@ typedef struct SIFFContext {
|
||||
int curstrm;
|
||||
unsigned int pktsize;
|
||||
int gmcsize;
|
||||
int sndsize;
|
||||
unsigned int sndsize;
|
||||
|
||||
unsigned int flags;
|
||||
uint8_t gmc[4];
|
||||
@ -208,10 +208,11 @@ static int siff_read_packet(AVFormatContext *s, AVPacket *pkt)
|
||||
}
|
||||
|
||||
if (!c->curstrm) {
|
||||
if (c->pktsize < 2LL + c->sndsize + c->gmcsize)
|
||||
return AVERROR_INVALIDDATA;
|
||||
|
||||
size = c->pktsize - c->sndsize - c->gmcsize - 2;
|
||||
size = ffio_limit(s->pb, size);
|
||||
if (size < 0 || c->pktsize < c->sndsize)
|
||||
return AVERROR_INVALIDDATA;
|
||||
if (av_new_packet(pkt, size + c->gmcsize + 2) < 0)
|
||||
return AVERROR(ENOMEM);
|
||||
AV_WL16(pkt->data, c->flags);
|
||||
|
Loading…
Reference in New Issue
Block a user