From patchwork Mon Sep 28 17:36:40 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 22648 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 7FCD644967F for ; Mon, 28 Sep 2020 20:36:59 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 64CC668B73A; Mon, 28 Sep 2020 20:36:59 +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 C1C5168B5C8 for ; Mon, 28 Sep 2020 20:36:52 +0300 (EEST) Received: by mail-wr1-f67.google.com with SMTP id z4so2294812wrr.4 for ; Mon, 28 Sep 2020 10:36:52 -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=AWbWnB1btHlW+s5dOPQRs8WlFCReYEJPek1QsKn6xA0=; b=edgznYMowLkWr3XVdSBN+pE6O1tg85NaOywFgnTH/1PUQH6AdWbb9ea7dH6Ovxs+/W ONZpGMtX0nPFXqwwMK4mSj51YtWYchrnBU8tukN5G5gTUgIA6ug8J8L8SgSl/2WqXN9a k2ZxqIoroq8KY8im9p6nR5gpIiMMgw93Xnn4OFzu4N9xEwfL8RW8t1cSbOlO073AhqIh U6kV555LZ6dzyo0tDNsGSggQOjkkjVlTBFZP0VEVwTFKWsLCvyDmvJCgGZFz/em8aoC9 nyBxVCoizkMZeVlJgfdHJBKW6XjT5wIWDhMWQ0xuwjyXkXaHiw90liw8VEwxnFzHEOj+ xp0A== 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=AWbWnB1btHlW+s5dOPQRs8WlFCReYEJPek1QsKn6xA0=; b=RzyZ96j4lVWlAxMm8dhJKfV+M2OgyM5pBAXlJo+zbFIxWXRBFBoThsk74oyfdK+gG9 e/8aNLYC4BM4Xklv3Z8Nd8bsacpY37HYnDEzspGVvHGdUx5aN12e7xYhf9JmfNZdqzKS 0cKdDrKmlH4RCXkMgfJ59FPjjeHX94fO41HQ57uMaRI204dcKl1eCgZJVVXYWcRHszX3 rgycWh756uNqjvaOcxP8LbQ8ORwibyQrAqBbzbJAxdeYUBfYTSLbwfdQTeeiTmPVlTz6 LJIPhYbg5DxyKi5k/NRZnso3hxBXdydYYTl5g4lI4sMioc0dZ+eilk8PkqdaeD5L3Ki4 cR0Q== X-Gm-Message-State: AOAM530BNdBW9UeNe+uCNfknTrTJK2GHgFoyuSFI+1KMHe9dcZ5JJx0u U1vF7fftLRWu9dvohy+Np2aLcD3mOKQ= X-Google-Smtp-Source: ABdhPJzV7wb/ZCv16zFkgNZ9fGLig/A+PCTtnDX+6RE/rqP0nR22Fc3wVzJlcq0Go4XHCcR1G6lRhA== X-Received: by 2002:a5d:6311:: with SMTP id i17mr2699453wru.243.1601314611728; Mon, 28 Sep 2020 10:36:51 -0700 (PDT) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id l3sm2047021wmh.27.2020.09.28.10.36.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Sep 2020 10:36:51 -0700 (PDT) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 28 Sep 2020 19:36:40 +0200 Message-Id: <20200928173642.701462-1-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/3] avformat/movenc: Free old vos_data before overwriting it 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" Otherwise the old data leaks whenever extradata needs to be rewritten (e.g. when encoding FLAC with our encoder that sends an updated extradata packet at the end). Signed-off-by: Andreas Rheinhardt --- libavformat/movenc.c | 1 + 1 file changed, 1 insertion(+) diff --git a/libavformat/movenc.c b/libavformat/movenc.c index a90bbfa458..c53be74a64 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -6978,6 +6978,7 @@ static int mov_write_trailer(AVFormatContext *s) AVCodecParameters *par = track->par; track->vos_len = par->extradata_size; + av_freep(&track->vos_data); track->vos_data = av_malloc(track->vos_len + AV_INPUT_BUFFER_PADDING_SIZE); if (!track->vos_data) return AVERROR(ENOMEM); From patchwork Mon Sep 28 17:36:41 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 22649 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 7AB08449D09 for ; Mon, 28 Sep 2020 20:37:19 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5DB2968B777; Mon, 28 Sep 2020 20:37:19 +0300 (EEST) 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 E044568B75D for ; Mon, 28 Sep 2020 20:37:12 +0300 (EEST) Received: by mail-wr1-f65.google.com with SMTP id t10so2300447wrv.1 for ; Mon, 28 Sep 2020 10:37:12 -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:in-reply-to:references :mime-version:content-transfer-encoding; bh=CXEK2saNb1PLf4JNgWdlwwLccakCuGkxf8QM3KSBNOo=; b=IrfNfyLogjj0MYlKRWq87jhcK7iiuHbWDpc1asRLeM0TiTelGXQNFSKjR72N3nPoek XzXPtooONAKHD+7hqX3TOv8EXLSqcJMo1Fro52/HR8tcNR+XPAly7eMpxTtCEbK3p4mF LDtNGK6kedvMcD7VOyEC/TZtoA9pli6SeXnwKRh5rOvhTVHIb5lYFhHDi2nLISc414bZ +FClOKYWpd+TY+DnlUTIMHodkRshDeiSFpMOErl1HRPkgyJyOI5JLBjto9KyUcUB1bul dmt3Fa3dAfi1qXLrvAn1/82fv7T4J4+AK9srt3r+ZhbuK30rX5nV74/kABSQGqvopck6 2AKQ== 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=CXEK2saNb1PLf4JNgWdlwwLccakCuGkxf8QM3KSBNOo=; b=a7s0YNnz76gYfHGMqUb/VTAnKk7CLDOC9OpWOqg32AZTbzyEFUbQZJBh+LvfQkpqL5 5NsiXUfFAHsAvz09PlkqnrdQfih5XocRPz39eUo3sbNxEEQF8K2Zg65I3saIsPIXfcls sk1ZPBA2aZKEu3ZLOXMQQUbl1B6hR13DIqoEenFVXFBfK9H+agM+39AobQgali6wB2y5 1upIa5jy1mK0xJZoxMyEf4QB7mwD30xgsgVKEwtm1FE48ycwtu80cfp8QqROdVG8Nvot 81GmdauWNwwpvIWN8mAXQcBVu3lQnu4cgqDMATCMIXIS5i8xGGYB0uBDSgH2V2Z3TPwz L9dg== X-Gm-Message-State: AOAM531vJdPf2K7zDeirUufvHleXa/lNIE6bxNxp6aYRpvPsyyrvJCpq Avg3t/h+YxgTmm5w1S+3f5dRS85Jmj8= X-Google-Smtp-Source: ABdhPJwtvEaNrie5C07ibzhlKlbwiqRHhYyEZaYRS0WFvOMSyueh5pEB1KReZZYOYTaZgv0TreMOiw== X-Received: by 2002:adf:e407:: with SMTP id g7mr2827575wrm.349.1601314632057; Mon, 28 Sep 2020 10:37:12 -0700 (PDT) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id l3sm2047021wmh.27.2020.09.28.10.37.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Sep 2020 10:37:11 -0700 (PDT) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 28 Sep 2020 19:36:41 +0200 Message-Id: <20200928173642.701462-2-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200928173642.701462-1-andreas.rheinhardt@gmail.com> References: <20200928173642.701462-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/3] avformat/movenc: Don't forget to free fragment buffers 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 buffers used when fragmented output is enabled have up until now not been freed in the deinit function; they leak e.g. if one errors out of mov_write_trailer() before one reaches the point where they are normally written out and freed. This can e.g. happen if allocating new vos_data fails at the beginning of mov_write_trailer(). Signed-off-by: Andreas Rheinhardt --- libavformat/movenc.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libavformat/movenc.c b/libavformat/movenc.c index c53be74a64..c12dd1e672 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -6279,9 +6279,11 @@ static void mov_free(AVFormatContext *s) av_freep(&mov->tracks[i].vos_data); ff_mov_cenc_free(&mov->tracks[i].cenc); + ffio_free_dyn_buf(&mov->tracks[i].mdat_buf); } av_freep(&mov->tracks); + ffio_free_dyn_buf(&mov->mdat_buf); } static uint32_t rgb_to_yuv(uint32_t rgb) From patchwork Mon Sep 28 17:36:42 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 22650 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 9A8F3449D09 for ; Mon, 28 Sep 2020 20:37:22 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7A62168B76F; Mon, 28 Sep 2020 20:37:22 +0300 (EEST) 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 0FFCE68B75D for ; Mon, 28 Sep 2020 20:37:14 +0300 (EEST) Received: by mail-wr1-f65.google.com with SMTP id w5so2259854wrp.8 for ; Mon, 28 Sep 2020 10:37:14 -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:in-reply-to:references :mime-version:content-transfer-encoding; bh=l62KvV4hMEzZlad0vcZwBwAV4XLjxww+R4h74j+Bqsw=; b=Ws95YxRofqm5yEoGhpFLFOsnkldydi/tW/T2m/1WmCV4viVxlW8xyPtcfMDjeW62z1 9TT+BRxvnEKri6tCROFVmxXVixmPfBMoGevte57rLRcqqVSVDgHL0YMG6G1wkYdCPyUD h1qsV0BMeFsXgE71EHclxPvB5W7cY6BeXIhJ6VbcSVsClemwgIq4E80cosGAoN1mfjj0 4vqsJteNGKuIJIQbT2+Xq58Q6U7eEqgjE/cGVXAqb6L7JS79baFcLrWtjoChbLbTYEKd 6kqDj+lvaizPirmw5lntJcgR8h9JDAbZOukWxWeW5APVInVQWR+tJlgIE9EvVFfobgA/ f30Q== 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=l62KvV4hMEzZlad0vcZwBwAV4XLjxww+R4h74j+Bqsw=; b=RFmveIFVUvL/NAFqCeEkRpOwa+XO2hzgowjGsItrMK56QEbHgkcRpYBMM4IM9Zr0hu eQhV2VRWfkSBiIFlnTZCVv2GJqSSh0Y/Mu2YuyF8/RGhYLsaCBEu6Fsoga81QW6Rbv7Y xECAjATFhBwtQ5Yx1tw6F6LdwLGKMFnz8Oy44ddc4fuxkxMWOgmu0enlg87neJJmo9/q yyCNHX1okS8Sg68cjuPRC8+HLlzikwhEM6nZCvkc3u0c2G+KooxmGtHKpJr8vMs4au7Z j+EClEnEXrgaoCyt4t/hw0COMPyD0dH+IavGkSlqSpUeNqz6Bo6o6nksMyt95IjmYFPe 7ekw== X-Gm-Message-State: AOAM530/+avBTp31DxyOCa0Bjs0HhDoxXbg1RTGbeFngGum6Bfx9JTz3 0TisnZ3AQ21nVsD/CqWkx7REiIzFXQA= X-Google-Smtp-Source: ABdhPJxFQNM9P61P9s0rhigPCtCqhnaedGQitodECU6Kpmn7pGHPsp+7pekAVvP695opOEcGzjE5lQ== X-Received: by 2002:adf:93e5:: with SMTP id 92mr2781397wrp.31.1601314633183; Mon, 28 Sep 2020 10:37:13 -0700 (PDT) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id l3sm2047021wmh.27.2020.09.28.10.37.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Sep 2020 10:37:12 -0700 (PDT) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 28 Sep 2020 19:36:42 +0200 Message-Id: <20200928173642.701462-3-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200928173642.701462-1-andreas.rheinhardt@gmail.com> References: <20200928173642.701462-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/3] avformat/movenc: Avoid allocation for timecode track 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 --- libavformat/movenc.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/libavformat/movenc.c b/libavformat/movenc.c index c12dd1e672..a481272ff1 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -6160,11 +6160,12 @@ static int mov_check_timecode_track(AVFormatContext *s, AVTimecode *tc, int src_ static int mov_create_timecode_track(AVFormatContext *s, int index, int src_index, AVTimecode tc) { - int ret; MOVMuxContext *mov = s->priv_data; MOVTrack *track = &mov->tracks[index]; AVStream *src_st = s->streams[src_index]; - AVPacket pkt = {.stream_index = index, .flags = AV_PKT_FLAG_KEY, .size = 4}; + uint8_t data[4]; + AVPacket pkt = { .data = data, .stream_index = index, + .flags = AV_PKT_FLAG_KEY, .size = 4 }; AVRational rate = find_fps(s, src_st); /* tmcd track based on video stream */ @@ -6187,13 +6188,8 @@ static int mov_create_timecode_track(AVFormatContext *s, int index, int src_inde track->st->avg_frame_rate = av_inv_q(rate); /* the tmcd track just contains one packet with the frame number */ - pkt.data = av_malloc(pkt.size); - if (!pkt.data) - return AVERROR(ENOMEM); AV_WB32(pkt.data, tc.start); - ret = ff_mov_write_packet(s, &pkt); - av_free(pkt.data); - return ret; + return ff_mov_write_packet(s, &pkt); } /*