From patchwork Sat Jun 29 00:06:53 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 50207 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:cc64:0:b0:482:c625:d099 with SMTP id k4csp593600vqv; Fri, 28 Jun 2024 17:07:21 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVx3wwaq0ZDERAQAZBBcz4Tg0TNDKiJrdQgU1mRwJeqhfpXfNru76mV68X/b+tUMvuoTWJ3Ig2DwQ/BLfGHq+o8K1wykr74N+82iw== X-Google-Smtp-Source: AGHT+IGelIy15I5WUaZp/832oPG0P19uCMoJAVmtMAsWRbbE4E7BC5G2NT+TDUPncaxGu61lnnug X-Received: by 2002:ac2:546f:0:b0:52c:db53:5fe5 with SMTP id 2adb3069b0e04-52ce18351c2mr10983406e87.27.1719619641298; Fri, 28 Jun 2024 17:07:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1719619641; cv=none; d=google.com; s=arc-20160816; b=a83RL6WuVXf75weYFW0eEs/916+yzmz0V42I9IL2pOZphjLsaPqLd7c8lirOQQp4Mr j1MB8eSH3vL4htcFXEsih64+vMAi88c49I0HoHOmXsut+PabG6J6UrNndpqLzotyYjNc tlz64ZRzEuCU5OTRdSQEgAivs4Sw5bPDJ3ZMJ7APqLKD/4Pd5vRINMkPKk4R0kFQbnHO 4y+N9XE0YePyBffJCvJJiiYYAwFzttPrzHcetvoglo+AKMt6u+w0LK+hOTFWjOWLdE1c b/RXjUbDG07X92GjmMevQuuwh2RBCmcWnKOdFS15MKmeIvxSPm6gWz/G/9BJ9KyV9+bh WgLw== 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:message-id:date:to:from :dkim-signature:delivered-to; bh=4ZmoAMXqM8oLLnkMr3MSUH/w3O1UKfupcOMoL+pKclQ=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=0bCA4THBe6pffaovCoCbYkEepWiqzvgRJ3KT6hi/eXpIXggWISe70t4TBQd+vL45rj VTR9djwW4YHqPsPNq6nz8LB4Wd2mv2E7gMsdgCpvOBuigBatHhBIocRhSX/lS0RBkREf jM3Jd2RIRGWSvixGsp8AUPQlph+H7pB4piYnI5VAfQQMmDmlVc70CRi7RIsk7DCT/g9l IBWg91XMVhfs3OTVktS5nO0lbeatrz+gDyEEMSc661bU2OrFB+DOK6WZVwHpMMrnwjuV QLP9+kguozSXPJLYdQDsDS4u7kkrvlFwjY6+AwLJvT3Fzm7qiC39CspTA174wlUb5jcm xLvg==; 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=EcQPixaj; 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 2adb3069b0e04-52e7ab25a8bsi807975e87.213.2024.06.28.17.07.20; Fri, 28 Jun 2024 17:07:21 -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=EcQPixaj; 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 A362368D69E; Sat, 29 Jun 2024 03:07:15 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pl1-f179.google.com (mail-pl1-f179.google.com [209.85.214.179]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 041F268CA8A for ; Sat, 29 Jun 2024 03:07:08 +0300 (EEST) Received: by mail-pl1-f179.google.com with SMTP id d9443c01a7336-1f9a78c6c5dso8162445ad.1 for ; Fri, 28 Jun 2024 17:07:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1719619625; x=1720224425; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=Xvh01E1BLvOpbWNPgH6RV8cUNs7lRCFZ7lHMVb/g95I=; b=EcQPixajct00EbiHcOZ0Rt0AZ/aG7J96h2G0YP1yYOoExFkjSUPJUWEt2UT5MTixW+ Hn7XXbz/Jep933CFlga82ScRk93LwUrCDSe8ykXmNiU+6apPczkmZB0fX0DJj1aRiNz6 ZnEYec4yTwxv47WJ2dO8iobxqTfXA9ff+sxsSGCXjoxCRqVH5krNCDPF+L0cXpT9qzM+ GJoF1aj3cukrU7MWWDf6TrKRKhYNGzWSa5SjCJjCq3j3/1hIfDYThcps5S9LkxI8ateN KdFvcWRn+f4oH1KGOoGRrM6Da7e1YlzmdMgI8E7u/KJvijI7jFUGNwAKy9KAkiwVGx5X 5ECg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719619625; x=1720224425; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Xvh01E1BLvOpbWNPgH6RV8cUNs7lRCFZ7lHMVb/g95I=; b=ahEEiFF2dGfr2NQ7w+alCqPAiDa/4vL1/IfAG6ac8/j4tCGOTEQCri0bEaf8mMdGyb uGOv9pZD6LHVUErv937YLb+DD6N8LnF/VHKZl4Tkq92DaJ4T5/rRxGh9xLEzl4d6urqs 3eZsoG8BCr07EFOCygZIurGEnbPknNE49RGYICJOui79iEGuSdID1jL/uee2wrCmYuM6 Ih9iwXn9rJpZSV5nutQsYyWdsJPhdzUyg7j3qxMxE4Xauc593PDO/Ldk1oDsHPPWX5cm CMc25u8SyvK2QCuDBVpVLB0uei+ENNYWeIvIPjt5caybpXDJau72w1R7Bq7Ki0CAguIl VaqA== X-Gm-Message-State: AOJu0YzvfBaVvq7Z+kNy33tXQmWPTBRTVoMfm898nS6TFdqxG/W21iB1 0x4H0YC6rJRkLT/rkKFBlfMG8pWk/VrmZDwFO3pPg/ES+DdpNK2o4VunPw== X-Received: by 2002:a17:902:da89:b0:1fa:aa62:8b65 with SMTP id d9443c01a7336-1faaa628d72mr61850135ad.48.1719619624692; Fri, 28 Jun 2024 17:07:04 -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.03 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Jun 2024 17:07:03 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 28 Jun 2024 21:06:53 -0300 Message-ID: <20240629000654.63462-1-jamrial@gmail.com> X-Mailer: git-send-email 2.45.2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/2] avformat/mov: check that sample and chunk count is 1 for HEIF 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: 1IQPRveOFe/p Fixes NULL pointer dereference in broken/fuzzed streams. Signed-off-by: James Almer --- libavformat/mov.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libavformat/mov.c b/libavformat/mov.c index 14f43bf906..ba5f85e7e3 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -9904,6 +9904,8 @@ static int mov_read_header(AVFormatContext *s) st->codecpar->width = item->width; st->codecpar->height = item->height; + if (sc->sample_count != 1 || sc->chunk_count != 1) + return AVERROR_INVALIDDATA; sc->sample_sizes[0] = item->extent_length; sc->chunk_offsets[0] = item->extent_offset + offset; 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];