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 A2F4B47371 for ; Fri, 6 Oct 2023 02:37:47 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id ED42E68CAE0; Fri, 6 Oct 2023 05:37:44 +0300 (EEST) Received: from EUR02-AM0-obe.outbound.protection.outlook.com (mail-am0eur02olkn2045.outbound.protection.outlook.com [40.92.49.45]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 346BB68CA1D for ; Fri, 6 Oct 2023 05:37:39 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=etK2G6oGIt77DISKvmPldnxVjYlH5b1/VarErSKNtGNyLs+Gz1O8BcXsL4E1uXVWpd0OtRGa/lc/24AFCKXUXfihSVzSOl3CeCMyOru6LbK4krsPn6wvo9L14SqYr0A1BjVgV+lPBhIhSvbv2K79a1H/1iJ8xLDh/mO5avvRbENhbHbUW8CfBYYZIo5XklQuubTF8KUCb9elhVoqOxl+tOaREl24gShFI6QNADXVkMNdW+pn5ba/bbKs2S4iC+eoTkwc1TvLdmPCgY1SeZUe8cTTJYzmDB4s8Ed9wiRSnUB6PlRFIjzmCpniB2A5z6XVGt/JtwjFV6XmqPCVD6Cqrg== 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=K7gGhYf2UcV1mUZKRraRsxKA2sSnZrdGeTZxL+RZS1c=; b=Bx9cjTzsrotHsJSHNr4UtKV+BTULhwGy+seztVaihXcf0MUrkAz1sR+TFWuXO5oOyngfWuOqGIRXusJs3FwxHmbGAmO3Kg5qzr7bXILm0/cBPniYPyGtI8qKyIC3RPdocNlthGmbDS0Vy/gTK99LUoFeN8E4Q/Tm9XfTgNOKTuf5dbE5kkU2OJb8nF28ZpJ3mBBmu1RVNGbbP4wRNSeC4eA3Roar3e5gA6u0XMTKkUtx04rtPZw0jIpXkKMd7yN13spdrOfgzWzoU43qY3JYKEYAZVvidBKzfm1v9kcQcF54oO1muBc9LcGYX9RhFdVZk7mLxms+8Te1KnI99iFGLw== 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=K7gGhYf2UcV1mUZKRraRsxKA2sSnZrdGeTZxL+RZS1c=; b=UvViBfMdn6m2g3nc9cnAdj0nAAF9DYomiz07hHw40ngb+9bq4VSprkIrr4YNEETJVO7GidQk9/qti/IdoXXj4Th15qN2E35M9ksduQa5a1o/he1iMbHwHumsHlg3Ja9PAT3YrXTbE69XP5WaTsY1aSc502hHgOYPM7GfPGEqAM4LZyu/Qz7yF7df1HRImtNAl461ft2kzaX435W5Zdt2RuUxMl/XE9ni2MvVnbbb2d3N5JB06Jx8Ss92XvGufHTuRc7QceFI5hURRkCDvrxRRM+ffg/7o83ZdgdPRHBSgl7FX7AgL+EgdYnsBJNXzzewmHO99FJ5HbqFpp7/Q0q3yQ== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by DU2P250MB0148.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:275::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6838.37; Fri, 6 Oct 2023 02:37:37 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::5e01:aea5:d3a8:cafa]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::5e01:aea5:d3a8:cafa%3]) with mapi id 15.20.6792.026; Fri, 6 Oct 2023 02:37:37 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 6 Oct 2023 04:38:33 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 X-TMN: [BrY2No2/fa1MgyR8cBUMb5CC3rKQZ8Hh] X-ClientProxiedBy: FR4P281CA0119.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:bb::14) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20231006023845.1005290-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|DU2P250MB0148:EE_ X-MS-Office365-Filtering-Correlation-Id: 452906bf-12c0-4652-0bc8-08dbc61533c7 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: A+IgIv/Py6kXW7IyZorzeDtWqmjqiiOaTkegWHgMy3RhZWIZUev3WSyTuGjfLjZhpKOOOlHRv95HJl6k5rR/+2UsGfepVeMGAXXDowgYsOTDLw2/sLf4BugRBlq3HialDFg4veXkotPdWh3viCi7LGoVsBbzMIGE2J17AurCA06u1YaoU6/tozQB6tx+Xiz6cD/MuodQoJGLpOipVy+lcSDasf8OLm/PNyJY9y2ngGIr9WUQCf52kL+2It1yy5l/QvMV9B7yBBaAWwtO8YscNsdH9dXQU1f2JnxEQXs6+y6VmtxrjL0ThHzvIlvZKRbBKYitrct0N8DxydFPuhMBaSZvZwx8RkW76wRu6+qyI+5es1EyL9EodfkCwmYau3Yhyll2k38nqwnyHu8NPVxETPoDyA69+LNCMUBwdhZ1tjdCDREpNaF92fS29BySet1m+sWhE9fp8Nb4DpV3EgsvnEvItMnMCFbEiyj0nMGGM7LQOhdScEXyT7lz3/oStDBiD06fronoJcfWohUqXNYs0LbQ81UYMKcBIMpZkrh/QnlmaBE6r+ndvjKgjIw1+RhwtBAZ7BETq2eP6Scho733sQ+vLmqIYPSmC/oiqnWyf+Mtd2Lnb9qFTvU+FIvm0wQG X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?cMCGkKs/+MnAV8Ho5vKw4ED8177jFQ9G+yXzsQcmlIFM+lmINUvPnkbeu3Wb?= =?us-ascii?Q?AT7NG7RyIyWfKcjH6KpSr5GY9lDrpgSAcSx0gpXBscyGuZO+1lEliMDZJOD9?= =?us-ascii?Q?vJgy9LTf2wubISiZ9hvNjt6ZwVfUFkVW6cmtbcJXdpDDHT+jWzPS6bcOfPJH?= =?us-ascii?Q?c9xBEFMuSZ5nayG56WZi34p31fDFU/Gt8wn75h8pyg1KMoviI25xDPlgADie?= =?us-ascii?Q?kXUwx4Y1lYYnHEKWwDntqaH9SCzZVQrqi2BV4OaTD3R9/0w/BM/m/4to2tC4?= =?us-ascii?Q?R/+fhYYbISeSMuKRbL+FcE7uqSRb8qxJnVJomikuYqliMpJiV8ExsO4lBO8V?= =?us-ascii?Q?BMLf2/Oh+PDYKPMzabRSCBv9hrTYiivqcOHOP2x1XnnwiGJyZoaC7Oz9EME1?= =?us-ascii?Q?ogwwlAMtgDvAjMZKnUTwfbpgjU5zWCottWF+X/QrV/OyqbUiOrFi03bSKMv/?= =?us-ascii?Q?dEc5Dr5ATpc1viwFLpYNPt28VinhlbqyDRjpCdmn8lmjiOgMDZBllobkM12P?= =?us-ascii?Q?Hk80yNBd/6ghKI8chA4FSEQ0wRm0Bo4mrFdEkdnYpKiASlHFQZVJsVTAxraI?= =?us-ascii?Q?4dVRdKE90jnBrKta65OHfcaV2MEvECjhOwCRgrRq3Fhbc/dEnswu/612BeRR?= =?us-ascii?Q?YydsI5aF3RhTQtgFlcHuxRu3LOTSQ43Vc0m9I0skhZKupYBkZiQYeYBhm1Zu?= =?us-ascii?Q?0Hj/aCD3dwWBts3OsbqMzqLEo4XNkTSbzVxzyWN60fwoarHaHQRiFrwqDACy?= =?us-ascii?Q?6iFZ3IOae6mo9UuP/wLAIQ7roFq+yQz9xn1dfPPU1ZVV3+er61mQikcPCXbQ?= =?us-ascii?Q?S1/94+CkEObRUOwTDlkSraT6gApm+fl93dlgQ7eiAB4v/op4/AuxqpUl8x8k?= =?us-ascii?Q?McNdR8F+W8RAKfgscRlUYJLV0kp+QRkyFUssDBVCuC3Ac+7nd7dR01W7AEb8?= =?us-ascii?Q?ya0CZGrheL7Xub6LZCQI+hRiAll33VKmKQkKv5ImThn3ttSFgYtpydi7ugTX?= =?us-ascii?Q?0Cd20EQ4dbhHzdDTeb5isy+VgiXmQQ37PyISO0ZQgEb9euhuCZPSQZsl+fYA?= =?us-ascii?Q?uTtG0rm7PW3rcp0XmlRTEUhd+kNbHhyZLpLT0Wa3qKGAmeUYm1qTvMnQ02xU?= =?us-ascii?Q?nFVP+Q+dWUGJ5qDGVDNfgnp/p8Oc8o+3Yv9ZN7Icr8gf06+h6UGHlyHra1Nd?= =?us-ascii?Q?PokX5mkeMPRNIaOG5dQQIYdmwgGQZYBdYoHiMnNCrKS+/421atT4SnjbHCs2?= =?us-ascii?Q?sNk+A8mspgtQndQDUHzj?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 452906bf-12c0-4652-0bc8-08dbc61533c7 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Oct 2023 02:37:37.0734 (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: DU2P250MB0148 Subject: [FFmpeg-devel] [PATCH 01/13] avcodec/mpegvideo_enc: Fix abort on allocation errors 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: mpegvideo_enc uses a fixed-size array of Pictures; a slot is considered taken if the Picture's AVFrame is set. When an error happens after a slot has been taken, this Picture has typically not been reset and is therefore not usable for future requests. The code aborts when one runs out of slots and this can happen in case of allocation failures. Fix this by always unreferencing a Picture in case of errors. Signed-off-by: Andreas Rheinhardt --- libavcodec/mpegvideo_enc.c | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index 5bf4b06a11..6cd9d89e1b 100644 --- a/libavcodec/mpegvideo_enc.c +++ b/libavcodec/mpegvideo_enc.c @@ -1223,8 +1223,10 @@ static int load_input_picture(MpegEncContext *s, const AVFrame *pic_arg) } } ret = av_frame_copy_props(pic->f, pic_arg); - if (ret < 0) + if (ret < 0) { + ff_mpeg_unref_picture(s->avctx, pic); return ret; + } pic->display_picture_number = display_picture_number; pic->f->pts = pts; // we set this here to avoid modifying pic_arg @@ -1535,8 +1537,10 @@ static int select_input_picture(MpegEncContext *s) } } else if (s->b_frame_strategy == 2) { b_frames = estimate_best_b_count(s); - if (b_frames < 0) + if (b_frames < 0) { + ff_mpeg_unref_picture(s->avctx, s->input_picture[0]); return b_frames; + } } emms_c(); @@ -1591,7 +1595,7 @@ no_output_pic: if ((ret = av_frame_ref(s->new_picture, s->reordered_input_picture[0]->f))) - return ret; + goto fail; if (s->reordered_input_picture[0]->shared || s->avctx->rc_buffer_size) { // input is a shared pix, so we can't modify it -> allocate a new @@ -1604,13 +1608,15 @@ no_output_pic: pic = &s->picture[i]; pic->reference = s->reordered_input_picture[0]->reference; - if (alloc_picture(s, pic, 0) < 0) { - return -1; - } + ret = alloc_picture(s, pic, 0); + if (ret < 0) + goto fail; ret = av_frame_copy_props(pic->f, s->reordered_input_picture[0]->f); - if (ret < 0) - return ret; + if (ret < 0) { + ff_mpeg_unref_picture(s->avctx, pic); + goto fail; + } pic->coded_picture_number = s->reordered_input_picture[0]->coded_picture_number; pic->display_picture_number = s->reordered_input_picture[0]->display_picture_number; @@ -1631,6 +1637,9 @@ no_output_pic: } return 0; +fail: + ff_mpeg_unref_picture(s->avctx, s->reordered_input_picture[0]); + return ret; } static void frame_end(MpegEncContext *s) -- 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".