From patchwork Sun Jan 26 10:27:36 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 17554 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 30CD944B83E for ; Sun, 26 Jan 2020 12:27:53 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 150A96882F4; Sun, 26 Jan 2020 12:27:53 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f68.google.com (mail-wr1-f68.google.com [209.85.221.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6D97968A485 for ; Sun, 26 Jan 2020 12:27:46 +0200 (EET) Received: by mail-wr1-f68.google.com with SMTP id y11so7398759wrt.6 for ; Sun, 26 Jan 2020 02:27:46 -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:mime-version :content-transfer-encoding; bh=9Yd6vGVjdBryYNcXSJiJiwma7VfT5p2Et7G/KmyTazs=; b=cTIiQ+eHKTvE0CsHJAibG/YXy8bYlyUWOps7Q2kDxSyg32OunXREph22Oen0I/zS/D ndgSXNMXKeOxF6I98RqD7wCt4zaFlCiEUgseEKf+hPgYbqzCuaQ0SKrNNkTpqRt8ZKbv gNqqBu5Or25nuLUqUl7Z9L1v/ITLK1Ya4ZnFRZnMYW/x3ZvGMU+kiusDtDpDSGIc/0+T xSfb5VQSIute9rZdB+GGCDiSBp8IGrS3EOztPbzEM6zc/ExWtNievXCfZgdiiz+GT6OO aKTyl3SCk52N6i8N1t2A9vE99bN3hSTKNY4GKA5cUuZJMLNui5Q4RHVXFNvEyRcw7ifA bUPw== 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=9Yd6vGVjdBryYNcXSJiJiwma7VfT5p2Et7G/KmyTazs=; b=hIK725BmZcQMEo1YVA0r/6obJNx58r5lxEoMut65Qkoj+4vIAMLQub0/7qqlCvktuF E+Y/onAMe0TYrxVigTZgcx2fv+oL6BeuJLoEnk3z/C2KoVQS7/lBear8YGD9fP+PZQvZ fdIszt8M747+dm3Tb+l8ljRc/QNBBc1B1GIpQPGqLmtjhU5KN3LfU2H/rP9KlsgrSlTh lI/6dJ6vg4dkQIqzceZ7rC7qDkyF4cJdDaG+Nt6W9Ws2HusqUofGk7qNiOrmpefOQsH0 kfaRhZz427/iRc3UEO2gMo/KAo82RpU3HggcaWoInVMD5SEo0gptc7+fKf2RjjGYS1Pd oibQ== X-Gm-Message-State: APjAAAVVKmUS8HgqdMatkif3ie6jha11k9j5xjK2yDv0PbqonARnY1Ae JHPA3V6y3gbfn66U7hBFhO8UHn9b X-Google-Smtp-Source: APXvYqzkVkjzWlUBAE7kYYsk+3Uy3APshxU4HiXRDtVG1p9nPzstW3pDdMN5WaeaCoHutnsIu0xf8g== X-Received: by 2002:adf:f5cb:: with SMTP id k11mr15336553wrp.71.1580034465640; Sun, 26 Jan 2020 02:27:45 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc08bbf.dynamic.kabel-deutschland.de. [188.192.139.191]) by smtp.gmail.com with ESMTPSA id p5sm15182640wrt.79.2020.01.26.02.27.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Jan 2020 02:27:45 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 26 Jan 2020 11:27:36 +0100 Message-Id: <20200126102739.26495-1-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/4] avformat/audiointerleave: Check before dereferencing 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" In order to use ff_audio_rechunk_interleave() (a special interleavement function for situations where the ordinary "interleave by dts" is not appropriate), the AVStreams must have private data and this private data must begin with an AudioInterleaveContext which contains a fifo that may need to be freed and when ff_audio_interleave_close() was called, it just assumed that everything has been properly set up, i.e. that every streams priv_data exists. This implies that this function can not be called from the deinit function of a muxer, because such functions might be called if the private data has not been successfully allocated. In order to change this, add a check for whether the private data exists before trying to free the fifo in it. Signed-off-by: Andreas Rheinhardt --- libavformat/audiointerleave.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavformat/audiointerleave.c b/libavformat/audiointerleave.c index b602eb7105..6797546a44 100644 --- a/libavformat/audiointerleave.c +++ b/libavformat/audiointerleave.c @@ -33,7 +33,7 @@ void ff_audio_interleave_close(AVFormatContext *s) AVStream *st = s->streams[i]; AudioInterleaveContext *aic = st->priv_data; - if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) + if (aic && st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) av_fifo_freep(&aic->fifo); } } From patchwork Sun Jan 26 10:27:37 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 17556 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 40D8C44B846 for ; Sun, 26 Jan 2020 12:28:15 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2D09568B02E; Sun, 26 Jan 2020 12:28:15 +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 8C65768AF8D for ; Sun, 26 Jan 2020 12:28:07 +0200 (EET) Received: by mail-wm1-f67.google.com with SMTP id t23so3791679wmi.1 for ; Sun, 26 Jan 2020 02:28:07 -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=3DeslVUXhp55cTGlFgfCvWl40jRtglc+MD/6/CE7Cww=; b=QwHAxVmTyuOa3gQN34ALgA/lGYX+zCIerEyQYId7sN9ewjTJ4gS+Kk+nF29BYcmvnm ZVMkNMT9lhDJc3X4YYHnglRPCliifexLAW5TiU4JBmjLyg0EKZlhaE4zPIlJQU7Euyhg pPRDZ9KF09fYHgg2tFxApSEzKiEQx/lkWnRI68hQa/2IO2ONN4abnr7KZzKJRth8R/AA 4Fy3C22dUxqs93EZkD8vecEy9bxzAV/j9EbObUQ8S0FI5mjdapawjejcbKHs8y50SLIE 6SI4X0P08ihfnby9eRdWmvGs29xzQheKLybkOmBbCCY+Xl7kMSOiEvut8vxogkF3yKEq tGGA== 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=3DeslVUXhp55cTGlFgfCvWl40jRtglc+MD/6/CE7Cww=; b=gLzY/u2zJ/8Q+a1tjSFgqf6oowrmM/Bh738q5kvrsfd+UbcCA2RdIp+MQSXRkKYAFh uPvRmo6WIqAcGV1v9JL9dCkrnOVVkO6rUPfDIBpVEunJ1/Wo/C+rFV1KbWAerjjcxJ3P YQonlD+6t7iBWn3MDrvtq9Bqu2+GxrERAe2Hwv9K5Q0agsxCbvTOJ15Irf57ybrMf3Kx EpVan1uH5mKFE9wG3Xhtot0NpUpg/3ISgUihiFWUwSI2lyb6SP/FwEBtr4ri/b+CfIuR OVsEtvalifZPn5hl3aiMqGri5bIJcrE5/4rTBXe/NTUioIxQyQSR4MDPbFHBJhjq/TkN bcUw== X-Gm-Message-State: APjAAAXQoHziRH4RHw8Juuda4rB7wNRz4orHqZf62bvY6QvRZmNRS87P HRJNeTiGmLXEWCbDuua0bV8dBEz1 X-Google-Smtp-Source: APXvYqyLsoYKIyUXJrlVht8Q8IrHCNk0+v4UunwwnOF8OdWTqw0lQkRXESk5nnml3VzcxuELRvl0dw== X-Received: by 2002:a05:600c:21c5:: with SMTP id x5mr7717378wmj.72.1580034485895; Sun, 26 Jan 2020 02:28:05 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc08bbf.dynamic.kabel-deutschland.de. [188.192.139.191]) by smtp.gmail.com with ESMTPSA id p5sm15182640wrt.79.2020.01.26.02.28.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Jan 2020 02:28:05 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 26 Jan 2020 11:27:37 +0100 Message-Id: <20200126102739.26495-2-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200126102739.26495-1-andreas.rheinhardt@gmail.com> References: <20200126102739.26495-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/4] avformat/mxfenc: Don't free priv_data of AVStream 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" It will be freed when the AVStream is freed later anyway. Signed-off-by: Andreas Rheinhardt --- libavformat/mxfenc.c | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c index 374a83d069..bd3b8bb2d0 100644 --- a/libavformat/mxfenc.c +++ b/libavformat/mxfenc.c @@ -554,16 +554,6 @@ static void mxf_write_metadata_key(AVIOContext *pb, unsigned int value) avio_wb24(pb, value); } -static void mxf_free(AVFormatContext *s) -{ - int i; - - for (i = 0; i < s->nb_streams; i++) { - AVStream *st = s->streams[i]; - av_freep(&st->priv_data); - } -} - static const MXFCodecUL *mxf_get_data_definition_ul(int type) { const MXFCodecUL *uls = ff_mxf_data_definition_uls; @@ -3029,8 +3019,6 @@ end: av_freep(&mxf->timecode_track->priv_data); av_freep(&mxf->timecode_track); - mxf_free(s); - return err < 0 ? err : 0; } From patchwork Sun Jan 26 10:27:38 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 17555 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 31A3244B846 for ; Sun, 26 Jan 2020 12:28:14 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0FA8768AFBA; Sun, 26 Jan 2020 12:28:14 +0200 (EET) 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 76BA768AF8C for ; Sun, 26 Jan 2020 12:28:07 +0200 (EET) Received: by mail-wr1-f67.google.com with SMTP id z3so7410245wru.3 for ; Sun, 26 Jan 2020 02:28:07 -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=MPVMExwIrQ6Oz7sAebOJ/MG1vd3SeUaRMj+rN/wl0Yk=; b=noHMILxoKmZoB3njtAVZlLfrriyFgnN1N+ReYxropQ4rzNm8viLzs291zZnkOR16v6 B1I5s49vAGNVLnW3Htj+wwk3bKEOV1ij2L/05pOmjznS2RXe+uCSnhAKhxDeAom8fF/T L7RzIk09HO342FiCA/KCAU5Gtr5FWH/icGZ6d4PTq+4rqMb18nazBtu6sZnXrWcHVygr zOcyXe4icMi7sEx98LvReXshKO65Sejyq5CacY+UvN554sd1ejV0ZgJmXxi/d5k9OHKX Wnul+RCd4JM7pMemevqALXpGysaHUxmMkbiPOz8rY+hC4+WaJgrrB+9/S84FOemQvpuX oorw== 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=MPVMExwIrQ6Oz7sAebOJ/MG1vd3SeUaRMj+rN/wl0Yk=; b=fWt5xXnzf+06QpPZ/2fimop0peiiTYAG1OGzY0tJldkL2ZFLWNUPQ+Sc3D/6BuzcVI Salo3pPUI/tumCh6jDcztBJZBwQCwGpMeH/glSCFE9UXiWERzgjXrJDk4bWrC1GCj/Pb CrA141mXujj/xWnt64VdBWHQj71USmaVTfKynVlhkk9LMoCVI1Zio3mnUwgIVUr7pgrL f0tWXThBoS9kvGAGoapqVGeIdE3bJgHdauoPDAfi55SOKszIpHXHkbhoSUlKstLnQCBy CBDY98FXXQIokJ/XWo7Rc3wUP1nFWUU7iAcEycvEIJ0/cE7rZW1bXS2sRu2aCqT8ydcc JUpQ== X-Gm-Message-State: APjAAAX5HhYqcPVCMy5sq7qZ6ny3iYcmSASZV5Pybhp6eJfOClcXtQHQ v8UcqCkjZW9D7tLkfvHC/Q13BEFR X-Google-Smtp-Source: APXvYqzQxmLoANE6CoS53c/kE+VwlKnCyEKyIvtGfq0+ji9bz6Xitkb0wc4/xDqm6v+mpJbYU08Tig== X-Received: by 2002:a5d:5273:: with SMTP id l19mr15415755wrc.175.1580034486726; Sun, 26 Jan 2020 02:28:06 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc08bbf.dynamic.kabel-deutschland.de. [188.192.139.191]) by smtp.gmail.com with ESMTPSA id p5sm15182640wrt.79.2020.01.26.02.28.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Jan 2020 02:28:06 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 26 Jan 2020 11:27:38 +0100 Message-Id: <20200126102739.26495-3-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200126102739.26495-1-andreas.rheinhardt@gmail.com> References: <20200126102739.26495-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/4] avformat/mxfenc: Add deinit function 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" Fixes memleaks when allocating the private data of the timecode_track fails or when the trailer is never written. Signed-off-by: Andreas Rheinhardt --- libavformat/mxfenc.c | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c index bd3b8bb2d0..7ea47d7311 100644 --- a/libavformat/mxfenc.c +++ b/libavformat/mxfenc.c @@ -2960,13 +2960,12 @@ static int mxf_write_footer(AVFormatContext *s) { MXFContext *mxf = s->priv_data; AVIOContext *pb = s->pb; - int i, err = 0; + int i, err; if (!mxf->header_written || (s->oformat == &ff_mxf_opatom_muxer && !mxf->body_partition_offset)) { /* reason could be invalid options/not supported codec/out of memory */ - err = AVERROR_UNKNOWN; - goto end; + return AVERROR_UNKNOWN; } mxf->duration = mxf->last_indexed_edit_unit + mxf->edit_units_count; @@ -2975,10 +2974,10 @@ static int mxf_write_footer(AVFormatContext *s) mxf->footer_partition_offset = avio_tell(pb); if (mxf->edit_unit_byte_count && s->oformat != &ff_mxf_opatom_muxer) { // no need to repeat index if ((err = mxf_write_partition(s, 0, 0, footer_partition_key, 0)) < 0) - goto end; + return err; } else { if ((err = mxf_write_partition(s, 0, 2, footer_partition_key, 0)) < 0) - goto end; + return err; mxf_write_klv_fill(s); mxf_write_index_table_segment(s); } @@ -2991,18 +2990,18 @@ static int mxf_write_footer(AVFormatContext *s) /* rewrite body partition to update lengths */ avio_seek(pb, mxf->body_partition_offset[0], SEEK_SET); if ((err = mxf_write_opatom_body_partition(s)) < 0) - goto end; + return err; } avio_seek(pb, 0, SEEK_SET); if (mxf->edit_unit_byte_count && s->oformat != &ff_mxf_opatom_muxer) { if ((err = mxf_write_partition(s, 1, 2, header_closed_partition_key, 1)) < 0) - goto end; + return err; mxf_write_klv_fill(s); mxf_write_index_table_segment(s); } else { if ((err = mxf_write_partition(s, 0, 0, header_closed_partition_key, 1)) < 0) - goto end; + return err; } // update footer partition offset for (i = 0; i < mxf->body_partitions_count; i++) { @@ -3011,15 +3010,21 @@ static int mxf_write_footer(AVFormatContext *s) } } -end: + return 0; +} + +static void mxf_deinit(AVFormatContext *s) +{ + MXFContext *mxf = s->priv_data; + ff_audio_interleave_close(s); av_freep(&mxf->index_entries); av_freep(&mxf->body_partition_offset); - av_freep(&mxf->timecode_track->priv_data); - av_freep(&mxf->timecode_track); - - return err < 0 ? err : 0; + if (mxf->timecode_track) { + av_freep(&mxf->timecode_track->priv_data); + av_freep(&mxf->timecode_track); + } } static int mxf_interleave_get_packet(AVFormatContext *s, AVPacket *out, AVPacket *pkt, int flush) @@ -3170,6 +3175,7 @@ AVOutputFormat ff_mxf_muxer = { .write_header = mxf_write_header, .write_packet = mxf_write_packet, .write_trailer = mxf_write_footer, + .deinit = mxf_deinit, .flags = AVFMT_NOTIMESTAMPS, .interleave_packet = mxf_interleave, .priv_class = &mxf_muxer_class, @@ -3185,6 +3191,7 @@ AVOutputFormat ff_mxf_d10_muxer = { .write_header = mxf_write_header, .write_packet = mxf_write_packet, .write_trailer = mxf_write_footer, + .deinit = mxf_deinit, .flags = AVFMT_NOTIMESTAMPS, .interleave_packet = mxf_interleave, .priv_class = &mxf_d10_muxer_class, @@ -3201,6 +3208,7 @@ AVOutputFormat ff_mxf_opatom_muxer = { .write_header = mxf_write_header, .write_packet = mxf_write_packet, .write_trailer = mxf_write_footer, + .deinit = mxf_deinit, .flags = AVFMT_NOTIMESTAMPS, .interleave_packet = mxf_interleave, .priv_class = &mxf_opatom_muxer_class, From patchwork Sun Jan 26 10:27:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 17557 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 0A1FA44B846 for ; Sun, 26 Jan 2020 12:28:16 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id ED2AF68B060; Sun, 26 Jan 2020 12:28:15 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3A0D968AF8D for ; Sun, 26 Jan 2020 12:28:08 +0200 (EET) Received: by mail-wr1-f65.google.com with SMTP id d16so7378089wre.10 for ; Sun, 26 Jan 2020 02:28:08 -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=a8WPgJpcZNcjgGOuaLPcQZ9909SIW7pUPoGeA5P7GBk=; b=EDPNtQpS6AAMX7YcHTHfTkNLZIfmKOzI/J21QmKgVNTzwstu2p2mTNCH9JXcGxS1XU iw5WGPWVDguVSQ0hlCsgecj7XMpwJdnWGwXcbMX5qBKOU1XTE61Y8cOdIwG1c6IgS+uk MsixXqbFX9bqOjS1cPKkWckHyr0p4Kh6/jvVTALeDSX5Fz7iWxh3qSMJgCSed+bzbwTA s/SYhexRT8qyD0NnTtd8TMi//WldVnu+7XWQGLwcNvqYbeVl+5woBYFQeO6+W5rOmRZK QjYoaorvlhUYy2b2qP8RSFH/CLzC8mhbqhSWtTwDMRc2DhjRhsdp5YTtqaaq5wazyOkJ 4ytQ== 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=a8WPgJpcZNcjgGOuaLPcQZ9909SIW7pUPoGeA5P7GBk=; b=WPTaxePp1XM/IltRd2+qcCII7wTv6z4kJrR1IHYit6Zz9EYus+WuzxDTZGdxSUaheF baglCPiegE4gtovEWP1CENMbrfbqPwKq3hKyIa6jgzn/zXudyvh6TsY+7EHI9UBUlRpe rz5hWH4r07zGhAfG4MfcCdkvuQm0s6+WVJnZyw+PvW/4+00Z8SAha3QmBQev+CUL7ZdL im95s5Bvf7dJyLwDAw77ytZdVpeChdFZlW9hHEFsmIpj8QVXNRC/ewJIfLedk8B+rKZ5 oI79s6bGKBY7bNjcFiit20Vt6uqd/9m0K+VXAYNGayWk0tBbOsBLhwe/aVA7asRgqY3o eDnA== X-Gm-Message-State: APjAAAUjxmWQsNPTegL5d4MiOgOHP1rWtaX0+7miIqI6GhFCPGpIwow/ eBewTKB34N13bm1P0IAOUp+MH3OT X-Google-Smtp-Source: APXvYqyR9fV5l6iIm/NhcJoLxgUBKO07brUIUqDcLyhi6hHW9WDFPNaKp+J6yZUnnsma5eXVWvV+lA== X-Received: by 2002:adf:f5cb:: with SMTP id k11mr15338580wrp.71.1580034487533; Sun, 26 Jan 2020 02:28:07 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc08bbf.dynamic.kabel-deutschland.de. [188.192.139.191]) by smtp.gmail.com with ESMTPSA id p5sm15182640wrt.79.2020.01.26.02.28.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Jan 2020 02:28:07 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 26 Jan 2020 11:27:39 +0100 Message-Id: <20200126102739.26495-4-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200126102739.26495-1-andreas.rheinhardt@gmail.com> References: <20200126102739.26495-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 4/4] avformat/gxfenc: Add deinit function 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" Fixes memleaks when the trailer is never written (e.g. if the call to gxf_write_map_packet() at the end of gxf_write_header() fails). Signed-off-by: Andreas Rheinhardt --- libavformat/gxfenc.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/libavformat/gxfenc.c b/libavformat/gxfenc.c index e09b8d7625..9eebefc683 100644 --- a/libavformat/gxfenc.c +++ b/libavformat/gxfenc.c @@ -853,8 +853,6 @@ static int gxf_write_trailer(AVFormatContext *s) int i; int ret; - ff_audio_interleave_close(s); - gxf_write_eos_packet(pb); end = avio_tell(pb); avio_seek(pb, 0, SEEK_SET); @@ -872,10 +870,17 @@ static int gxf_write_trailer(AVFormatContext *s) avio_seek(pb, end, SEEK_SET); + return 0; +} + +static void gxf_deinit(AVFormatContext *s) +{ + GXFContext *gxf = s->priv_data; + + ff_audio_interleave_close(s); + av_freep(&gxf->flt_entries); av_freep(&gxf->map_offsets); - - return 0; } static int gxf_parse_mpeg_frame(GXFStreamContext *sc, const uint8_t *buf, int size) @@ -1025,5 +1030,6 @@ AVOutputFormat ff_gxf_muxer = { .write_header = gxf_write_header, .write_packet = gxf_write_packet, .write_trailer = gxf_write_trailer, + .deinit = gxf_deinit, .interleave_packet = gxf_interleave_packet, };