From patchwork Sat Apr 27 01:01:40 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 48285 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:1509:b0:1a9:af23:56c1 with SMTP id nq9csp723247pzb; Fri, 26 Apr 2024 18:02:36 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCW0S97nbL8FQ12W7U8fSISxCkPkLBYToBv3Z4YQDnuubAUZRZVFtnSy29pWkTq2F1bAkw+z7gLG2jROH/i9epnvLFWA0QHo1Cug3Q== X-Google-Smtp-Source: AGHT+IEFQZFlNs9M2DHdCW+gEE/0+bmJQZu66R3z4KhkjkgS9SdWygrPLrnOX/aaBhqKRf0Y4VcY X-Received: by 2002:a50:d519:0:b0:56d:f78f:8747 with SMTP id u25-20020a50d519000000b0056df78f8747mr3492146edi.16.1714179756197; Fri, 26 Apr 2024 18:02:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1714179756; cv=none; d=google.com; s=arc-20160816; b=T5HcFT1Mo73Liv4D5GX7QvKPFQUzqUd3i/tcHm/lFgOOGgihEmBTa3ZrNKiAc45yY5 3OsEZ14QgDSO23AqNUxTyrYkvbZPcFk8s1tzs2ijWAyn02BvwdioTFnya5CsexQsUiev AUHg4Ug/ukLg6hyl7wP589McS7GUC6qjVMjUirFgTTK0iSHj/sBOLADS0mioMa5TNxCh JsDtUlcdcJggAb+0WMTNZu32oYe9v2d5tLXxz3vvO5JOatOAQDYMQNW7LeaYvnQ45ytP p8svWzzH0My7HVD/elcUGPRoQ2HI4qK0OI9EefAoijrmBOI1lQdXy4aBu9MP5Umo8HhD aYHQ== 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=kj7YS5bEL3OkzNu+uWZA2HiWA0A9WP5LrWdTwJsbv/E=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=n5PLQXobLxaWp/zVmYQEyen5YhPQFEcwnMaTrw5CnRLbenYi+rBkOg+riEwH4HLtNZ QLi2kmnwCdwVtSbGeudtxDqPuACq7q3F9dFgjRKoL9JFpjPKXTtMOPwQQMqglfWdw799 SdL7Pr+u2eU6B4Kxx36voaLKMaVkUZDv5z99AfXkcLRa0HJUwMgHW+j+dpVUn53TWjSs 6ZaUTp9AjWqLcwa3SXqe8ALUOb971HIH/YiudNmJPEIxQ9S6z5zyKlLEV04vrVivMJE1 ZOMq6UwsqjinSstRTg24Vetl0RhFTmS6cEIOWUpC0oLvHsYDmGCbMsLq/ChaFbot74nR lU4g==; 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=Q7UgZaf7; 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 v21-20020aa7d815000000b005726dd11ed8si68928edq.88.2024.04.26.18.02.35; Fri, 26 Apr 2024 18:02:36 -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=Q7UgZaf7; 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 58F7168D385; Sat, 27 Apr 2024 04:02:32 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pl1-f177.google.com (mail-pl1-f177.google.com [209.85.214.177]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1CE3D68CF89 for ; Sat, 27 Apr 2024 04:02:25 +0300 (EEST) Received: by mail-pl1-f177.google.com with SMTP id d9443c01a7336-1e83a2a4f2cso18352355ad.1 for ; Fri, 26 Apr 2024 18:02:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1714179743; x=1714784543; 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=fXRFtbcf6GAgxRqtxTDGwQMXx4e0m6phNS2Pucj9Mig=; b=Q7UgZaf7bF/5KNoqWvgUX7bxtRvW+iQRdR+v5KBNzOSQAENiuqhL0Af9xPdLVjIQ/I HGMUSWsX0sWAvYEt1SZVqWaJbXFNFGk0j1eXROSxOr6EIWFqv/Pbyw7ie9iEYz+6RJ+i q6JGsQGFE2ySv3xXm5p79I73XR08KdlWPUkWT6sKTotL6XsOhLG58CKxnW673qPCaEkw nq4flW5Z+zZy0adr+n80TIDoweMXsTeAwFxOH2NMY1YMfCaoZZiLuSrMLVhiZspU/Ltz r8j9BXqt3egPTGCY7EidSi5JLUvTNn0BIe2Lc3X/1jyYhAVmI5HUIzeWP+V/QmgYE/Bq QbeA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1714179743; x=1714784543; 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=fXRFtbcf6GAgxRqtxTDGwQMXx4e0m6phNS2Pucj9Mig=; b=h11lL1Bk1IUtr/nzvkO30lDDBBfouk8Oa7ItKOJwOYmPC7SagGLSeaWfqTbbzrHrye 1kbg64EHBTtO8ma0IQ9DCzHBwyBTxVHBU3KMHgz6vB6CD/BFDhY1srCg7dxOrBoClhwb G5htu7/ihbluR1qd7wZTp0mJvpVNBrdU/5r0gsNPIJd9YPd/yRoL3UIKE5lOT5LlLipr 4f18baC5znANBvVQfoF3ugPKoxi7k16prmQOc8lHxnBB+JPi1tOTP6RqE+rBOvg1PJqW GcRv/eRhioHThjdPXbaM54PJTwLxXX9m93MnsxTesMVYfbh2c7dS/RKi7MnSQRVSxbEy G/Ow== X-Gm-Message-State: AOJu0YyQvhb4IyL8ZB7WXw8Y4cIqCc+2IcL09ZT6hyGP7YsaIp+iDcEP 311iEiUfpA8Yn/T4CCd+cJnvIaWoFKMlGkwrvQKUmqC9kpthWOzHRTzxDw== X-Received: by 2002:a17:902:7c8f:b0:1e0:bacc:9977 with SMTP id y15-20020a1709027c8f00b001e0bacc9977mr4244070pll.59.1714179742981; Fri, 26 Apr 2024 18:02:22 -0700 (PDT) Received: from localhost.localdomain ([190.194.167.233]) by smtp.gmail.com with ESMTPSA id y4-20020a170902864400b001e49428f313sm16018353plt.261.2024.04.26.18.02.21 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 Apr 2024 18:02:22 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 26 Apr 2024 22:01:40 -0300 Message-ID: <20240427010141.3011-1-jamrial@gmail.com> X-Mailer: git-send-email 2.44.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avformat/mov: free the infe allocated item data on failure 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: oDlgkk4Gwpi1 Signed-off-by: James Almer --- libavformat/mov.c | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/libavformat/mov.c b/libavformat/mov.c index e52a83c82e..49dd82a4d1 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -84,6 +84,7 @@ typedef struct MOVParseTableEntry { static int mov_read_default(MOVContext *c, AVIOContext *pb, MOVAtom atom); static int mov_read_mfra(MOVContext *c, AVIOContext *f); +static void mov_free_stream_context(AVFormatContext *s, AVStream *st); static int64_t add_ctts_entry(MOVCtts** ctts_data, unsigned int* ctts_count, unsigned int* allocated_size, int count, int duration); @@ -8201,7 +8202,7 @@ static int mov_read_iinf(MOVContext *c, AVIOContext *pb, MOVAtom atom) { HEIFItem *heif_item; int entry_count; - int version, ret; + int version, ret, i; if (c->found_iinf) { av_log(c->fc, AV_LOG_WARNING, "Duplicate iinf box found\n"); @@ -8221,20 +8222,35 @@ static int mov_read_iinf(MOVContext *c, AVIOContext *pb, MOVAtom atom) sizeof(*c->heif_item) * (entry_count - c->nb_heif_item)); c->nb_heif_item = FFMAX(c->nb_heif_item, entry_count); - for (int i = 0; i < entry_count; i++) { + for (i = 0; i < entry_count; i++) { MOVAtom infe; infe.size = avio_rb32(pb) - 8; infe.type = avio_rl32(pb); ret = mov_read_infe(c, pb, infe, i); if (ret < 0) - return ret; - if (ret) - return 0; + goto fail; + if (ret) { + ret = 0; + goto fail; + } } c->found_iinf = 1; return 0; +fail: + for (; i >= 0; i--) { + HEIFItem *item = &c->heif_item[i]; + + av_freep(&item->name); + if (!item->st) + continue; + + mov_free_stream_context(c->fc, item->st); + ff_remove_stream(c->fc, item->st); + item->st = NULL; + } + return ret; } static int mov_read_iref_dimg(MOVContext *c, AVIOContext *pb, int version)