From patchwork Fri Jul 29 15:00:44 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yuli Khodorkovskiy X-Patchwork-Id: 25 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.140.67 with SMTP id o64csp1393586vsd; Fri, 29 Jul 2016 08:15:09 -0700 (PDT) X-Received: by 10.28.50.199 with SMTP id y190mr1581134wmy.61.1469805309221; Fri, 29 Jul 2016 08:15:09 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id p1si3910137wmd.53.2016.07.29.08.15.08; Fri, 29 Jul 2016 08:15:09 -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=@gmail.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; dmarc=fail (p=NONE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 66B40689F70; Fri, 29 Jul 2016 18:14:59 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk0-f193.google.com (mail-qk0-f193.google.com [209.85.220.193]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 62913689EE2 for ; Fri, 29 Jul 2016 18:14:45 +0300 (EEST) Received: by mail-qk0-f193.google.com with SMTP id s186so1049274qkb.1 for ; Fri, 29 Jul 2016 08:14:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:date:message-id; bh=qXgrQDzl2jHoqeoLRRmhMnWDrBjQouZjBMyeS4VVahI=; b=hCbmN1hanmnhzN1LRfnj/YV1lEGaC/8qScgFT+L4soy4YRkhmM1nrYJVxf7db+F3CD HP9S7fEHmqprj7b4GPAWSHOrnmqtY7bPwWAOIcNCFBvbVaAjXeabko+Y8gxxXwKASTnG k5gJNg8nJqd+jHbMofpHNUPHbAhN8k1P/NniEonaqk0xq3uZaikXp1YoR6ADAMeQLNfW WGmYTWS8VsoydknkSTQHyxDq7WLNaWRlXOpGB4hI2ktBdpT4YN5ZBfn2kxKdn6TXiFOL ae3B7HLVy0y/CvPDJaLNbUv5EACUoWDUEp1uEPjIZWRK4gDHeuZB8TnNUj0+KMrae6Je UWVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:subject:date:message-id; bh=qXgrQDzl2jHoqeoLRRmhMnWDrBjQouZjBMyeS4VVahI=; b=aOSGKLG69+fNFc0JbDsWKB2DG9AxXcOvUZzjWehWEzJ15FIsSxQlpCZSCs2tPATm/b 68sYfQtlgWTy8c/zCyEYqS3yrmj1MQcOvHz5bBkO9DZk9gOuqQTELG+iB/LCb+5jFOlS be0n3jwKlnDBDlT4h7c4aN1nb1CtFMSZ7tl01V2JF2nQwsgGv5qsuKhsks+2SkEi8TV8 i5R7eQ3ePhn/dkw6R4idP+Ra87Zlj1rmeMDOh15SldJRf/WhJOxEPl8B2mTaCn22TcH0 HT3yj4OYKVSgySIeeJwT/UfrqjrrLJEGKe6mrQXlfP41VL7IrGkbQ1LRsCZfGurxbpGK ETTA== X-Gm-Message-State: AEkoousKh6c6FB1kNKYQdVVYnrY/sWVug4UG3QikBY2nf/NQTIBBlrij+8MYm+Ji5Lyy+g== X-Received: by 10.55.155.198 with SMTP id d189mr53516114qke.54.1469804462474; Fri, 29 Jul 2016 08:01:02 -0700 (PDT) Received: from localhost.localdomain.com (static-96-244-17-66.bltmmd.fios.verizon.net. [96.244.17.66]) by smtp.gmail.com with ESMTPSA id c15sm10237674qkg.46.2016.07.29.08.01.01 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 29 Jul 2016 08:01:01 -0700 (PDT) From: Yuli Khodorkovskiy To: ffmpeg-devel@ffmpeg.org Date: Fri, 29 Jul 2016 11:00:44 -0400 Message-Id: <1469804444-32575-1-git-send-email-ykhodo@gmail.com> X-Mailer: git-send-email 1.8.3.1 Subject: [FFmpeg-devel] [PATCH] Fix null dereferences in the qsv decoder 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" This patch fixes the h264_qsv decoder issues mentioned in https://ffmpeg.zeranoe.com/forum/viewtopic.php?t=2962. The patch may be tested by specifying h264_qsv as the decoder to ffplay for an h264 encoded file. ffplay -vcodec h264_qsv foo.mts Signed-off-by: Yuli Khodorkovskiy --- libavcodec/qsvdec.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c index 9125700..98585e3 100644 --- a/libavcodec/qsvdec.c +++ b/libavcodec/qsvdec.c @@ -555,16 +555,18 @@ void ff_qsv_decode_reset(AVCodecContext *avctx, QSVContext *q) } /* Reset output surfaces */ - av_fifo_reset(q->async_fifo); + if (q->async_fifo) + av_fifo_reset(q->async_fifo); /* Reset input packets fifo */ - while (av_fifo_size(q->pkt_fifo)) { + while (q->pkt_fifo && av_fifo_size(q->pkt_fifo)) { av_fifo_generic_read(q->pkt_fifo, &pkt, sizeof(pkt), NULL); av_packet_unref(&pkt); } /* Reset input bitstream fifo */ - av_fifo_reset(q->input_fifo); + if (q->input_fifo) + av_fifo_reset(q->input_fifo); } int ff_qsv_decode_close(QSVContext *q)