diff options
author | Michael Niedermayer <michael@niedermayer.cc> | 2015-07-13 21:19:04 +0200 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2015-07-13 22:09:50 +0200 |
commit | 5d346feafa817c4fbc30f7ed0b93b2dad6cef15b (patch) | |
tree | be8edefb579830a967340c61e1041e2a689116c4 | |
parent | 84e847c7c80cc71d24f0e4ceb99331389d960b04 (diff) | |
download | ffmpeg-5d346feafa817c4fbc30f7ed0b93b2dad6cef15b.tar.gz |
avcodec/pthread_frame: check avctx on deallocation
Fixes null pointer dereferences
Fixes: af1a5a33e67e479f439239097bd0d4fd_signal_sigsegv_7ffff713351a_152_Dolby_Rain_Logo.pmp with memlimit of 8388608
Found-by: Samuel Groß, Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-rw-r--r-- | libavcodec/pthread_frame.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/libavcodec/pthread_frame.c b/libavcodec/pthread_frame.c index a8789ae464..df372e0c99 100644 --- a/libavcodec/pthread_frame.c +++ b/libavcodec/pthread_frame.c @@ -583,7 +583,7 @@ void ff_frame_thread_free(AVCodecContext *avctx, int thread_count) pthread_join(p->thread, NULL); p->thread_init=0; - if (codec->close) + if (codec->close && p->avctx) codec->close(p->avctx); release_delayed_buffers(p); @@ -601,12 +601,13 @@ void ff_frame_thread_free(AVCodecContext *avctx, int thread_count) av_packet_unref(&p->avpkt); av_freep(&p->released_buffers); - if (i) { + if (i && p->avctx) { av_freep(&p->avctx->priv_data); av_freep(&p->avctx->slice_offset); } - av_freep(&p->avctx->internal); + if (p->avctx) + av_freep(&p->avctx->internal); av_freep(&p->avctx); } |