On Fri, Mar 24, 2017 at 10:44 PM, Luca Barbato <lu_z...@gentoo.org> wrote:
> On 24/03/2017 18:36, Sean McGovern wrote:
>> Fixes invalid reads with corrupted files.
>>
>> CC: libav-sta...@libav.org
>> Bug-Id: 1039
>> ---
>>  libavformat/nsvdec.c | 7 +++++--
>>  1 file changed, 5 insertions(+), 2 deletions(-)
>>
>> diff --git a/libavformat/nsvdec.c b/libavformat/nsvdec.c
>> index c91d2a1..924c869 100644
>> --- a/libavformat/nsvdec.c
>> +++ b/libavformat/nsvdec.c
>> @@ -520,6 +520,7 @@ static int nsv_read_chunk(AVFormatContext *s, int 
>> fill_header)
>>      uint32_t vsize;
>>      uint16_t asize;
>>      uint16_t auxsize;
>> +    int ret;
>>
>>      if (nsv->ahead[0].data || nsv->ahead[1].data)
>>          return 0; //-1; /* hey! eat what you've in your plate first! */
>> @@ -571,7 +572,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 */
>> @@ -615,7 +617,8 @@ null_chunk_retry:
>>                         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] ) {
>>
>
> I like this one better as well. Mostly because you might have different
> I/O errors not related to bogus dimension.

I'm fine either way
-- 
Vittorio
_______________________________________________
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to