Module: libav Branch: release/12 Commit: d951a2747968b989882c7da4fae393fee67e4dc2
Author: Sean McGovern <gsean...@gmail.com> Committer: Sean McGovern <gsean...@gmail.com> Date: Fri Mar 24 13:36:51 2017 -0400 nsvdec: don't ignore the return value of av_get_packet() Fixes invalid reads with corrupted files. CC: libav-sta...@libav.org Bug-Id: 1039 (cherry picked from commit fe6eea99efac66839052af547426518efd970b24) Signed-off-by: Sean McGovern <gsean...@gmail.com> --- libavformat/nsvdec.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/libavformat/nsvdec.c b/libavformat/nsvdec.c index 05d5f8b..30a5eae 100644 --- a/libavformat/nsvdec.c +++ b/libavformat/nsvdec.c @@ -536,6 +536,7 @@ static int nsv_read_chunk(AVFormatContext *s, int fill_header) uint32_t vsize; uint16_t asize; uint16_t auxsize; + int ret; av_log(s, AV_LOG_TRACE, "%s(%d)\n", __FUNCTION__, fill_header); @@ -594,7 +595,8 @@ null_chunk_retry: if (vsize && st[NSV_ST_VIDEO]) { nst = st[NSV_ST_VIDEO]->priv_data; pkt = &nsv->ahead[NSV_ST_VIDEO]; - av_get_packet(pb, pkt, vsize); + if ((ret = av_get_packet(pb, pkt, vsize)) < 0) + return ret; pkt->stream_index = st[NSV_ST_VIDEO]->index;//NSV_ST_VIDEO; pkt->dts = nst->frame_offset; pkt->flags |= nsv->state == NSV_HAS_READ_NSVS ? AV_PKT_FLAG_KEY : 0; /* keyframe only likely on a sync frame */ @@ -635,7 +637,8 @@ null_chunk_retry: av_log(s, AV_LOG_TRACE, "NSV RAWAUDIO: bps %d, nchan %d, srate %d\n", bps, channels, samplerate); } } - av_get_packet(pb, pkt, asize); + if ((ret = av_get_packet(pb, pkt, asize)) < 0) + return ret; pkt->stream_index = st[NSV_ST_AUDIO]->index;//NSV_ST_AUDIO; pkt->flags |= nsv->state == NSV_HAS_READ_NSVS ? AV_PKT_FLAG_KEY : 0; /* keyframe only likely on a sync frame */ if( nsv->state == NSV_HAS_READ_NSVS && st[NSV_ST_VIDEO] ) { _______________________________________________ libav-commits mailing list libav-commits@libav.org https://lists.libav.org/mailman/listinfo/libav-commits