From patchwork Sat Apr 27 00:26:38 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 48283 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:1509:b0:1a9:af23:56c1 with SMTP id nq9csp711876pzb; Fri, 26 Apr 2024 17:27:09 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWcA5THJlgJdxt2u4fFZZSZfKnF10Lk9jYpTBhR+U1r2OQMYI0geapiTNheYXK24cXB25TWTTxcd3nL//XDOv3GlKe9TR5YSGYoCQ== X-Google-Smtp-Source: AGHT+IGJNiT2EBck9HXXlXuHEsac9FRyHMXjhuAfIIx8ynPSjBywtzvZMhYieSWgmyqgpB89T57m X-Received: by 2002:a17:907:1b16:b0:a58:a0b8:32bf with SMTP id mp22-20020a1709071b1600b00a58a0b832bfmr3198657ejc.1.1714177629117; Fri, 26 Apr 2024 17:27:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1714177629; cv=none; d=google.com; s=arc-20160816; b=j2n5sqsU7Yih4nzkV8uJiexRK+4FtCTFg2kEjRPXD1lLuNZbFLnsNuuLpxjdoKVJZc iTuDu4roQuR0bQAJNYH8Hs+hrJP1vDGtu9EUvtc9xIzR+4WWh/sEJ1FlGvjxTrkYfBTd 2M7EyIXqz/Mxpn3qGa42SgpjK40J97lVgTClrI5xxKMZFBcEIyK0BmTXgDJboj6lLE4W BFWACLyAhXfFuxfF42r9JDd3+LNf4BZ8ZonW2NwC4sC5vDr0oMfTkvuIa+YvxTitADdv XW5yVnKqF261w/6DJnlEgRX5Fj0LB+JZmj5aL+VrVXtSLJjRUx+bX9spYDj1nwWMYKgq KpBQ== 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=FZqHU7vdPqZi5pnKhnFk0XC3/JvinqrhH57yIKo4X+I=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=snrEAARHOyMDBgH3s6FRXTjHbhde9G3mpMTt2hKS3oMSccqTGgSm/sswDEMT5J9uqx bDCfsTO60j5nttgPPlkyUOiKA6nvM4wHyCyH5W2trc6m+y8GwSC+Y9gDPT7Q5rtp23JM AAugbkcuWDHxPVKq0PkF1A2vw/C5+InrF0bSyroPSAl5OH1M/pm26g9n/2Qf0Nj7Po4U VFXS9n72Ky0EpvB66aMvOEjNIvoDHh/2fsWmT6gPDUXs9gSxswQpO8B5Maalt3XtiwRn vz6w37yzIU6Zd6SBLBrxCv2M6ggJrnjiabx6Vvaq60tyCHkbgwlhmZG4sC+davm5NAeg nQEg==; 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=hgom1dNM; 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 qw18-20020a170906fcb200b00a4748cefff3si10741687ejb.268.2024.04.26.17.27.08; Fri, 26 Apr 2024 17:27:09 -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=hgom1dNM; 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 BE59B68D3D1; Sat, 27 Apr 2024 03:27:05 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pf1-f172.google.com (mail-pf1-f172.google.com [209.85.210.172]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C535168D234 for ; Sat, 27 Apr 2024 03:26:58 +0300 (EEST) Received: by mail-pf1-f172.google.com with SMTP id d2e1a72fcca58-6edb76d83d0so2492130b3a.0 for ; Fri, 26 Apr 2024 17:26:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1714177616; x=1714782416; 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=RnEGk2FHvoHPxfA0dDQehTW8SNDn3YHcxksCpLNBqK4=; b=hgom1dNMXI3001hKW2YsvYs1qB1enqDi+KNhraeNiq1zezTZSa8nHWtsw4ZeJx+nLD phAjxrQNI9SguCmX5hijd5B4eIyaeDc4qg6NdttgNaj/sdvRAJlQkLfAzeY59mhULKIZ jD6fJzHuvqMe7cCIjS7PzNe7EvI/B3vFGDQB8LcOnPMU1s39HQYWMlh/jKyRYTwoaNrH Fu32J21bKejAOXNrsxM2nDdlyUXRoxyxSHJLO596SQyS4owgb00PuR5oJCCECyp3XcJz BH1Pkoq1dH2fdJGZkfXoJbOJDybYqTuDxKupQ501xAlE/NF6A1hipLGBurdNoEQmy8h9 Z4Eg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1714177616; x=1714782416; 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=RnEGk2FHvoHPxfA0dDQehTW8SNDn3YHcxksCpLNBqK4=; b=cmm1Ll+PMpNpXKPUL8U10QLq7DdjiNK03wXAbnB+IwjdTT+JDeyOAMDb9e7NyGSXbD TyGoPHLOF59U0u2ifccYgSLo1D5IpeJ5kf+ThVFptfafJZTiTxuCkUzPimasc1uoJ0dr zF2jIb2X4FK172cOlpZ2sQtQInRW4WWbhzBqvMgnGiY0zrDgnrEn7da0/ZuboiXIL1Mn gWR32ds2Q4Cwt01CnVoBIGpKTc41buimYmgI1/oBmM+6OMQHiurnEXKwyqzbX5vsX76a 3pciGZTR2fwJPnma7sRTl938yqWBy2ZfJaGkxDW91CY8vu+xRAM03ZhFBoYf1mzEp7/S v7zw== X-Gm-Message-State: AOJu0Yw3nnVMmn03qwt8UQWLP9j8u3jbcKiTmfCaoCBfNIVTSzaYIFHe TgXwUNAlH7NA4KeGqjH4CnfqEZvxgeqPgoEK+sJ80SScXsJMjULMCX0vMg== X-Received: by 2002:a05:6a20:12ca:b0:1aa:5e75:d31f with SMTP id v10-20020a056a2012ca00b001aa5e75d31fmr5700839pzg.16.1714177615971; Fri, 26 Apr 2024 17:26:55 -0700 (PDT) Received: from localhost.localdomain ([190.194.167.233]) by smtp.gmail.com with ESMTPSA id i17-20020a056a00005100b006edcf5533cesm15377214pfk.79.2024.04.26.17.26.54 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 Apr 2024 17:26:55 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 26 Apr 2024 21:26:38 -0300 Message-ID: <20240427002638.649-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 streams on private data allocation 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: bDnxX2cXPCKl Signed-off-by: James Almer --- libavformat/mov.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/libavformat/mov.c b/libavformat/mov.c index e52a83c82e..7f81419bd8 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); @@ -5156,8 +5157,10 @@ static int heif_add_stream(MOVContext *c, HEIFItem *item) if (!st) return AVERROR(ENOMEM); sc = av_mallocz(sizeof(MOVStreamContext)); - if (!sc) + if (!sc) { + ff_remove_stream(c->fc, st); return AVERROR(ENOMEM); + } item->st = st; st->id = item->item_id; @@ -5181,27 +5184,31 @@ static int heif_add_stream(MOVContext *c, HEIFItem *item) sc->stsc_count = 1; sc->stsc_data = av_malloc_array(1, sizeof(*sc->stsc_data)); if (!sc->stsc_data) - return AVERROR(ENOMEM); + goto fail; sc->stsc_data[0].first = 1; sc->stsc_data[0].count = 1; sc->stsc_data[0].id = 1; sc->chunk_count = 1; sc->chunk_offsets = av_malloc_array(1, sizeof(*sc->chunk_offsets)); if (!sc->chunk_offsets) - return AVERROR(ENOMEM); + goto fail; sc->sample_count = 1; sc->sample_sizes = av_malloc_array(1, sizeof(*sc->sample_sizes)); if (!sc->sample_sizes) - return AVERROR(ENOMEM); + goto fail; sc->stts_count = 1; sc->stts_data = av_malloc_array(1, sizeof(*sc->stts_data)); if (!sc->stts_data) - return AVERROR(ENOMEM); + goto fail; sc->stts_data[0].count = 1; // Not used for still images. But needed by mov_build_index. sc->stts_data[0].duration = 0; return 0; +fail: + mov_free_stream_context(c->fc, st); + ff_remove_stream(c->fc, st); + return AVERROR(ENOMEM); } static int mov_read_meta(MOVContext *c, AVIOContext *pb, MOVAtom atom)