From patchwork Sat Nov 12 01:23:30 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marton Balint X-Patchwork-Id: 1394 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.90.1 with SMTP id o1csp55266vsb; Fri, 11 Nov 2016 17:23:57 -0800 (PST) X-Received: by 10.28.74.25 with SMTP id x25mr700486wma.74.1478913837594; Fri, 11 Nov 2016 17:23:57 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 189si1566729wmz.7.2016.11.11.17.23.57; Fri, 11 Nov 2016 17:23:57 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id EED85689FA9; Sat, 12 Nov 2016 03:23:50 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from iq.passwd.hu (iq.passwd.hu [217.27.212.140]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DC607689F73 for ; Sat, 12 Nov 2016 03:23:44 +0200 (EET) Received: from localhost (localhost [127.0.0.1]) by iq.passwd.hu (Postfix) with ESMTP id B6511102C97; Sat, 12 Nov 2016 02:23:44 +0100 (CET) X-Virus-Scanned: amavisd-new at passwd.hu Received: from iq.passwd.hu ([127.0.0.1]) by localhost (iq.passwd.hu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20IeJKcXq7pJ; Sat, 12 Nov 2016 02:23:43 +0100 (CET) Received: from bluegene.passwd.hu (localhost [127.0.0.1]) by iq.passwd.hu (Postfix) with ESMTP id 78534100B58; Sat, 12 Nov 2016 02:23:43 +0100 (CET) From: Marton Balint To: ffmpeg-devel@ffmpeg.org Date: Sat, 12 Nov 2016 02:23:30 +0100 Message-Id: <1478913810-14063-2-git-send-email-cus@passwd.hu> X-Mailer: git-send-email 2.6.6 In-Reply-To: <1478913810-14063-1-git-send-email-cus@passwd.hu> References: <1478913810-14063-1-git-send-email-cus@passwd.hu> Subject: [FFmpeg-devel] [PATCH 2/2] lavf/fifo: fix undefined behaviour in deinit when destroying mutex X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Marton Balint MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Marton Balint Reviewed-by: jsebechlebsky --- libavformat/fifo.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libavformat/fifo.c b/libavformat/fifo.c index 15435fe..8f525e5 100644 --- a/libavformat/fifo.c +++ b/libavformat/fifo.c @@ -73,6 +73,7 @@ typedef struct FifoContext { int restart_with_keyframe; pthread_mutex_t overflow_flag_lock; + int overflow_flag_lock_initialized; /* Value > 0 signals queue overflow */ volatile uint8_t overflow_flag; @@ -515,6 +516,7 @@ static int fifo_init(AVFormatContext *avf) ret = pthread_mutex_init(&fifo->overflow_flag_lock, NULL); if (ret < 0) return AVERROR(ret); + fifo->overflow_flag_lock_initialized = 1; return 0; } @@ -601,7 +603,8 @@ static void fifo_deinit(AVFormatContext *avf) av_dict_free(&fifo->format_options); avformat_free_context(fifo->avf); av_thread_message_queue_free(&fifo->queue); - pthread_mutex_destroy(&fifo->overflow_flag_lock); + if (fifo->overflow_flag_lock_initialized) + pthread_mutex_destroy(&fifo->overflow_flag_lock); } #define OFFSET(x) offsetof(FifoContext, x)