From patchwork Wed Nov 30 14:26:04 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tobias Rapp X-Patchwork-Id: 1612 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.65.86 with SMTP id o83csp392320vsa; Wed, 30 Nov 2016 06:26:15 -0800 (PST) X-Received: by 10.28.21.21 with SMTP id 21mr27463129wmv.132.1480515975279; Wed, 30 Nov 2016 06:26:15 -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 x125si7344853wmd.163.2016.11.30.06.26.14; Wed, 30 Nov 2016 06:26:15 -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 6465F689E9E; Wed, 30 Nov 2016 16:26:05 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from p1002.netstorage.at (p1002.netstorage.at [89.207.146.186]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5467B689D5B for ; Wed, 30 Nov 2016 16:25:59 +0200 (EET) Received: from mailix (noaport.de [46.237.252.213]) by p1002.netstorage.at (Postfix) with ESMTPA id 5D68D8199D for ; Wed, 30 Nov 2016 15:26:05 +0100 (CET) Received: from [127.0.0.1] (HSI-KBW-46-237-252-214.hsi.kabel-badenwuerttemberg.de [46.237.252.214]) by mailix with ESMTPSA (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128) ; Wed, 30 Nov 2016 15:26:05 +0100 To: ffmpeg-devel@ffmpeg.org References: <1479802586-26759-1-git-send-email-t.rapp@noa-archive.com> <20161122133415.GM4824@nb4> <391c1ccb-b6cf-33ff-8d79-149d53ff7b51@noa-archive.com> <20161122140620.GO4824@nb4> <45068928-9615-b368-7ef7-0a7d36b182e5@noa-archive.com> From: Tobias Rapp Organization: NOA GmbH Message-ID: Date: Wed, 30 Nov 2016 15:26:04 +0100 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.5.0 MIME-Version: 1.0 In-Reply-To: <45068928-9615-b368-7ef7-0a7d36b182e5@noa-archive.com> X-PPP-Message-ID: <20161130142605.28211.12764@p1002.netstorage.at> X-PPP-Vhost: noa-archive.com Subject: Re: [FFmpeg-devel] [PATCH v2] ffmpeg: fix uninitialized return value 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" On 22.11.2016 15:34, Tobias Rapp wrote: > On 22.11.2016 15:06, Michael Niedermayer wrote: >> On Tue, Nov 22, 2016 at 02:43:57PM +0100, Tobias Rapp wrote: >>> On 22.11.2016 14:34, Michael Niedermayer wrote: >>>> On Tue, Nov 22, 2016 at 09:16:26AM +0100, Tobias Rapp wrote: >>>>> Signed-off-by: Tobias Rapp >>>>> --- >>>>> ffmpeg.c | 2 +- >>>>> 1 file changed, 1 insertion(+), 1 deletion(-) >>>> >>>> do you have a testcase for this ? >>> >>> No, I just stumbled over it when reading the code. >> >> are you sure that the codepath leaving ret uninitialized is possible ? >> >> if not adding a av_assert() may be better > > From my quick glance I assumed that ist->nb_filters could be zero and > the for-loop is not entered. If that should never be the case I agree > that an added av_assert(ist->nb_filters > 0) would be better. I added an assert and it is not triggered when running FATE, see attached patch. Regards, Tobias From a270cfdb637a48aca12d492cf4cb72d9200b6024 Mon Sep 17 00:00:00 2001 From: Tobias Rapp Date: Thu, 24 Nov 2016 15:45:00 +0100 Subject: [PATCH 1/2] ffmpeg: assert return value is initialized Signed-off-by: Tobias Rapp --- ffmpeg.c | 1 + 1 file changed, 1 insertion(+) diff --git a/ffmpeg.c b/ffmpeg.c index c47a824..e4890a4 100644 --- a/ffmpeg.c +++ b/ffmpeg.c @@ -2070,6 +2070,7 @@ static int send_frame_to_filters(InputStream *ist, AVFrame *decoded_frame) int i, ret; AVFrame *f; + av_assert1(ist->nb_filters > 0); /* ensure ret is initialized */ for (i = 0; i < ist->nb_filters; i++) { if (i < ist->nb_filters - 1) { f = ist->filter_frame; -- 1.9.1