[FFmpeg-devel] [PATCH 1/2] libavdevice/avfoundation.m: fix protential unreleased lock issue
Chengfeng Ye
cyeaa at connect.ust.hk
Thu Aug 26 17:40:24 EEST 2021
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.
Cc: cyeaa at connect.ust.hk
Bug tracker link: https://trac.ffmpeg.org/ticket/9385\#ticket
Signed-off-by: Chengfeng Ye <cyeaa at connect.ust.hk>
---
libavdevice/avfoundation.m | 3 +++
1 file changed, 3 insertions(+)
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;
}
--
2.17.1
More information about the ffmpeg-devel
mailing list