From patchwork Tue Sep 1 16:28:46 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Derek Buitenhuis X-Patchwork-Id: 22052 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 72CF644A775 for ; Tue, 1 Sep 2020 19:29:16 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3FD2C687F8D; Tue, 1 Sep 2020 19:29:16 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f52.google.com (mail-wr1-f52.google.com [209.85.221.52]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9CF50680932 for ; Tue, 1 Sep 2020 19:29:09 +0300 (EEST) Received: by mail-wr1-f52.google.com with SMTP id x14so2231014wrl.12 for ; Tue, 01 Sep 2020 09:29:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=kD6E54WiFZ6jsQD8vjUb5EZ4PGLX7RG/PG7ccI9ccw0=; b=HBGAVrSnpw4BOiPogVvcb/gouIdUWTVyoZDpYp3kY03L+54P2SqrAX5YaXzDbKvEmv RaKicDpYGNHyLpl+8horA7UfmSC1gaoAPUzgVQ3++UWfLjWI2MeJHUEsfqciWi0jcJx7 WWAtArIDCoXN+TPJNlPX9ungVFHq0IJDPp+JRRmP6mKyQhjgFnKfXiNkDA/7GZLmstbk mYzGUkNWELRjtnz05grjPb57J2/dDMLKZbmZeslsl4Qgl5B912t8Vstdh/BIpcpIKxkX PjVUAIcyrJDvaA77/Z2pF7F1kgCbeNpM1bDnYT56OltfLivmaCt3TBUtaAFYSduYked/ 6f3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=kD6E54WiFZ6jsQD8vjUb5EZ4PGLX7RG/PG7ccI9ccw0=; b=AbJR65GRxXW2ouKTtlzI6y1baALImAJ2jFPr/vYHYZUAaxUG20RY0K8JCakyRzOvD6 Ct8GJ1QaSDNeBpG0wUheheUsNQmNhqlFA03AF1mpvPDMJvV+TQp7q6MQ4W9HIyItkgJ7 0vD5/+uDI1ymK5iY20XC0Ex4M7WTL8Tl2+h0tTJOV9kYMPCs6A0YZA+GzRx22WX/dSJ1 q4wa7LkI0jfJtruo1RNayWmV3lkfGxUJ7b46JK7dI6JHqdVigoPDw5sgVwTOXiPhHZBp d2QdyRU+itzi1+Vu+1tFxTkvfzuRindFKlxPoo4jlRiMwH23b30hgDAGsvNF+kRQGFK5 cfhg== X-Gm-Message-State: AOAM533jeeReqe4Ewpf1Y1XgaJizsZbVS7SKMsA0JQP4lXGJcHCP/330 BCN1vrPC34k2ahFjvogRNKwk2cmCdl4= X-Google-Smtp-Source: ABdhPJzgvJSROQgRstIsfKqLQYJ6jgx0ubQU6lsk6QXvjZZqTcwG2YAdVz51z3PtPkYc+rvVmyk1hA== X-Received: by 2002:a5d:4ccb:: with SMTP id c11mr2697237wrt.159.1598977748766; Tue, 01 Sep 2020 09:29:08 -0700 (PDT) Received: from localhost.localdomain ([81.2.169.31]) by smtp.gmail.com with ESMTPSA id n21sm2358545wmc.11.2020.09.01.09.29.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2020 09:29:08 -0700 (PDT) From: Derek Buitenhuis To: ffmpeg-devel@ffmpeg.org Date: Tue, 1 Sep 2020 17:28:46 +0100 Message-Id: <20200901162846.104025-1-derek.buitenhuis@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200901150335.103855-1-derek.buitenhuis@gmail.com> References: <20200901150335.103855-1-derek.buitenhuis@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 4/4 v2] avformat/mov: Stash mfra size if we're reading it anyway 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" This also changes a check for mfra_size from < 0 to == 0, since it was always wrong, as avio_rb32 returns an unsigned integer. Signed-off-by: Derek Buitenhuis --- Applied both of James' review comments. --- libavformat/mov.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/libavformat/mov.c b/libavformat/mov.c index e33031f158..690beb10ce 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -7499,22 +7499,22 @@ static int mov_read_mfra(MOVContext *c, AVIOContext *f) int64_t stream_size = avio_size(f); int64_t original_pos = avio_tell(f); int64_t seek_ret; - int32_t mfra_size; int ret = -1; if ((seek_ret = avio_seek(f, stream_size - 4, SEEK_SET)) < 0) { ret = seek_ret; goto fail; } - mfra_size = avio_rb32(f); - if (mfra_size < 0 || mfra_size > stream_size) { + c->mfra_size = avio_rb32(f); + c->have_read_mfra_size = 1; + if (!c->mfra_size || c->mfra_size > stream_size) { av_log(c->fc, AV_LOG_DEBUG, "doesn't look like mfra (unreasonable size)\n"); goto fail; } - if ((seek_ret = avio_seek(f, -mfra_size, SEEK_CUR)) < 0) { + if ((seek_ret = avio_seek(f, -((int64_t) c->mfra_size), SEEK_CUR)) < 0) { ret = seek_ret; goto fail; } - if (avio_rb32(f) != mfra_size) { + if (avio_rb32(f) != c->mfra_size) { av_log(c->fc, AV_LOG_DEBUG, "doesn't look like mfra (size mismatch)\n"); goto fail; }