From patchwork Sat Jun 29 00:06:54 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 50208 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:cc64:0:b0:482:c625:d099 with SMTP id k4csp593677vqv; Fri, 28 Jun 2024 17:07:31 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWNyE7GBIVDaksqEsDsYP4OmLPckPVS9EdFE1nRy3NWxWiu8nDJuK1tTiWKu5lScj0nI95wJqEzLe/S2ABtkOX7yvTojHwTdBDnOw== X-Google-Smtp-Source: AGHT+IEJn+3YceKk28jHx7K8/BOBTEOAMTKDkjY9uSuXTfL75PwF35UoUr9bSSdJpyVIMaTQ1pT1 X-Received: by 2002:a05:6402:51d1:b0:585:4048:12a6 with SMTP id 4fb4d7f45d1cf-5854048187amr6007621a12.19.1719619650792; Fri, 28 Jun 2024 17:07:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1719619650; cv=none; d=google.com; s=arc-20160816; b=KH/I6Mpu+iek6kcF7cKYCT+KLf0WJ4gVzrdBqOhGil5bK0/vyq9956iyKc6a39GVvS 0D7UPQ7NqlJkCZaV1rOkcO1t5i5P6D2m9cMPr0faEFbUTJ0G3h4e0cz8ZbM437GWKQPy 0fHC0FpIY1IsUFEvgAcRRoF2fidKRFiD5ycwpa4RVyTLSWct5AmSD9ZymPab/PrSt8ik 0FI6309jds9CSLF++MAi+3CrgPgfKBgk+s2WWJOp9cTZ0QqB5fQrpZtca62i6DySnCO1 gGJaPG7mJRow5TWlJGjnFZ2w1rW3PykQm1Dl0aVDUGEJ13NEjqI7ba77CzwFG8qJzOke ZqSg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=Qbt6wjizoLjROXvwuhGxIbe7oFZm03Ob6Eplmh9LPbM=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=hfEp3+bx1IIAooTDiosX2w1aG31j1t9cWUTFbIOtUQzt4SPn2tXLLOyI5YXTPnkh48 zFeraT+ptjbi+nBKigLVGDBWeP0hUIqED+OyRmKn02Yd28pJ5BnhhlAsHnMGcoJXCUFM /LMMlyVjQ/YQ8AnQgB8N+mT97gK5NRY6f9AGv1y/xSJpza2DcWJ0STTBkbT73DUPvBtZ lGmYF2snbBFFhqHF88IaxcPTtABmrIIpH/qIcGf2IRd3DxoxK2a/jSkq+QX7byT9vA7O ypFJyjoeImTG25wL3qvr1MxJy5MKD1D1K43rWg5idhGqGoWVlnN2FSmUwHjRJKyMsKYl 8YGw==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=gaIRut+E; 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=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 4fb4d7f45d1cf-586137206eesi1237586a12.94.2024.06.28.17.07.30; Fri, 28 Jun 2024 17:07:30 -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 header.s=20230601 header.b=gaIRut+E; 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=QUARANTINE 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 2C35D68D6BD; Sat, 29 Jun 2024 03:07:17 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pl1-f176.google.com (mail-pl1-f176.google.com [209.85.214.176]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7919F68D677 for ; Sat, 29 Jun 2024 03:07:09 +0300 (EEST) Received: by mail-pl1-f176.google.com with SMTP id d9443c01a7336-1fa9f540f45so7564515ad.1 for ; Fri, 28 Jun 2024 17:07:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1719619627; x=1720224427; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=ZWORE2jJmv/53ByUnsH1rOqgv6fgD0gQ0k9U2Hgqy3M=; b=gaIRut+E2+d9flu1BkJPy0nT5JfqMlX4208tDHGyzUcmJ8J5YW/owU8E2/LH3ftDqx kllVl9rq4iyLuPbU4rTj07+sKeHoklcDp5tj1VxFLUHsxN/5A1a+YawqG4+Eia5hQp++ BTEQ49curhnf/a0WwNRcU0OPzdpfcfkLbvlZGvIMfGiUe1D+HhwTpBmZQFmUpIvI3zVS wlDJESJlzhlQuxDWOn1A0xijQpKETYV9PTB/Ijrq5j75wyYzby4Jp2G9sEustSwtsA6d RGEODkO48QkncIWZVJOSQWwtb8pSvW6VZGxybwBRZd3Awy1W3rxbhFDKJ0JBHTjxFmjf lQeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719619627; x=1720224427; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ZWORE2jJmv/53ByUnsH1rOqgv6fgD0gQ0k9U2Hgqy3M=; b=Zm8qt7XDRTkEz5KyjLoqlizAgqo8+cnnj4z93wdn4u7SCyNJVdCuWuC1PvB32asnCt CNaaVcCWtfKACc61MoOnS6iuD/uM9rlPjb8d7CPeJsbI7e3O6usBLe92W45psNpOlir6 GuEeQe11M2p0pLV18hvGhcpFrNsEvD7oVMhGOjVB+sumEVQCpQUshhZFfboz7ZbbwZiX kVoGGi5a+6prXg5hp1728tUUi1vnwBX10y6Yn+8zruClEYzs+wIdBiuRTIvQ1QL7N66k 1xr79dSk91bYDlopBQe0l6w3l1R50ZBHHH4vBI16hZqMJm4Qb3YV9qnrfErF9/IqbD/m NMag== X-Gm-Message-State: AOJu0YwsnQD8PQZsT7Icd26wWAThblAgDXYOjzwOYcNlD+XYGHAIBbrJ pNTdRlFx9kX+taDXBzGVKWD2cK9P0YA4rx4ICyZhkSdU50K5kYo/tG8KbQ== X-Received: by 2002:a17:903:22ca:b0:1f8:67e4:3977 with SMTP id d9443c01a7336-1fa158e5e78mr159698745ad.34.1719619626776; Fri, 28 Jun 2024 17:07:06 -0700 (PDT) Received: from localhost.localdomain ([190.194.167.233]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-1fac159ac6fsm20968305ad.293.2024.06.28.17.07.05 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Jun 2024 17:07:05 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 28 Jun 2024 21:06:54 -0300 Message-ID: <20240629000654.63462-2-jamrial@gmail.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240629000654.63462-1-jamrial@gmail.com> References: <20240629000654.63462-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/2] avformat/mov: check that child boxes of trak are only present inside it X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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" X-TUID: NgZ8tOvwNJLb Based on the check done for the stco box. Signed-off-by: James Almer --- libavformat/mov.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/libavformat/mov.c b/libavformat/mov.c index ba5f85e7e3..a2e187ff2f 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -3059,6 +3059,11 @@ static int mov_read_stsc(MOVContext *c, AVIOContext *pb, MOVAtom atom) MOVStreamContext *sc; unsigned int i, entries; + if (c->trak_index < 0) { + av_log(c->fc, AV_LOG_WARNING, "STSC outside TRAK\n"); + return 0; + } + if (c->fc->nb_streams < 1) return 0; st = c->fc->streams[c->fc->nb_streams-1]; @@ -3155,6 +3160,11 @@ static int mov_read_stps(MOVContext *c, AVIOContext *pb, MOVAtom atom) MOVStreamContext *sc; unsigned i, entries; + if (c->trak_index < 0) { + av_log(c->fc, AV_LOG_WARNING, "STPS outside TRAK\n"); + return 0; + } + if (c->fc->nb_streams < 1) return 0; st = c->fc->streams[c->fc->nb_streams-1]; @@ -3192,6 +3202,11 @@ static int mov_read_stss(MOVContext *c, AVIOContext *pb, MOVAtom atom) MOVStreamContext *sc; unsigned int i, entries; + if (c->trak_index < 0) { + av_log(c->fc, AV_LOG_WARNING, "STSS outside TRAK\n"); + return 0; + } + if (c->fc->nb_streams < 1) return 0; st = c->fc->streams[c->fc->nb_streams-1]; @@ -3244,6 +3259,11 @@ static int mov_read_stsz(MOVContext *c, AVIOContext *pb, MOVAtom atom) unsigned char* buf; int ret; + if (c->trak_index < 0) { + av_log(c->fc, AV_LOG_WARNING, "STSZ outside TRAK\n"); + return 0; + } + if (c->fc->nb_streams < 1) return 0; st = c->fc->streams[c->fc->nb_streams-1]; @@ -3333,6 +3353,11 @@ static int mov_read_stts(MOVContext *c, AVIOContext *pb, MOVAtom atom) int64_t current_dts = 0; int64_t corrected_dts = 0; + if (c->trak_index < 0) { + av_log(c->fc, AV_LOG_WARNING, "STTS outside TRAK\n"); + return 0; + } + if (c->fc->nb_streams < 1) return 0; st = c->fc->streams[c->fc->nb_streams-1]; @@ -3489,6 +3514,11 @@ static int mov_read_ctts(MOVContext *c, AVIOContext *pb, MOVAtom atom) MOVStreamContext *sc; unsigned int i, entries, ctts_count = 0; + if (c->trak_index < 0) { + av_log(c->fc, AV_LOG_WARNING, "CTTS outside TRAK\n"); + return 0; + } + if (c->fc->nb_streams < 1) return 0; st = c->fc->streams[c->fc->nb_streams-1];