From patchwork Wed Mar 7 15:45:20 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerome Martinez X-Patchwork-Id: 7847 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.181.170 with SMTP id m39csp5110730jaj; Wed, 7 Mar 2018 07:45:26 -0800 (PST) X-Google-Smtp-Source: AG47ELvWRCEb8ImhmHVNwIj8roAua+Z7H5Ku9t5OSHmP6g4Jrc6Oyj0miAhcehsgsJ+rC1Scnwva X-Received: by 10.223.199.137 with SMTP id l9mr21066277wrg.6.1520437526521; Wed, 07 Mar 2018 07:45:26 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1520437526; cv=none; d=google.com; s=arc-20160816; b=OJ7zSM826LF/BTCE5I/UFocIyc3Hqp9Jzp0xGZPTgOV1Bp7qUIRvkbvI21j1oHj7BX uDcVqAJaQLbBQ1hsiFqwokTh0bsyQOhO6ClEyFs+ygd3Vr9SpN1ofdaoJRGg4IMR646X T7fJfzFsnr/Ij2BvbtX4IoJzi9Hdgg5OftV2qsWGJsOrAlKKzQ6vvArt6HwM8HtvzOTq qjHehjImSMPbJJpO1zxoH3yDttB1UyMJUsA04BEEaKkM0dgEFuu/NP3ZKD3Mf/7J+9LS P7Ba2m0ddbrHHe0MZSZhPzqTCEAJVKs3G9lb2oKX9LitpZAzZxlr6kr2nqDOfmtLXpM7 vWkA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:to:delivered-to :arc-authentication-results; bh=QMAPJ3qGKUd412pYoOZ6/pDpOswoJGugUZd7gYH4O+o=; b=kuz+S5ahv3AP1tEgCBZgFiz2495bRsd+BMYRVd/y076cdl4XIiLavMejUzXLQtdsOu Je4wcHrfu0+WsqFob/OoCMw5LFihHPdmuySCjfIA8RD/kQBUcqT44bqX+U/XMgcgf/qK bCqIEz/D0xJEnuybeYAYhgPfm+6sXqNMBYvkc60wOAu7w1xQR9uikxlNjA24S0ZNWy4k Zsu/oXXxSEBDJe6nigMkeYozty5nOrAZRNBHpKbRD9o/icxgaNTj2SGj6L/p58/88BrH GVWdPF890A4ZRzRoElvg5HoZLyZgRF1iBpPqi5mvrrcF5KMWljNRnRCi6Rv1kAcAG58T TW6Q== ARC-Authentication-Results: i=1; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id w6si12671778wrc.501.2018.03.07.07.45.26; Wed, 07 Mar 2018 07:45:26 -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 86F5668A4A6; Wed, 7 Mar 2018 17:45:16 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from 6.mo69.mail-out.ovh.net (6.mo69.mail-out.ovh.net [46.105.50.107]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C02CB68A2AE for ; Wed, 7 Mar 2018 17:45:10 +0200 (EET) Received: from player778.ha.ovh.net (unknown [10.109.105.125]) by mo69.mail-out.ovh.net (Postfix) with ESMTP id 80B5C581B4 for ; Wed, 7 Mar 2018 16:45:18 +0100 (CET) Received: from [192.168.2.120] (p5DDB6D89.dip0.t-ipconnect.de [93.219.109.137]) (Authenticated sender: zen-lists@mediaarea.net) by player778.ha.ovh.net (Postfix) with ESMTPSA id 22D8F180094 for ; Wed, 7 Mar 2018 16:45:18 +0100 (CET) To: ffmpeg-devel@ffmpeg.org References: <4b0efe51-d6c0-9a37-ce34-155387d1a8e8@mediaarea.net> From: Jerome Martinez Message-ID: <909fd1a5-f76b-d981-37d7-f1998259c6d0@mediaarea.net> Date: Wed, 7 Mar 2018 16:45:20 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 MIME-Version: 1.0 In-Reply-To: <4b0efe51-d6c0-9a37-ce34-155387d1a8e8@mediaarea.net> Content-Language: en-GB X-Ovh-Tracer-Id: 652458996863799485 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: 0 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgedtfedrkedvgdekudcutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfqggfjpdevjffgvefmvefgnecuuegrihhlohhuthemuceftddtnecu Subject: [FFmpeg-devel] [PATCH 1/7] avcodec/ffv1dec: add missing error messages when a frame is invalid 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" A buggy file (before the patch preventing such issue is applied): ffmpeg -y -f lavfi -i mandelbrot=s=31x31 -vframes 1 -c ffv1 -slices 961 a.mkv Then with: ffmpeg -y -f lavfi -i mandelbrot=s=31x31 -vframes 1 source.jpg ffmpeg -y -i a.mkv a.jpg There is no error message despite the fact the stream was not correctly decoded (a.jpg is not like source.jpg), but user is not informed that the decoding was not good. This patch adds error message to the output when relevant. From 04f7275bdefe56ca2ff5d175de6e392f60c31bc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Martinez?= Date: Wed, 7 Mar 2018 10:36:36 +0100 Subject: [PATCH 1/7] avcodec/ffv1dec: add missing error messages when a frame is invalid --- libavcodec/ffv1dec.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/libavcodec/ffv1dec.c b/libavcodec/ffv1dec.c index 3d2ee2569f..94bd60ad2b 100644 --- a/libavcodec/ffv1dec.c +++ b/libavcodec/ffv1dec.c @@ -296,6 +296,7 @@ static int decode_slice(AVCodecContext *c, void *arg) if (decode_slice_header(f, fs) < 0) { fs->slice_x = fs->slice_y = fs->slice_height = fs->slice_width = 0; fs->slice_damaged = 1; + av_log(f->avctx, AV_LOG_ERROR, "Invalid content found while parsing slice header\n"); return AVERROR_INVALIDDATA; } } @@ -432,8 +433,10 @@ static int read_extra_header(FFV1Context *f) if (f->version > 2) { c->bytestream_end -= 4; f->micro_version = get_symbol(c, state, 0); - if (f->micro_version < 0) + if (f->micro_version < 0) { + av_log(f->avctx, AV_LOG_ERROR, "Invalid micro_version in global header\n"); return AVERROR_INVALIDDATA; + } } f->ac = get_symbol(c, state, 0); @@ -759,11 +762,15 @@ static int read_header(FFV1Context *f) fs->slice_width = fs->slice_width / f->num_h_slices - fs->slice_x; fs->slice_height = fs->slice_height / f->num_v_slices - fs->slice_y; if ((unsigned)fs->slice_width > f->width || - (unsigned)fs->slice_height > f->height) + (unsigned)fs->slice_height > f->height) { + av_log(f->avctx, AV_LOG_ERROR, "Invalid content found while parsing header\n"); return AVERROR_INVALIDDATA; + } if ( (unsigned)fs->slice_x + (uint64_t)fs->slice_width > f->width - || (unsigned)fs->slice_y + (uint64_t)fs->slice_height > f->height) + || (unsigned)fs->slice_y + (uint64_t)fs->slice_height > f->height) { + av_log(f->avctx, AV_LOG_ERROR, "Invalid content found while parsing header\n"); return AVERROR_INVALIDDATA; + } } for (i = 0; i < f->plane_count; i++) {