From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 799C7497F2 for ; Mon, 19 Feb 2024 21:51:35 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3C3CA68D41F; Mon, 19 Feb 2024 23:51:26 +0200 (EET) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05olkn2076.outbound.protection.outlook.com [40.92.91.76]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6C4C068D41C for ; Mon, 19 Feb 2024 23:51:19 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Sb44gg18rnkDBg4n+YMr/3S0AeRRAvw45bL/UtQEhCNoRZmNgQCeh5aitOTP1o5Dzyc0ysv2mRTKMv8H1eLlFROaIhFh84Sd533INgIvgnR3JbhR8627pR8p3HP+L11DUv2lZgeLjTJd8wTcTMNk24k/AwzXhXKiOZUc8RXrUUMATCQHLL1MBZp4kW2Acp/JhHE3XC/PsVKz+MaRJ5psp6cuzb4ZTZp8sfNTUQXFkEMV7hX6/xa517L5KDnIjN/kpkJoMFnYozsSdOenBY6/iuvbW5frN297u9uwhY6g3Ues2CyL4R9hNd8zdSjBBjuyAOsS/fltdW4wK4E8Dp2ShA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ZNgsah0as+M6QwL7JyISJOfjaJ3g97r9JRrDwGIWgf8=; b=hTWeCwkzSr6rBflm09gYIgiMS6hkA6hywGaMnNjIPkKS7SL7yl+iF1Ynvfe2hDNyHD0f/ud3yaOvE/nR567BTWbZAZe1ae+py4j3mCg7RgcJBeKVaQv0GZs1khJz7gK86FlUx2N6Kix0UfkSeqNxDtou0ZhCIsOOeF4L+m138h1dh8VnQfdvBWfxi6m9f1fjejZi3DRspaarlBGt1fHkr5nS7RFydiD1bZ89/Tk9Z/73SwrdnUK0slo4Y8OjRc24FkeFjM8fSw1xJPgCWDOd8LluPH+7aKuUs8fhaiiZ+wt9PtId6RkeKUdoRBhOtZ++uiniGWHlIHS4Yu79f+M8FA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZNgsah0as+M6QwL7JyISJOfjaJ3g97r9JRrDwGIWgf8=; b=K0i9FPDvkcR56C6uurRQAnVbpom9gqAFoW91MCoG2oNo7lvDlvGR70hVXIH8l+7oPw8s0P2CESXrdo1k4Nm1QtdmflrQZQ+LKLFiXNaYS5OjI1OrrHYoZEkDPzlM6Tz8zOWal6QQy8ZmgkrbZYhK/CU/UkstijdtGOBRnrK3PxYSjfh8zvReYDjz1olNzv4+vMhf1DdzN6yUvRVERiPssVA4n7kuNzYuzorj5l59fAW6fUdT2bt3d66wcytyRbmQWnEoUJVym8R/+iUgKpE+84uRp6NlW9drpDxEIt3F9lD0IuTfpddoPORwunma9zX+x5o2bnwlHdyDRjTfIOgb9Q== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by PR3P250MB0161.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:174::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.39; Mon, 19 Feb 2024 21:51:14 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d%5]) with mapi id 15.20.7292.033; Mon, 19 Feb 2024 21:51:13 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 19 Feb 2024 22:52:46 +0100 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [OcLzIyDRMGnH3472aL1m9huNZSFNxJt0XvcRVo6lJaw=] X-ClientProxiedBy: FR3P281CA0114.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a3::6) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20240219215246.743238-4-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|PR3P250MB0161:EE_ X-MS-Office365-Filtering-Correlation-Id: 0645b9c0-ba0a-4bcc-7a82-08dc3194e45a X-MS-Exchange-SLBlob-MailProps: Cq7lScuPrnomf9zhpdf2mR/+OogaImHY2Gl7FvqYLYjS+C7UXUHcrDieyFejzm+A5apGOj+qtRfX2WWsPTcyd0+XVekQmUVtwjJGMdPMAzwOJL1dsYqz1qCzyXvT91Da9p1T9KpnhIDlNK+H8qwbf/FjIJXQeb0A/UXyoy35pf/hePAUPkh2PCZc3M1lmHIZOhskwHgfpG1gNd2MXqq4HLAg/5gVnvZX3Oa+KLXtXEp48F2kQe0LBzkUwgPJNGpXRi4M/4ITqFOxA4TBb6gEORB/RljSqyp39V0c4Jm35kYwAVHDmOaht0nXp/ZjuAIBd7UEGZShm+SS2OjzsrpwvKrRKz0kjEGFL7eoaJksXWcZnGQ19yKsY9QADM7POaYxMNa9872df2yXp7dGSBNfx1/oe4MNHyOkIC11JdRwFzgczQfR5NpsA4M0iTIUWtjx8T1AD8I5vd1UxhURaRvyYY0I2YgNTipzEc+Mrk9EOMH3QbLesWm1/IM39TRP8O6/J7EA59sqKTCFPpTGxc1Q3xkbJXGkevC0hqiKfBvkIZ2lq1hlZc+yvdyCaNwm8JF4go4iP4y2J3kmbw14tydrR7EQBcGG0ZeDeMRJBYtpHRnP8w+W6XJBEFc4FUg7fYcV+6cT+OrV9b5/7tJrj8jykOyG97HThjPN6E6MorXw0WyLp+6svFF6RjaXeEjr0ehfxC1e8AxXgoHtlXwUefcj1Y8t4AXh1V2MR5xZwT81HUev5vkocEZvwYW0TCOrZkuwMOEJZlvJA+I= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: M1X0UZb/suy4Iy1ApjVr50ViHpxZ7/hddX80hhaKxasy7jCXMOluTqxF3zVXWUHJ4FwjjdJ7ojszdN8C6No1nQN1rwzJwi/EEg24ZfQjv67ql6qEs5FMCdmgMU6jA71l21NZ0VR1TOoXSdea4eU+qECAtoXsex9AHU2W0SNo58dljb8QGlAxR9iatKefs36eDIkEYQHj0WOuEn86koGjXQ4Vw7aswyO065NtxAGdbo7OPd/OxPahOIqYsi5csLG2snRj+X8c2RAq5ArWGe3DwJ7iB+ugFMAbQC5bjip3U/FxsVom1dlQiiLgJQXB+3Y/i5xb9mrnG3DdwEQ/RrBiDv5a3oubDqZHmtAx4FSzZ8wpelwm3V3cj6SQPSp5FahyyGvf6dn65QEKQSVBfKSNNrNBFHltXCfVoaNtYCSRYWNd/fhkgaLeMQX7lX92GlbmRg9viYCAvTB+bkISv1Jv1c1p8+K9cj8vU1MlaMIn070SA5FnEoArQj5GvPyvjxLXNUbyO87iLUZurhMr8DaFQClRXUGvuCQjXkDgFQ022mHcLOwRQ0tixmEErjxwpdidn4MnVR7CyG2Yhe4yVAfuEXWzrmzSqJ+hhBe+cI09UUj7MJ5JaJbbVKmk06nsoNRr X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?6bc9GR3eIvUH07GJFpOzTRKUKhByahX63BakZZwHPJXi1rdjlfmlBZ8TBnpY?= =?us-ascii?Q?PYDepf3pczuxOiWQufB/wdSfxlxNcbbHkW9uYcEYb0Nr+/3C8zMfiMOmp3qa?= =?us-ascii?Q?uhexgVcryvrfGSioeYftGnkSjV2YCcu1sxrzWUmKlIjf2uIU9gsywu2YNwQ/?= =?us-ascii?Q?+6vThDsX+iiMmN0qPoNb+9gKUshX+n6jnY2j5YFwah/vNMMk/IA1Q0jm3OKm?= =?us-ascii?Q?cRRsBHmIEuNfHTDqlyNaTGNAwNuy6Tu7z1E/a8r4Ck23OlF6+Y1a3GrJSGEs?= =?us-ascii?Q?6ILOKV35cFNnHft4MC9HhTIKHqNMd/v/WhK1I0bhOBugyWjx7vZQ/fQRd+PN?= =?us-ascii?Q?E5Wi/gUaQC1vThl6k2n43kfDGXes375IW6Zo4rpPYN2s/i63ns9lUgMpe+2W?= =?us-ascii?Q?U1HtU80uQhUXKiax+2RnrseAj5ZVFEv8q5b8ahLOSSUql0zcNF/T2EQR2eCc?= =?us-ascii?Q?pG4UGD2pyZSgQvvIcSUc+gtMMSCzyLv88HWMepyAHBTSmFlNQHjGmuMPm4sA?= =?us-ascii?Q?muo6sMhjOZBq+mbbSYJs8asFjDCEBetCppkikEMUMkozQR9eaqKsXxHEv8pr?= =?us-ascii?Q?kF60okVS423vG1uJ/bKohnOYGK31R6Hw6eGU8JfQglTTNSUjqLJM2lpkT1Md?= =?us-ascii?Q?KrMqth6fiR1cHgXDu+hlsnU8BcorX5tXY5qQ+LURZLxVAKjAFVU2YCifV/0x?= =?us-ascii?Q?RDe5GUD/LgapmIQbUvlr6MlmQuQ6Bwq6qAT2L3l+2CFhAjLGH9Ggr4D+IXkf?= =?us-ascii?Q?QAl9MiIL+l22WK7NSPKyXe1OAmLUuHFXbIDEF8GK1hlLPukQFs5t4gcUwZY3?= =?us-ascii?Q?/SNKZTxnHXnobjXIcNpDArH0wO8COqpUVWaXiLD+wYERm9MEs4qaGdrV/CEq?= =?us-ascii?Q?O5YShUxC69j+W++j4YCNxM4kFrN6hnOD6jXzRti1gCEvWjbnvExaM3+dJy5v?= =?us-ascii?Q?N4VVq3G3EEflTkzIjn7FPKbfzHI46ETWPqDw81rF43xvg/jLS7oaL/wbPBDs?= =?us-ascii?Q?HyrvO9F/O4zdnSxNho3t+u9X0CiA6A4XWrFqKn0xm1Mc6Ez7JUurjefiR+li?= =?us-ascii?Q?gWBjbrMysAqOspmqWJmdxQnMPie8T3oGaW4uYva+ZFrRZRWl1IZ6lHbED6KZ?= =?us-ascii?Q?+xv8hP6CfKZvZvoRfg6hvHuvlWTQqOKoErhNCGkbK0Y5zxaOW1bYqMcNwlco?= =?us-ascii?Q?uLCX2S5tK9JgCOfYCfWskqAyV+KctivkiBzAvnOcafcLY5XRv+UqTJyj64Bj?= =?us-ascii?Q?26xcyqcd1ZiTSB0N6++nwPTP1B+7dtkPNU8BQmCgZA=3D=3D?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0645b9c0-ba0a-4bcc-7a82-08dc3194e45a X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Feb 2024 21:51:13.7276 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3P250MB0161 Subject: [FFmpeg-devel] [PATCH 5/5] avformat/iamf_writer: Fix leaks on error X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Fixes Coverity issues #1559544 and #1559547. Signed-off-by: Andreas Rheinhardt --- libavformat/iamf_writer.c | 42 +++++++++++++++++++++++++++------------ 1 file changed, 29 insertions(+), 13 deletions(-) diff --git a/libavformat/iamf_writer.c b/libavformat/iamf_writer.c index e8a88b44c3..f6ebb4aaea 100644 --- a/libavformat/iamf_writer.c +++ b/libavformat/iamf_writer.c @@ -240,12 +240,12 @@ int ff_iamf_add_audio_element(IAMFContext *iamf, const AVStreamGroup *stg, void audio_element->substreams = av_calloc(stg->nb_streams, sizeof(*audio_element->substreams)); if (!audio_element->substreams) - return AVERROR(ENOMEM); + goto fail_enomem; audio_element->nb_substreams = stg->nb_streams; audio_element->layers = av_calloc(iamf_audio_element->nb_layers, sizeof(*audio_element->layers)); if (!audio_element->layers) - return AVERROR(ENOMEM); + goto fail_enomem; for (int i = 0, j = 0; i < iamf_audio_element->nb_layers; i++) { int nb_channels = iamf_audio_element->layers[i]->ch_layout.nb_channels; @@ -266,7 +266,8 @@ int ff_iamf_add_audio_element(IAMFContext *iamf, const AVStreamGroup *stg, void if (nb_channels) { av_log(log_ctx, AV_LOG_ERROR, "Invalid channel count across substreams in layer %u from stream group %u\n", i, stg->index); - return AVERROR(EINVAL); + ret = AVERROR(EINVAL); + goto fail; } } @@ -276,13 +277,14 @@ int ff_iamf_add_audio_element(IAMFContext *iamf, const AVStreamGroup *stg, void if (param->nb_subblocks != 1) { av_log(log_ctx, AV_LOG_ERROR, "nb_subblocks in demixing_info for stream group %u is not 1\n", stg->index); - return AVERROR(EINVAL); + ret = AVERROR(EINVAL); + goto fail; } if (!param_definition) { param_definition = add_param_definition(iamf, param, audio_element, log_ctx); if (!param_definition) - return AVERROR(ENOMEM); + goto fail_enomem; } } if (iamf_audio_element->recon_gain_info) { @@ -291,29 +293,36 @@ int ff_iamf_add_audio_element(IAMFContext *iamf, const AVStreamGroup *stg, void if (param->nb_subblocks != 1) { av_log(log_ctx, AV_LOG_ERROR, "nb_subblocks in recon_gain_info for stream group %u is not 1\n", stg->index); - return AVERROR(EINVAL); + ret = AVERROR(EINVAL); + goto fail; } if (!param_definition) { param_definition = add_param_definition(iamf, param, audio_element, log_ctx); if (!param_definition) - return AVERROR(ENOMEM); + goto fail_enomem; } } tmp = av_realloc_array(iamf->audio_elements, iamf->nb_audio_elements + 1, sizeof(*iamf->audio_elements)); if (!tmp) - return AVERROR(ENOMEM); + goto fail_enomem; iamf->audio_elements = tmp; iamf->audio_elements[iamf->nb_audio_elements++] = audio_element; return 0; +fail_enomem: + ret = AVERROR(ENOMEM); +fail: + ff_iamf_free_audio_element(&audio_element); + return ret; } int ff_iamf_add_mix_presentation(IAMFContext *iamf, const AVStreamGroup *stg, void *log_ctx) { IAMFMixPresentation **tmp, *mix_presentation; + int ret; if (stg->type != AV_STREAM_GROUP_PARAMS_IAMF_MIX_PRESENTATION) return AVERROR(EINVAL); @@ -340,14 +349,15 @@ int ff_iamf_add_mix_presentation(IAMFContext *iamf, const AVStreamGroup *stg, vo if (!param) { av_log(log_ctx, AV_LOG_ERROR, "output_mix_config is not present in submix %u from " "Mix Presentation ID %"PRId64"\n", i, stg->id); - return AVERROR(EINVAL); + ret = AVERROR(EINVAL); + goto fail; } param_definition = ff_iamf_get_param_definition(iamf, param->parameter_id); if (!param_definition) { param_definition = add_param_definition(iamf, param, NULL, log_ctx); if (!param_definition) - return AVERROR(ENOMEM); + goto fail_enomem; } for (int j = 0; j < submix->nb_elements; j++) { @@ -357,25 +367,31 @@ int ff_iamf_add_mix_presentation(IAMFContext *iamf, const AVStreamGroup *stg, vo if (!param) { av_log(log_ctx, AV_LOG_ERROR, "element_mix_config is not present for element %u in submix %u from " "Mix Presentation ID %"PRId64"\n", j, i, stg->id); - return AVERROR(EINVAL); + ret = AVERROR(EINVAL); + goto fail; } param_definition = ff_iamf_get_param_definition(iamf, param->parameter_id); if (!param_definition) { param_definition = add_param_definition(iamf, param, NULL, log_ctx); if (!param_definition) - return AVERROR(ENOMEM); + goto fail_enomem; } } } tmp = av_realloc_array(iamf->mix_presentations, iamf->nb_mix_presentations + 1, sizeof(*iamf->mix_presentations)); if (!tmp) - return AVERROR(ENOMEM); + goto fail_enomem; iamf->mix_presentations = tmp; iamf->mix_presentations[iamf->nb_mix_presentations++] = mix_presentation; return 0; +fail_enomem: + ret = AVERROR(ENOMEM); +fail: + ff_iamf_free_mix_presentation(&mix_presentation); + return ret; } static int iamf_write_codec_config(const IAMFContext *iamf, -- 2.34.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".