Browse Source

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>
tags/n2.8
Michael Niedermayer 10 years ago
parent
commit
5d346feafa
1 changed files with 4 additions and 3 deletions
  1. +4
    -3
      libavcodec/pthread_frame.c

+ 4
- 3
libavcodec/pthread_frame.c View File

@@ -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);
}



Loading…
Cancel
Save