mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-13 21:28:01 +02:00
Do not overread input buffer.
Fixes issue 2503. Patch by Daniel Kang, daniel.d.kang at gmail Originally committed as revision 26256 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
10d8eac98d
commit
fea714ecd9
@ -55,6 +55,7 @@ static int decode_frame(AVCodecContext *avctx,
|
||||
AVPacket *avpkt)
|
||||
{
|
||||
const uint8_t *buf = avpkt->data;
|
||||
const uint8_t *buf_end = avpkt->data + avpkt->size;
|
||||
int buf_size = avpkt->size;
|
||||
DPXContext *const s = avctx->priv_data;
|
||||
AVFrame *picture = data;
|
||||
@ -172,6 +173,10 @@ static int decode_frame(AVCodecContext *avctx,
|
||||
case 8:
|
||||
case 12: // Treat 12-bit as 16-bit
|
||||
case 16:
|
||||
if (source_packet_size*avctx->width*avctx->height > buf_end - buf) {
|
||||
av_log(avctx, AV_LOG_ERROR, "Overread buffer. Invalid header?\n");
|
||||
return -1;
|
||||
}
|
||||
if (source_packet_size == target_packet_size) {
|
||||
for (x = 0; x < avctx->height; x++) {
|
||||
memcpy(ptr, buf, target_packet_size*avctx->width);
|
||||
|
Loading…
Reference in New Issue
Block a user