From patchwork Tue Jan 7 13:55:46 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 17242 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 1EB2A44AC83 for ; Tue, 7 Jan 2020 15:56:26 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0878068ADDB; Tue, 7 Jan 2020 15:56:26 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f67.google.com (mail-wm1-f67.google.com [209.85.128.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4B91368ABA8 for ; Tue, 7 Jan 2020 15:56:15 +0200 (EET) Received: by mail-wm1-f67.google.com with SMTP id 20so19465668wmj.4 for ; Tue, 07 Jan 2020 05:56:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=joDQuyYoeRHm0hbl5+EEzMY1JyEP1oyyFJ2PWVsJcIk=; b=H8JJJW38Ny1zKhT8bK4hRW/Qzcmt6ur6r7MQQ4z87ZiO9PBdeyASNU/MBbJzC/afsX oXbaAayNXbwO78mw/fOgM2U3szmQMUhAdwMXH6GPhGjJ+OMm9J9NrAz/Ruvd5ju4eK9t Gr31MW03AgMDX9dWTiQz2w8p7iGvJ545lTfF7QmD7RCv5rdvsNqzXBZO+naTL0JwWW/9 0skZ8pNeeOtrF5Zxg062nrKUlK8XmhvB5Nkkjt7rTTzyVQ4x7ThIJ+CYcIW7EmSoOTTe hJ1dNzARypPbtpgSwwBTJa498YbB5UW3U26aE6Q60vDA1hzGRWbSG5zFYkFww/LpPLkR 8P+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=joDQuyYoeRHm0hbl5+EEzMY1JyEP1oyyFJ2PWVsJcIk=; b=ruSAkz4yO7DjEUU1XZpRBAvH0bIvyyQkP+ja4eFwRIuKDlRBHrgfCVinlW1huOJGyA S1X/X3bc8j+5N67zroFl0XB7mO6VkpAIOUbOwiWuU7MJRkf0Xmw+jQr2/9P1ESuHrML5 5gxWMqZQwFm4XtcLvNSFtuSt+WgvWk5VYSIRmaL48L1y08qlq7BuHezi1SCGX2aYds6R Ls1PD8Qchy1kRwbsSv59c8D0cridlCAdUmGVk9t01TCyHVKjUW+ztMEiTALyNQ0ou1ak eLNL1ezoaJpUysxH9Fl8Yh1Sg9YAZASmgwv4KJymzs8NK4HQX7XNGV7rn7ecVxg34Etg b9BQ== X-Gm-Message-State: APjAAAXU1gIqSsvl0zyTNASg6IlCvF9YYX+yrVbMn54Fy1ia1FvOIlFQ Anq4q9xyLWJeeQ7l/VCSLXESrHwc X-Google-Smtp-Source: APXvYqzxpIWskCOQc9ng+b3sKqXeX1GyzfM1o+BuJNv+RAQ4TxsU5AQ/uDwLca7U5925vdgWLFgK7g== X-Received: by 2002:a05:600c:21da:: with SMTP id x26mr39252445wmj.4.1578405374556; Tue, 07 Jan 2020 05:56:14 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc08bbf.dynamic.kabel-deutschland.de. [188.192.139.191]) by smtp.gmail.com with ESMTPSA id e18sm76167730wrr.95.2020.01.07.05.56.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Jan 2020 05:56:14 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 7 Jan 2020 14:55:46 +0100 Message-Id: <20200107135549.22581-8-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200107135549.22581-1-andreas.rheinhardt@gmail.com> References: <20200107135549.22581-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 08/11] avformat/dashenc: Fix leak of AVFormatContext on error X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" The Dash muxer uses submuxers and when one such submuxer has been allocated, it is initially only stored in a temporary variable. Therefore it leaks if an error happens between the allocation and storing it permanently. This commit changes this. Signed-off-by: Andreas Rheinhardt --- libavformat/dashenc.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/libavformat/dashenc.c b/libavformat/dashenc.c index b84736881f..dab7010179 100644 --- a/libavformat/dashenc.c +++ b/libavformat/dashenc.c @@ -1225,10 +1225,6 @@ static int dash_init(AVFormatContext *s) dict_copy_entry(&as->metadata, s->streams[i]->metadata, "language"); dict_copy_entry(&as->metadata, s->streams[i]->metadata, "role"); - ctx = avformat_alloc_context(); - if (!ctx) - return AVERROR(ENOMEM); - if (c->init_seg_name) { os->init_seg_name = av_strireplace(c->init_seg_name, "$ext$", os->extension_name); if (!os->init_seg_name) @@ -1261,10 +1257,13 @@ static int dash_init(AVFormatContext *s) } } + os->ctx = ctx = avformat_alloc_context(); + if (!ctx) + return AVERROR(ENOMEM); + ctx->oformat = av_guess_format(os->format_name, NULL, NULL); if (!ctx->oformat) return AVERROR_MUXER_NOT_FOUND; - os->ctx = ctx; ctx->interrupt_callback = s->interrupt_callback; ctx->opaque = s->opaque; ctx->io_close = s->io_close;