diff options
author | Chengfeng Ye <cyeaa@connect.ust.hk> | 2021-08-26 07:40:24 -0700 |
---|---|---|
committer | Thilo Borgmann <thilo.borgmann@mail.de> | 2021-09-17 15:31:32 +0200 |
commit | 9bbdfbfb32e5ad94a06a4ce2830a655009378684 (patch) | |
tree | a338aabe93e9458ae7aaefafcada1392fc607a16 /libavdevice | |
parent | a6760bb92b1079c32b2dee26edeaf23769f6dcb4 (diff) | |
download | ffmpeg-9bbdfbfb32e5ad94a06a4ce2830a655009378684.tar.gz |
libavdevice/avfoundation.m: fix protential unreleased lock issue
The problem here is that the lock ctx->frame_lock will
become an unreleased lock if the program returns at
line 697, line 735 and line744.
Bug tracker link: https://trac.ffmpeg.org/ticket/9385\#ticket
Signed-off-by: Chengfeng Ye <cyeaa@connect.ust.hk>
Diffstat (limited to 'libavdevice')
-rw-r--r-- | libavdevice/avfoundation.m | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/libavdevice/avfoundation.m b/libavdevice/avfoundation.m index 1d108417be..8ce3d064c5 100644 --- a/libavdevice/avfoundation.m +++ b/libavdevice/avfoundation.m @@ -693,6 +693,7 @@ static int get_audio_config(AVFormatContext *s) const AudioStreamBasicDescription *basic_desc = CMAudioFormatDescriptionGetStreamBasicDescription(format_desc); if (!basic_desc) { + unlock_frames(ctx); av_log(s, AV_LOG_ERROR, "audio format not available\n"); return 1; } @@ -731,6 +732,7 @@ static int get_audio_config(AVFormatContext *s) ctx->audio_packed) { stream->codecpar->codec_id = ctx->audio_be ? AV_CODEC_ID_PCM_S32BE : AV_CODEC_ID_PCM_S32LE; } else { + unlock_frames(ctx); av_log(s, AV_LOG_ERROR, "audio format is not supported\n"); return 1; } @@ -740,6 +742,7 @@ static int get_audio_config(AVFormatContext *s) ctx->audio_buffer_size = CMBlockBufferGetDataLength(block_buffer); ctx->audio_buffer = av_malloc(ctx->audio_buffer_size); if (!ctx->audio_buffer) { + unlock_frames(ctx); av_log(s, AV_LOG_ERROR, "error allocating audio buffer\n"); return 1; } |