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

Reply via email to