From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id D2E7249A17 for ; Sat, 27 Apr 2024 01:02:35 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0226B68D380; Sat, 27 Apr 2024 04:02:32 +0300 (EEST) 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-Google-Smtp-Source: AGHT+IEhtZuWOGXkcrgyZgP0OLBFanQSlfzsQAlME4IWj8ZpmjEyRdEhZOduxk5vIhyn0Zfc1GPMKw== 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: 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) -- 2.44.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".