From patchwork Sun Jan 31 14:52:45 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?b?0JLQsNC00LjQvCDQkdC10LfQtNGD0YjQvdGL0Lk=?= X-Patchwork-Id: 25285 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 4D34E44B2F4 for ; Sun, 31 Jan 2021 16:58:39 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2749C689DE2; Sun, 31 Jan 2021 16:58:39 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f54.google.com (mail-lf1-f54.google.com [209.85.167.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6162A689C64 for ; Sun, 31 Jan 2021 16:58:33 +0200 (EET) Received: by mail-lf1-f54.google.com with SMTP id e2so15583266lfj.13 for ; Sun, 31 Jan 2021 06:58:33 -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=09TOqupKo9hmwnl0n4/DKPq6FbO0TNmBx1uTwd4TO+M=; b=AAsPXVlY5gP6SYSe0ILLtrsqWWMV63RkfbegcRlaxVoV+2yKCpA3ztcuyoKpkQxiVB YgEyMNh4IdP1UybuYj8ytScJy5aYSWUvGjrE3Un/9/ixbfTELiqayfisOc/ZIP9u01f2 FDt+KUYGdX9wiGBjSpFyrIPdvrfaSVICCGhM44bqYfNz54q3maZzPDBM11HMFlIHuqBn ntAm20bcaXVF9TTEVPBqQA2WhtXrSVc2TDR78DCOJ8gquDIdSfOgz022/uJoc3W7TuaN gioawe07/nLG54sn+3LkUHtTmOYkRdCuIsiKcCAGYleED7tgjNYjZcgsHw0MPWnfE/uP v/GQ== 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=09TOqupKo9hmwnl0n4/DKPq6FbO0TNmBx1uTwd4TO+M=; b=cQ5iv+pgo2knNcw43THNBdRf6pJ0ohxjte3/Wew1qzRz6HPjdTfvmieF8QEQpFy13W jnWyQLIsr93XWAPq8JzEDuM+znc0/5x53GZYtdesnByM6aUyfsw8B4kfU5hTSK6iBFnG qDLn7Psyqd+usmu8b7V9+Tb3H56fcMJpUzCmqnbjGk2wjnjEoE4/PSuu5Kv3xWcbeck5 1JmGse6bOD2dj4a/PsQsRp/5BMjeQ74KZt6XzJtx+5a2z4+Qgxs4tA60l4tMgDjuG/Mh bzslu3Ne+iV0fDyOAF9wfeJSCEDMf72KMOZohXn19alXz0+iOfeZYZpOLcaTDhwze3cO LVNQ== X-Gm-Message-State: AOAM532+K6o3FBPSx/l9cvMWh8KN65qG6L8TnT4JRXDnDDe192V4V0Fe ZtCSkje1wDEXRzFyPfNzMdsoLZqVJ23iZt9V X-Google-Smtp-Source: ABdhPJwi6H1CT+bRf7PUK8pSI5MQhlLnPFf4jWDkUmZ4HrxP72o4hU4m3k8p9yfwRYV9hccVPDHnIA== X-Received: by 2002:a05:6512:224f:: with SMTP id i15mr6681168lfu.545.1612104780270; Sun, 31 Jan 2021 06:53:00 -0800 (PST) Received: from localhost.localdomain ([149.255.131.34]) by smtp.gmail.com with ESMTPSA id r26sm2670371lfi.295.2021.01.31.06.52.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 31 Jan 2021 06:52:59 -0800 (PST) From: Vadym Bezdushnyi To: ffmpeg-devel@ffmpeg.org Date: Sun, 31 Jan 2021 16:52:45 +0200 Message-Id: <20210131145245.15161-1-vadim.bezdush@gmail.com> X-Mailer: git-send-email 2.30.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avformat/movenccenc: Fix memory leak for muxing CENC-encrypted files 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: Vadym Bezdushnyi Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Vadym Bezdushnyi --- Memory for auxillary_info was not freed after usage. Leak can be reproduced with following commands: Optionally, generate input video: ffmpeg -f lavfi -i testsrc=duration=10:size=1280x720:rate=30 input.mp4 Run ffmpeg with valgrind: valgrind --leak-check=full --show-leak-kinds=all \ ffmpeg -y -i input.mp4 -vcodec copy -acodec copy \ -encryption_scheme cenc-aes-ctr \ -encryption_key 00000000000000000000000000000000 \ -encryption_kid 00000000000000000000000000000000 \ ffmpeg_encrypted.mp4 For test video which has duration of 10 sec, leak is 4 Kb. For 100 sec video, leak will be 33 Kb. Most likely, leaked memory will grow linearly to the number of input frames. libavformat/movenccenc.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libavformat/movenccenc.c b/libavformat/movenccenc.c index b91294f706..74f3c4ccfb 100644 --- a/libavformat/movenccenc.c +++ b/libavformat/movenccenc.c @@ -412,4 +412,6 @@ int ff_mov_cenc_init(MOVMuxCencContext* ctx, uint8_t* encryption_key, void ff_mov_cenc_free(MOVMuxCencContext* ctx) { av_aes_ctr_free(ctx->aes_ctr); + av_freep(&ctx->auxiliary_info); + av_freep(&ctx->auxiliary_info_sizes); }