> 在 2017年11月20日,15:43,Jun Zhao <mypopy...@gmail.com> 写道: > > > > On 2017/11/20 15:35, 刘歧 wrote: >> >>> 在 2017年11月20日,15:23,Jun Zhao <mypopy...@gmail.com> 写道: >>> >>> >>> >>> On 2017/11/20 14:45, Steven Liu wrote: >>>> fix ticket id: #6846 >>>> >>>> Signed-off-by: Steven Liu <l...@chinaffmpeg.org> >>>> --- >>>> libavformat/avio.c | 8 ++++++++ >>>> 1 file changed, 8 insertions(+) >>>> >>>> diff --git a/libavformat/avio.c b/libavformat/avio.c >>>> index 4dc468350c..e719326660 100644 >>>> --- a/libavformat/avio.c >>>> +++ b/libavformat/avio.c >>>> @@ -625,6 +625,8 @@ int64_t ffurl_size(URLContext *h) >>>> >>>> int ffurl_get_file_handle(URLContext *h) >>>> { >>>> + if (!h) >>>> + return AVERROR(EINVAL); >>>> if (!h->prot->url_get_file_handle) >>> I think (!h && !h->prot && !h->prot->url_get_file_handle) more better >>> than this >> maybe you mean (!h || !h->port || !h->prot->url_get_file_handle) , is it? > No, I means > if (!h && !h->prot && !h->prot->url_get_file_handle) > Do somthing will segmentation failed if !h is true, that is when h = NULL, and then get h->prot or h->prot->url_get_file_handle will in EXC_BAD_ACCESS. So i this the better is (!h || !h->port || !h->prot->url_get_file_handle) return error. > else > return error; > >>>> return -1; >>>> return h->prot->url_get_file_handle(h); >>>> @@ -632,6 +634,8 @@ int ffurl_get_file_handle(URLContext *h) >>>> >>>> int ffurl_get_multi_file_handle(URLContext *h, int **handles, int >>>> *numhandles) >>>> { >>>> + if (!h) >>>> + return AVERROR(EINVAL); >>>> if (!h->prot->url_get_multi_file_handle) { >>>> if (!h->prot->url_get_file_handle) >>>> return AVERROR(ENOSYS); >>>> @@ -647,6 +651,8 @@ int ffurl_get_multi_file_handle(URLContext *h, int >>>> **handles, int *numhandles) >>>> >>>> int ffurl_get_short_seek(URLContext *h) >>>> { >>>> + if (!h) >>>> + return AVERROR(EINVAL); >>>> if (!h->prot->url_get_short_seek) >>>> return AVERROR(ENOSYS); >>>> return h->prot->url_get_short_seek(h); >>>> @@ -654,6 +660,8 @@ int ffurl_get_short_seek(URLContext *h) >>>> >>>> int ffurl_shutdown(URLContext *h, int flags) >>>> { >>>> + if (!h) >>>> + return AVERROR(EINVAL); >>>> if (!h->prot->url_shutdown) >>>> return AVERROR(EINVAL); >>>> return h->prot->url_shutdown(h, flags); > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel