From patchwork Mon Jan 14 11:46:08 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Carl Eugen Hoyos X-Patchwork-Id: 11737 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id B850044D2E7 for ; Mon, 14 Jan 2019 13:46:14 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D018968A837; Mon, 14 Jan 2019 13:46:02 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-io1-f68.google.com (mail-io1-f68.google.com [209.85.166.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6EC9968A837 for ; Mon, 14 Jan 2019 13:45:56 +0200 (EET) Received: by mail-io1-f68.google.com with SMTP id k2so17342178iog.7 for ; Mon, 14 Jan 2019 03:46:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to; bh=OPRgiSTYZYQyk7ZgzxjzH1e75SZQtNBpVjkCZbfhqrQ=; b=J9uuseibVnFgdqN7tVH+ghi36kIqOfQdIHMpJ7G+oeBqkQRCUEGznryKaiPqRCjs32 1/6z8kTtWlmuEe5G8wDPgYALsQ0ilnvqrL3nYOi4Kn60cJgrguya9empUDin8nOsJHGP oxX607DA/26bqSYF30ki8xx+CSsWd0+6+xOEhzlKxCjRGmIE6Dy2hLv+S9b0MiayfXWz fV1OSyG+KKlti0iBeCTkTkrmLAUSz+OmYIr8mejmWSVpOABPDaC+k28p8UwUOazhlEZo GF4aU/1aUSEoogdekSnCkp2Zcmf6mHl1A5eQIcobfMtfxEt6QRk+WEMdTrxwb6A+sxTE 7sPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=OPRgiSTYZYQyk7ZgzxjzH1e75SZQtNBpVjkCZbfhqrQ=; b=OeeSy08H3rlyE17ZjR7+RahtrnX+N8ZQ1TnPIBYgNs8eyZla3TGg6CamxKGkYJ9p1i uFkfI0MxHMVk+63Uk48UUOiivBhBMnYDvE7Ak5VOKY4XRexiog+0IghLddFL6m2rowUw I2XIExHzACQwxTEaIfDvLntk6Pla9aNC5ec/lLc0iEMRZiB9q3bTWbY/wkNJPVqHzdWq UZOWb3ooRr1IewF75otQr7miMThC39InGjPAfR4ZeHD4PYa6v+kUBBIsLJj2swvkOjb4 uQNTTR2jZHwjw4CWNjt6+D6jw8pKt8/OdifK+Wbj4sHWlHuHrEGFJrMp181JhX4fUFW3 OpAA== X-Gm-Message-State: AJcUukdCVWwjy7B1yYEjrE3u1iipbhgyWC/Xi6aVZIJJaC7n/ubk1qBz q836jLMdgYuAf1SLBAFMnb3vNuX6GqIjZ/uXkBhDWQ== X-Google-Smtp-Source: ALg8bN4ZZxiP0nHBkffgfq/9VYU0cBos39QlHqfHNoitIeQISQsgH6ueiZBSPsYamic77e8SVqc+0PvBW8yF3MqQ7OQ= X-Received: by 2002:a5d:9405:: with SMTP id v5mr16651362ion.250.1547466368830; Mon, 14 Jan 2019 03:46:08 -0800 (PST) MIME-Version: 1.0 Received: by 2002:a02:5f11:0:0:0:0:0 with HTTP; Mon, 14 Jan 2019 03:46:08 -0800 (PST) In-Reply-To: <20190114090548.GX3501@michaelspb> References: <20190114090548.GX3501@michaelspb> From: Carl Eugen Hoyos Date: Mon, 14 Jan 2019 12:46:08 +0100 Message-ID: To: FFmpeg development discussions and patches Subject: Re: [FFmpeg-devel] [PATCH]lavf/mov: Do not fail hard for more mov atoms 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" 2019-01-14 10:05 GMT+01:00, Michael Niedermayer : > On Sun, Jan 13, 2019 at 11:14:52PM +0100, Carl Eugen Hoyos wrote: >> Hi! >> >> Attached patch fixes ticket #7679. >> >> Please comment, Carl Eugen > >> mov.c | 12 ++++++------ >> 1 file changed, 6 insertions(+), 6 deletions(-) >> a2759589f6ab06b09057969490ffc13291965144 >> 0001-lavf-mov-Do-not-fail-hard-for-more-invalid-atoms.patch >> From ea6afa36d5ceb6e027176f051e7886f0648e3ac2 Mon Sep 17 00:00:00 2001 >> From: Carl Eugen Hoyos >> Date: Sun, 13 Jan 2019 23:07:06 +0100 >> Subject: [PATCH] lavf/mov: Do not fail hard for more invalid atoms. >> >> This is what several other players do and what FFmpeg already does for the >> sidx atom. >> >> Fixes ticket #7679. >> --- >> libavformat/mov.c | 12 ++++++------ >> 1 file changed, 6 insertions(+), 6 deletions(-) > > If a atom is ignored/discarded it should not have changed state of other > things. This patch would break out after some fields are updated Thank you, new patch attached. Please review, Carl Eugen From 4206aa40f9a3de7081c340a1da206132ed365272 Mon Sep 17 00:00:00 2001 From: Carl Eugen Hoyos Date: Mon, 14 Jan 2019 12:44:01 +0100 Subject: [PATCH] lavf/mov: Do not fail hard for more invalid atoms. This is what several other players do and what FFmpeg already does for the sidx atom. Fixes ticket #7679. --- libavformat/mov.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/libavformat/mov.c b/libavformat/mov.c index 970cd87..9b9739f 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -4550,17 +4550,17 @@ static int mov_read_tfhd(MOVContext *c, AVIOContext *pb, MOVAtom atom) track_id = avio_rb32(pb); if (!track_id) return AVERROR_INVALIDDATA; - frag->track_id = track_id; - set_frag_stream(&c->frag_index, track_id); for (i = 0; i < c->trex_count; i++) - if (c->trex_data[i].track_id == frag->track_id) { + if (c->trex_data[i].track_id == track_id) { trex = &c->trex_data[i]; break; } if (!trex) { - av_log(c->fc, AV_LOG_ERROR, "could not find corresponding trex\n"); - return AVERROR_INVALIDDATA; + av_log(c->fc, AV_LOG_WARNING, "could not find corresponding trex (id %u)\n", track_id); + return 0; } + frag->track_id = track_id; + set_frag_stream(&c->frag_index, track_id); frag->base_data_offset = flags & MOV_TFHD_BASE_DATA_OFFSET ? avio_rb64(pb) : flags & MOV_TFHD_DEFAULT_BASE_IS_MOOF ? @@ -4639,8 +4639,8 @@ static int mov_read_tfdt(MOVContext *c, AVIOContext *pb, MOVAtom atom) } } if (!st) { - av_log(c->fc, AV_LOG_ERROR, "could not find corresponding track id %u\n", frag->track_id); - return AVERROR_INVALIDDATA; + av_log(c->fc, AV_LOG_WARNING, "could not find corresponding track id %u\n", frag->track_id); + return 0; } sc = st->priv_data; if (sc->pseudo_stream_id + 1 != frag->stsd_id && sc->pseudo_stream_id != -1) @@ -4686,8 +4686,8 @@ static int mov_read_trun(MOVContext *c, AVIOContext *pb, MOVAtom atom) } } if (!st) { - av_log(c->fc, AV_LOG_ERROR, "could not find corresponding track id %u\n", frag->track_id); - return AVERROR_INVALIDDATA; + av_log(c->fc, AV_LOG_WARNING, "could not find corresponding track id %u\n", frag->track_id); + return 0; } sc = st->priv_data; if (sc->pseudo_stream_id+1 != frag->stsd_id && sc->pseudo_stream_id != -1) -- 1.7.10.4