From patchwork Fri Dec 1 19:16:37 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dale Curtis X-Patchwork-Id: 6495 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.161.94 with SMTP id m30csp1532159jah; Fri, 1 Dec 2017 11:17:07 -0800 (PST) X-Google-Smtp-Source: AGs4zMZ1Kn6uz6klXoBcrQIVI7QwRm68/cq+0SHh7aid5GpMreAU5gZ38v1UJuYGIw+xuePqlGnP X-Received: by 10.28.138.20 with SMTP id m20mr2211757wmd.134.1512155827024; Fri, 01 Dec 2017 11:17:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1512155826; cv=none; d=google.com; s=arc-20160816; b=TSyrtR0bTHad8VJr+airFPX9qAsOrUgdn1C5dnLoXfu1W7Yl4VsuKZb/ne8/zcpXul g5RH4hDJn7o5acpyYF25iHc6tvo58lB47bMzo/XDV/mWnrcRrbYD0wWyqv2emdtjiJhO 627kNosxuma/iFkEoQGlLUMMRWdbUxXaGkjUi7G4nI0KrraUL1nwIcB1VHZlzq2R6n8o jFQLmxIHh14iCpbKMphqyBlv+BPC0DoQPE2C96uS+zuW/zaud5LVk9yHFQ9dxYxTxbB7 nrX8JDAWOvlvnK5xYGcOduBy2XfbRkSE/K5eoNeA0jsHXRcyiV2RxOzCZUxr2gvED4kE 0t4A== 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:to :message-id:date:from:references:in-reply-to:mime-version :dkim-signature:dkim-signature:delivered-to :arc-authentication-results; bh=kW1QIQUQ17Sy/L8vz59xEFt/49R6yJ0hw4JB+8tuboE=; b=dcOsn4hO2b3YyxTlDO9gVSbZTlJbuQvWGYOE6xegyHf23u5auct0i8ttx8MLuxgNqh vUWrVkK0p0nh7bfORaqMSq6gPNU5zkqdquP6cFiny05AkPDVm/Qx+wvcQOZTpxZxllHo 37/H3jfAbEC+PaFDBB7WU4/3CFlj+bbH+fCIJaAP9w2eDPvL7m9gTqyuhrNWgz6zRC+q ErxfVoHYL5ZAhzWj4pMJZZcft3rg8q76etdIM7pKC9OEZSj5xqeTf2jIPQj7lxbc8CAA BA7FpS3P5TNX9j3lAaNdnfAfpcxIXR12U9mZpMxc/6Drh09pfeGyUXweJn972xFzpbFN 51QQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@google.com header.s=20161025 header.b=JP/IFl+9; dkim=neutral (body hash did not verify) header.i=@chromium.org header.s=google header.b=BV7kCSwx; 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=chromium.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id l22si1129498wmc.185.2017.12.01.11.17.06; Fri, 01 Dec 2017 11:17:06 -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; dkim=neutral (body hash did not verify) header.i=@google.com header.s=20161025 header.b=JP/IFl+9; dkim=neutral (body hash did not verify) header.i=@chromium.org header.s=google header.b=BV7kCSwx; 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=chromium.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5803C68A428; Fri, 1 Dec 2017 21:17:02 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm0-f45.google.com (mail-wm0-f45.google.com [74.125.82.45]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0A86768A0EE for ; Fri, 1 Dec 2017 21:16:56 +0200 (EET) Received: by mail-wm0-f45.google.com with SMTP id 9so5309692wme.4 for ; Fri, 01 Dec 2017 11:16:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to; bh=AQ2HoXgfJVd1+4wJTvpn/iOpNcq1XJdWX4WqvKRv+tc=; b=JP/IFl+99vAUJIBrEU9R5UsQbZXHYaVKaW5WVspyDqVN4CPEREydiWPHDwXw7pDcHi 8myc3UfuPrjmKwZDDHheHbVMv42oSa6GAyqsHj2wgTHVw1e0hXm6AezpuvHTTgAhBniA LwW7VFUwSIRdLq1MLHBvjG27eSg9lXKJP/C72oimfqNTzbofd1tiZBv3OgX7DzsVwi82 JdYoerEPWmQ7ecDu107z38CBk+gyEWMAbbkKLoz3Maf61/6XVWwsc//OCaLTFRCgtUrD g6tbGY1/hdiAQeZQH4RO+S7s/oHEUaq/4xr5BKYdGDbUcqYvt90weT+59iP1ovlDauMc Q28g== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to; bh=AQ2HoXgfJVd1+4wJTvpn/iOpNcq1XJdWX4WqvKRv+tc=; b=BV7kCSwxhBBB+jDpRKDDlWP1nLJ9fH9UyiVpRsbasn1Q7CGol0OwSH4sGVa+Q53cE1 CJVzVgAaXO3zOqGCPouYx+V+uCtLfpAdXEGWrvxvkGjtKvrfDayoDkYbqky5SN1o1E0S jftEQNLTOYXv2k9MsyahLUmIyhoz4GM12WeGw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to; bh=AQ2HoXgfJVd1+4wJTvpn/iOpNcq1XJdWX4WqvKRv+tc=; b=cXs5K5lhA2KLg7NB4mIF2OsVmOH/4bbrboKl1MwnFCfC2wnM/Z+CId1lqju1A2yXuY c79E9GRX2NT+MqepLMizrDIMlpSu2rWxdaHboULf32HFRMwDtzH6QMGM+vNfIHzlccEq YarBVFZnJvPcbdTAH+W+g/WBtQ+LzL8JAsf+O89qB9ak+eL1NkcoLWxCRVB0lALBXVXn b8o9fwNMHU9JWoukGMjhdk9Zs0GjdiaL/IYhKm6HREJCD3fVSyD0YDsFc1liYj/vXmFi r5R3GSu8fB47qQxLmOd4CDXs7o0TZvNCYZvoJpxLl9FJASM+iKwemELz4b4BvwKMhiWr JSog== X-Gm-Message-State: AJaThX5igDzFF4BM0VGz0DzsF8TtV17SrEcbkX5d2MEjIL5whqYbc6fB YhAUIhpF0MZUSGzybg7JGKCIgqn4mmjt6jr9p/rLskDpQlU= X-Received: by 10.28.49.195 with SMTP id x186mr1879418wmx.116.1512155818645; Fri, 01 Dec 2017 11:16:58 -0800 (PST) MIME-Version: 1.0 Received: by 10.28.161.4 with HTTP; Fri, 1 Dec 2017 11:16:37 -0800 (PST) In-Reply-To: <20171201014954.GC4636@nb4> References: <20171129003221.GI4636@nb4> <20171130015853.GQ4636@nb4> <20171201014954.GC4636@nb4> From: Dale Curtis Date: Fri, 1 Dec 2017 11:16:37 -0800 X-Google-Sender-Auth: _q6Vrkh4TirB-0ZISqY9solfMr0 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.20 Subject: Re: [FFmpeg-devel] [ogg] Respect AVERROR codes returned by ogg header parsing. 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 Thu, Nov 30, 2017 at 5:49 PM, Michael Niedermayer wrote: > I dont see anything really wrong with the file > For kicks, I tried running it through oggz-validate, but it doesn't know how to handle ogm. Which TIL, is distinct from ogv. > > it seems what happens is that theres a data packet in one stream that > preceeds the headers on the other streams, technically that data packet > likely contains the video headers so its kind of a header too. > > The demuxer stops header parsing prematurly due to this. > from there on it gets confused reading the same header twice > while it determines the duration of the file which triggers the error > > There are a few differnt ways to fix this, iam not sure which is the > simplest but i dont think the demuxer should fail in this case > > Applying a workaround similar to what you did here works: http://git.videolan.org/?p=ffmpeg.git;a=commitdiff;h=c04c43b3e423d0426162828e7b180e4d0014a3f7 I.e. condition AVERROR_INVALIDATA based on priv->vp being incomplete here: http://git.videolan.org/?p=ffmpeg.git;a=blob;f=libavformat/oggparsevorbis.c;h=65b1998a02d92d0fcaeb740d8f4523641502dbea;hb=HEAD#l319 WDYT? Here's a patch to do this and fail on AVERROR w/o the AV_EF_EXPLODE restriction. - dale From a6f5e47b54a08ac0ab2461b5e5189748059c7a9f Mon Sep 17 00:00:00 2001 From: Dale Curtis Date: Tue, 28 Nov 2017 13:40:20 -0800 Subject: [PATCH] Respect AVERROR codes returned by ogg parsers. Fixes ticket #6804. All of the ogg header and packet parsers may return standard AVERROR codes; these return values should not be treated as success. Additionally changes oggparsevorbis, to not give up too early with certain types of poorly muxed files. Signed-off-by: Dale Curtis --- libavformat/oggdec.c | 14 +++++++++++--- libavformat/oggparsevorbis.c | 2 +- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/libavformat/oggdec.c b/libavformat/oggdec.c index 193a286e43..38f60653f9 100644 --- a/libavformat/oggdec.c +++ b/libavformat/oggdec.c @@ -543,7 +543,11 @@ static int ogg_packet(AVFormatContext *s, int *sid, int *dstart, int *dsize, os->incomplete = 0; if (os->header) { - os->header = os->codec->header(s, idx); + if ((ret = os->codec->header(s, idx)) < 0) { + av_log(s, AV_LOG_ERROR, "Header processing failed: %s\n", av_err2str(ret)); + return ret; + } + os->header = ret; if (!os->header) { os->segp = segp; os->psize = psize; @@ -574,8 +578,12 @@ static int ogg_packet(AVFormatContext *s, int *sid, int *dstart, int *dsize, } else { os->pflags = 0; os->pduration = 0; - if (os->codec && os->codec->packet) - os->codec->packet(s, idx); + if (os->codec && os->codec->packet) { + if ((ret = os->codec->packet(s, idx)) < 0) { + av_log(s, AV_LOG_ERROR, "Packet processing failed: %s\n", av_err2str(ret)); + return ret; + } + } if (sid) *sid = idx; if (dstart) diff --git a/libavformat/oggparsevorbis.c b/libavformat/oggparsevorbis.c index 65b1998a02..29b1ab514e 100644 --- a/libavformat/oggparsevorbis.c +++ b/libavformat/oggparsevorbis.c @@ -317,7 +317,7 @@ static int vorbis_header(AVFormatContext *s, int idx) if (priv->packet[pkt_type >> 1]) return AVERROR_INVALIDDATA; if (pkt_type > 1 && !priv->packet[0] || pkt_type > 3 && !priv->packet[1]) - return AVERROR_INVALIDDATA; + return priv->vp ? 0 : AVERROR_INVALIDDATA; priv->len[pkt_type >> 1] = os->psize; priv->packet[pkt_type >> 1] = av_mallocz(os->psize); -- 2.15.0.531.g2ccb3012c9-goog