mirror of https://git.ffmpeg.org/ffmpeg.git
nutdec: reject negative value_len in read_sm_data
If it is negative, it can cause the byte position to move backwards in avio_skip, which in turn makes sm_size negative and thus size larger than the size of the packet buffer, causing invalid writes in avio_read. Also fix potential overflow of avio_tell(bc) + value_len. Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
This commit is contained in:
parent
9d38f06d05
commit
ce10f572c1
|
@ -934,7 +934,7 @@ static int read_sm_data(AVFormatContext *s, AVIOContext *bc, AVPacket *pkt, int
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
value_len = ffio_read_varlen(bc);
|
value_len = ffio_read_varlen(bc);
|
||||||
if (avio_tell(bc) + value_len >= maxpos)
|
if (value_len < 0 || value_len >= maxpos - avio_tell(bc))
|
||||||
return AVERROR_INVALIDDATA;
|
return AVERROR_INVALIDDATA;
|
||||||
if (!strcmp(name, "Palette")) {
|
if (!strcmp(name, "Palette")) {
|
||||||
dst = av_packet_new_side_data(pkt, AV_PKT_DATA_PALETTE, value_len);
|
dst = av_packet_new_side_data(pkt, AV_PKT_DATA_PALETTE, value_len);
|
||||||
|
|
Loading…
Reference in New Issue