From patchwork Tue Oct 15 11:17:29 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 15759 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 B393044688B for ; Tue, 15 Oct 2019 14:23:52 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 99D3068A0FA; Tue, 15 Oct 2019 14:23:52 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f67.google.com (mail-wr1-f67.google.com [209.85.221.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6998668A0FA for ; Tue, 15 Oct 2019 14:23:46 +0300 (EEST) Received: by mail-wr1-f67.google.com with SMTP id r5so23329948wrm.12 for ; Tue, 15 Oct 2019 04:23:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=5OfPoQIGrt2cVlbjWLTJIBT+7nAKq0BtTYmQlV1rS+Y=; b=Lz2JIR0j+vcVLXAyCepuCRBIzcUo7nfYYSMk5O5nPu3IQ4Buc0E2Y1R6mG9O0Mi5yX Wmcw+16pN0Y241wZaW09PLpKqyFk0WAKr5BWGetTVMj9Ah2mei4XIQxKWmhGedBGO3k3 tvCfVNDNZ8hhHe7Gy6yS6ES/RjNZKITlLbtmus6bshYhGRtNjObI6z0pCOB1VTbrGlbZ Jna4BAxes/0l7Kxkbb9LjRkadLeBlgPuFVTOu7JJ3IXNGxmHXH6xCZcpE75HiG5UPOFG 7nGZAKcgEcgkzLKxjchyfvRhxU3RRB4Hsq0dTjRzyjTqBDEfGXEUGdo6tmuy0IX/Zn/F GDzg== 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:mime-version :content-transfer-encoding; bh=5OfPoQIGrt2cVlbjWLTJIBT+7nAKq0BtTYmQlV1rS+Y=; b=btTEFtVL5+GD+k9oXDWyYdFo61TI0M/gO9ns24w15kL5SKNfh/T+pBHpnIAt3PokIb hp31bz3z0853ah99bj6jnOiHNHGxSgGdEG6NceJooApy17wWEmqsNpGLD8mNIh/n8YOh 5321qjnvfJ7Rzj/h5j6b9xYP8ssfGoQwqC2QQ4v9dbofPFCndS48zeieoWc8Q86RAVqX w4oDjeWP+jYJOt7tigxjjGoGHlTXZ0HgJyKlV2KwskEcy3amNhsuZgs7f8IL8Fwpaz70 0ak1Jmd4z0rCpfa986io8LCUL7MuMZ2dw8bTljQIdA7K1tvQ1/4Je1uqSYKaWg3ChxrM QKFQ== X-Gm-Message-State: APjAAAWastDgAbSz2hfQltigbQzgc8A97YunjRWmkkbYCiHFf0/dzy6W FLIgz/h4msvaY+GOl4RPYcoco3IF X-Google-Smtp-Source: APXvYqyjn5KdIbhyjhb+Eyp/O1dOZ9s/303PtrmXokySS5RNhVZMGhF2O0fJky0EeEft5B9asKn7UA== X-Received: by 2002:a5d:4f8f:: with SMTP id d15mr15221051wru.126.1571138270904; Tue, 15 Oct 2019 04:17:50 -0700 (PDT) Received: from sblaptop.fritz.box (ipbcc08937.dynamic.kabel-deutschland.de. [188.192.137.55]) by smtp.gmail.com with ESMTPSA id y3sm4364637wmg.2.2019.10.15.04.17.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 15 Oct 2019 04:17:48 -0700 (PDT) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 15 Oct 2019 13:17:29 +0200 Message-Id: <20191015111737.14246-1-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/9] avformat/matroskaenc: Fix memleak upon failure 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" Signed-off-by: Andreas Rheinhardt --- The easiest way to hit this memleak is by supplying an unreasonably low number to reserve_index_space. libavformat/matroskaenc.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 37706e56c7..4b32130a94 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -2567,7 +2567,7 @@ static int mkv_write_trailer(AVFormatContext *s) if (ret < 0) { av_log(s, AV_LOG_ERROR, "Could not write cached audio packet ret:%d\n", ret); - return ret; + goto fail; } } @@ -2577,7 +2577,7 @@ static int mkv_write_trailer(AVFormatContext *s) ret = mkv_write_chapters(s); if (ret < 0) - return ret; + goto fail; if ((pb->seekable & AVIO_SEEKABLE_NORMAL) && !mkv->is_live) { @@ -2595,7 +2595,8 @@ static int mkv_write_trailer(AVFormatContext *s) "Insufficient space reserved for cues: %d " "(needed: %" PRId64 ").\n", mkv->reserve_cues_space, cues_end - cuespos); - return AVERROR(EINVAL); + ret = AVERROR(EINVAL); + goto fail; } if (cues_end < cuespos + mkv->reserve_cues_space) @@ -2610,7 +2611,7 @@ static int mkv_write_trailer(AVFormatContext *s) ret = mkv_add_seekhead_entry(mkv->seekhead, MATROSKA_ID_CUES, cuespos); if (ret < 0) - return ret; + goto fail; } mkv_write_seekhead(pb, mkv); @@ -2664,8 +2665,9 @@ static int mkv_write_trailer(AVFormatContext *s) end_ebml_master(pb, mkv->segment); } +fail: mkv_free(mkv); - return 0; + return ret; } static int mkv_query_codec(enum AVCodecID codec_id, int std_compliance)