summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Niedermayer <michael@niedermayer.cc>2015-07-13 21:19:04 +0200
committerMichael Niedermayer <michael@niedermayer.cc>2015-07-20 04:43:41 +0200
commit9d0f7a8d78d67d71be190714838d2b2537e84513 (patch)
treee5ce8d26ccb0c1db5dfe2118a2c7f83a87d74aea
parentdf6f2daccf66954f900be9b785a07d699ab5beda (diff)
downloadffmpeg-9d0f7a8d78d67d71be190714838d2b2537e84513.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> (cherry picked from commit 5d346feafa817c4fbc30f7ed0b93b2dad6cef15b) Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-rw-r--r--libavcodec/pthread_frame.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/libavcodec/pthread_frame.c b/libavcodec/pthread_frame.c
index 5a4ab84a4a..e7ac377e3c 100644
--- a/libavcodec/pthread_frame.c
+++ b/libavcodec/pthread_frame.c
@@ -571,7 +571,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);
avctx->codec = NULL;
@@ -591,12 +591,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);
}