From patchwork Mon Jun 11 14:21:17 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Guillem X-Patchwork-Id: 9365 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:11c:0:0:0:0:0 with SMTP id c28-v6csp4187314jad; Mon, 11 Jun 2018 07:21:33 -0700 (PDT) X-Google-Smtp-Source: ADUXVKKtJETD/GEcYaTXK0LnIys/nX+r7WMEtpKbDYxJBci8pRp1TPIl4HJ7M4kMm79Vg+fuCveh X-Received: by 2002:adf:f281:: with SMTP id k1-v6mr12200597wro.263.1528726893710; Mon, 11 Jun 2018 07:21:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1528726893; cv=none; d=google.com; s=arc-20160816; b=XJGrTXOwF5+B1BD28kLKl/x3uXUnV0Hlg092PESBjPaLscJxNMUPDVvYjXX3uzpaU3 IYPe1Ll7+or2yJYhODJyyVPtTBF77SduXJW64bnc7k8P3HXzRO+mrY7px+DQ5/NC8Xf/ 1+b4Oag0Uz0R+XNvAe0gUkSs/ORGFnERC8MnMkc7PZONFJxl2umm6FRZN0G941F3iezq ltd48/kaTkc/DEmn34uLhZTyRFdOT69btnnIoTn44OPBN8cgnR8MIAm9raJ5nyEzB1yd HcEUPGUiPiwgdQE9kW4SRxbklHCfY94P2Js25tW0iuI1J7Mnt/dba+7sNYTid/gq1wQk p/kA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:dkim-signature :dkim-signature:delivered-to:arc-authentication-results; bh=gzEHm54Fyy9sZykTqwBWE3R95XfajMhN53kg21H6rqg=; b=wm9KfL9pVrTAeCh/orF8lZaIWtLqcPNalelAOh+Tp8QGxq2mDlLFjFCeuK2EwjQmW7 0vYssvEOPwJ3Pz4+fWifZY8LgGllOU96RjAtMjwSLzlHSxfqdW2ZRodhlo7XNlPZ/evW W+jjxljJhfQ7ygHxisTHgumqlyKhxUUIyNQUlM0oeaoV8wTNvy8ufSR2gYv+vfPP/iwJ EtK90ipCEIdIg2rpfD/mIXeilUBvudNs0pdQeSkNHRTytE/IzSXiBeODbsCsZuWyR7oM pWTbvs/9w95Xzgpa/ocWJfuscyWqHu+dtoA2LySFB6m5CtG1OZkk5kxe/Bv+HmH4sjsG xD9Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gllm.fr header.s=fm3 header.b=LsfKdRrP; dkim=neutral (body hash did not verify) header.i=@messagingengine.com header.s=fm3 header.b=vRScowRS; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gllm.fr Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id c21-v6si12279219wre.260.2018.06.11.07.21.32; Mon, 11 Jun 2018 07:21:33 -0700 (PDT) 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; dkim=neutral (body hash did not verify) header.i=@gllm.fr header.s=fm3 header.b=LsfKdRrP; dkim=neutral (body hash did not verify) header.i=@messagingengine.com header.s=fm3 header.b=vRScowRS; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gllm.fr Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6E9F968AD4A; Mon, 11 Jun 2018 17:20:41 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out1-smtp.messagingengine.com (out1-smtp.messagingengine.com [66.111.4.25]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E02E968AD2E for ; Mon, 11 Jun 2018 17:20:34 +0300 (EEST) Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.nyi.internal (Postfix) with ESMTP id C1D91214AC for ; Mon, 11 Jun 2018 10:21:22 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute5.internal (MEProxy); Mon, 11 Jun 2018 10:21:22 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gllm.fr; h=date :from:message-id:subject:to:x-me-sender:x-me-sender:x-sasl-enc; s=fm3; bh=hzS0fgMKeKPCSaCDouY5n5gKpEo2JraPtFcs/qX/SIQ=; b=LsfKd RrPAZ9i89Oeshzgc95DpYT3U6lMwKvW+LYgf0Yjq3mpgpe8C8IfieNDZxmqdakQH KySqes3+zeQM8Lv1V/NWNgu+aD+SL4K4xd/j3mK6dOoG2K2VVCd9PjAho8xpaOkK +sc9jBzOU72rv81aZRO66Pt7wrTSkPIiSmJYLWTheOBu8dShp5YwTYVLKSoLRtgY C7ZObcKjVaT0bTXGakdIEgzyrsJg4W+fAXGDxccSpXOG05dcg0B6zN0FqRltqzcJ NJ3X8TIX6kAE2rNekrJGp2sgwnRZdrNRqPMIpWklMFURgLs/+NKYKyMIdVq3zuIc VwbXJHWKWSKrtZ5JA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=date:from:message-id:subject:to :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; bh=hzS0fgMKeKPCSaCDo uY5n5gKpEo2JraPtFcs/qX/SIQ=; b=vRScowRSNFl/ZNQczB0CxsL9dRv+bnDyZ X4LnuW0/oZBsR9nAbmImdPwqSGQFrtmKfpvFoPjkJIVLhiq0mdBZWJ9XPk9/xvtp 6L9jRgCHMRuXTfhJW9nqD5mFHmo/bIs7nrijGUE3Nujee4JYEpOT/fvymMC/+LGq 6Pwwn4FZ4fmHw+RkT+iU67Q3U+hd6+rUfOdTndv586K6GErUeSL6DeObI6NbkOU0 9+Z6fsP3AxJXqGT5GX+82s51Iq9U6UqYU46EtTKT4JtkICzySG1edrctQYjSH4/d XbadL9FNjcllRW1N320gKL52NN3WgS1f52wCYxGwTBjZtcOKf9KWA== X-ME-Proxy: X-ME-Proxy: X-ME-Proxy: X-ME-Proxy: X-ME-Proxy: X-ME-Proxy: X-ME-Sender: Received: from localhost.localdomain (unknown [78.194.250.245]) by mail.messagingengine.com (Postfix) with ESMTPA id 32FB010266 for ; Mon, 11 Jun 2018 10:21:22 -0400 (EDT) From: Thomas Guillem To: ffmpeg-devel@ffmpeg.org Date: Mon, 11 Jun 2018 16:21:17 +0200 Message-Id: <20180611142119.12001-1-thomas@gllm.fr> X-Mailer: git-send-email 2.17.1 Subject: [FFmpeg-devel] [PATCH 1/3] avcodec/videotoolboxenc: fix mutex/cond leak in error path 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" The leak could happen when the vtenc_create_encoder() function failed. --- libavcodec/videotoolboxenc.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/libavcodec/videotoolboxenc.c b/libavcodec/videotoolboxenc.c index 7796a685c2..9f2a71b15d 100644 --- a/libavcodec/videotoolboxenc.c +++ b/libavcodec/videotoolboxenc.c @@ -2473,13 +2473,14 @@ static av_cold int vtenc_close(AVCodecContext *avctx) { VTEncContext *vtctx = avctx->priv_data; + pthread_cond_destroy(&vtctx->cv_sample_sent); + pthread_mutex_destroy(&vtctx->lock); + if(!vtctx->session) return 0; VTCompressionSessionCompleteFrames(vtctx->session, kCMTimeIndefinite); clear_frame_queue(vtctx); - pthread_cond_destroy(&vtctx->cv_sample_sent); - pthread_mutex_destroy(&vtctx->lock); CFRelease(vtctx->session); vtctx->session = NULL;