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 2F310428A5 for ; Tue, 5 Apr 2022 14:30:17 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A7A4D689F59; Tue, 5 Apr 2022 17:30:16 +0300 (EEST) Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-oln040092074096.outbound.protection.outlook.com [40.92.74.96]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8D805689F59 for ; Tue, 5 Apr 2022 17:30:05 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oET9VOSDrqenJ/pg085yCf6UT2kVa84Ta9Ov8DPmnnfoRu5NgWCz7NdC3E45gLc6tidfHlqh18q1h+hvj5o9J29BQO7y3gsh4KSbbeg8h5Giu3QqCAbDmqP0vEM9ebx3OX9HX+Ija62+gVh3FdjrHO8sYvY9G3hr3DUtLY9X1N94D3nYpDBHWgOSAg6y0glNXkzfJN/AS55deTr+Vg/FH2D81na+a9jSlmzZF0cGnjolV5A0mwZZiZeByAFGYbze1HTO9Zs56SE6auSSS1W4tfVrC2fLw2U0rwtrwWnqWKaA3SmEeXrB6xDlpa0iwNp+SDc3wlAUG1jvT4JBk3jf4w== 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=MuoOra8m1Yb2cN4G3tg7pKqXXWpskYjPHkkOIrw8ULM=; b=P+9ZApT2TlVRaR9vPNCHP2acsMbB4Vhy+K0vU9sctnHgwFOg6NWoyjViLCUoP4H5Q9oS3fiFqspyE9v8Ja87zB82DUnxG+Q8ylvu840bUKs9cHnJPeBj9tCbCQip6FRXxG5WWMSEQO+ixcWR4PSFVdV32Srn6emkY15mprdjUXgxDpaHABmyoXJgm9ZIqkf2PvG2LS5ss9OCPNzjjUXxPGQh7++Nui/9jz8cyCkRhcBLvTnVLrLQLkNw3DVZAShqydppCDGhU9DvWFyvN5/mymEAmkqlE7f//YrNs2/PEk2+uhfagL1bkPq4zor67kME3kdSwuYjkJK7+gFIfeCifw== 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=MuoOra8m1Yb2cN4G3tg7pKqXXWpskYjPHkkOIrw8ULM=; b=dqX8HgzOTXRSdjEkacZ4lsIZLXAM2WVui9H8xF8r9JohnFhxeXcZMC3LGe/JLCFzzkS6Fu8yJuAxi1fTlAnN84G/Rmudi+R1daMB8+17QSatwnqrqbixHxbZxxGK4PJ8LkJnjkcIENpvffGx3buB8zQwHjhs0i1SOEa/+LYH1MAVCAelODvnt5Jz4ky6CNe7KpqlXquSRe8lw5mnDjHeQiESMzlv740oxv9oBg9Nsfh7e/4LaUGMAAFQzlZ1LnTlohfhREslohMBV0bA7p7ZQjBFEXQje1HvZZQ1K+/iO2YGQBKDapr9MN0UncSCkyl25sCwn61FlwrMI3dy91yd3w== Received: from AS8PR01MB7944.eurprd01.prod.exchangelabs.com (2603:10a6:20b:373::5) by DB6PR0102MB2696.eurprd01.prod.exchangelabs.com (2603:10a6:6:5::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5123.31; Tue, 5 Apr 2022 14:30:03 +0000 Received: from AS8PR01MB7944.eurprd01.prod.exchangelabs.com ([fe80::6553:a424:79bf:6dc3]) by AS8PR01MB7944.eurprd01.prod.exchangelabs.com ([fe80::6553:a424:79bf:6dc3%3]) with mapi id 15.20.5123.031; Tue, 5 Apr 2022 14:30:03 +0000 Message-ID: Date: Tue, 5 Apr 2022 16:30:01 +0200 Content-Language: en-US To: ffmpeg-devep@ffmpeg.org, ffmpeg-devel@ffmpeg.org References: From: Andreas Rheinhardt In-Reply-To: X-TMN: [LBulTLmlpJpvp7XQymnj6oYq98arnTR9] X-ClientProxiedBy: ZR0P278CA0147.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:41::21) To AS8PR01MB7944.eurprd01.prod.exchangelabs.com (2603:10a6:20b:373::5) X-Microsoft-Original-Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 8c4000f0-dcda-4222-2142-08da1710c5e9 X-MS-TrafficTypeDiagnostic: DB6PR0102MB2696:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: vUtpY8jSth6fi7pto9X4Qe6CIMO/rw75hb/hVZVWwm/2rA020r6bIiXKybeQ/GoYWbbrQoHKyNkCoAs8rKEv+veFEMQNLopqem1+TI3MPPBir62CM+ZRLIRKnfFgoXSAivmxqJpWaxeXRkwcFKDHYE8UTdVh0AoqXLya03e92imcHyGjhyJRM53YcMvCoz7hu/oLS4M6p08ZNHCsWxAGd3dnSgmV14fXMW0tzsqy7TvOqVJVKwrg/UyjR45LHevKq8oY+vIqKIXF6sau0KGwrWofck9wM4FT3GPrV9+R8l7D/aXWrV2QnUUw3N3Cv/9lFu3MyjNaeZaZd3vOwC9iHpSchQlcc1KpbEGcFLGepLmDo2A26cpCd9tawCLaSsnoIVu26YReb1jBFWVz3cKuFRoHqDWPrPrhSQsG7vrQiXWMM3pBxl6iOQgyDqzMP34wilBjxW6s+1LpXwR1cGqFReInht35GkQf6CSGaDp3eE3OocfSoRGbRXtg3OdQuYV2pNOKZOHs02j7SL/3p+Z4ky44/6LUZf3UddSq+9IPp0aLwiLR4aUkm72kn0+r4mfK6IQmqJ5KYeM3AglDg01QRA== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?K3V0cE1qWFlMZDVEcHJGQ3RkUUxDTnkvMzZmM2k4cllCYXZDNWpWdklaV1hY?= =?utf-8?B?TzhESkFNNEc4bnpHclFRalRzWFZ1RlNOeWxVUkw3a245VUVJUU5lQ1kxa1ov?= =?utf-8?B?VWhlR1dBQlBRU3BBWEFXSEZ6MnhlbHQ5UitoTG9VRFJkSXgyWVQ4S05oYWF1?= =?utf-8?B?UVlOQ3duWWE2Yzg1d3JwVnNnbXlCUEt3ZjUyNGNNRzVhRDFqU3RvYWxxQnNI?= =?utf-8?B?alV1c1A1aWZXbzdrUTJrbW5lZ21TTzZYa1JDT05oZTdabVJDVHJidUtXYTli?= =?utf-8?B?YW1OMUh1dFltYlQxSVFKb3pBTE5FR0wyN0JhMDJJU2xVaFRua2tVU1QrZHV6?= =?utf-8?B?YjhtNURXZmFXNTkvU056U3gveGQ3cFRvLzd4M24rZS96WC9SeWlwcVRJOXRq?= =?utf-8?B?KzcvczlYTEYxUXF4OVBzWmtDcWRMV2x3dWdtVlphNkRvaWhUd29iS3E0SWtU?= =?utf-8?B?ZjJzK1QyZC9tWXdIYWY4UjVqZnBTWUZrSnZwUHByaW9uZ3R3THR2N21PK0hy?= =?utf-8?B?L00wWTVtMmQxQmdkQk9ScDZ4dEF1cEh2RXQvTS9lRlFZZitiYjhUZnIwM0xE?= =?utf-8?B?VG93eFA4WFZHT21SeWNldDMydWJZWWRZU3BZbFlNWDNZZE1qUXpVRWF5VU9L?= =?utf-8?B?NlRtUmpWN0c3ZGtBZk12dzc3ZnpUcjY2NzQ5dVIwZ3pYT3h1NGNSS0RnUzlS?= =?utf-8?B?VW9TNXBtR1N6RFpTeDNNVHF6cDgwcjBCTHNJZDlYMTVjanF0V04vMlJGTW5z?= =?utf-8?B?OG9pZUJ4MEQzb25KY2RHSzdFcWZucTQyaEM4cTJCa29tR0VDL2FLaHZOREUz?= =?utf-8?B?U2FFWUJGOWdDTWo2cGM3M2tnbTNqQWdLdHd6Q2Qwd1M4c3FmeTVxZ0Q3Skg4?= =?utf-8?B?dEtuY0lRVVcxM3U1WUcxK1M3SmgwbE91S1VhNnNPSEdhVk5uSEFxd2s4TWhk?= =?utf-8?B?YWIzbFAwdXdHM3UzRjAweDk3ZGZJN0hTRnRKWk10TFQyTzBjUVdlNElVaEZE?= =?utf-8?B?NzJwMFp6VjZqUlZhRlg2N081ZEJEakxEbllZMzBXS0IvRVU1QW0wSExIT1JD?= =?utf-8?B?Q3NoTzBsZ1E5OXVyc2k4dzZWSk5UZVp0RmNnOXI0eFd2eHVMVVR6bXBKeDho?= =?utf-8?B?ejh6NkVCNHV1eTdybkxlSVhkM2FFTHZzNUphQVBiallJSjlsK05saFVFVk9D?= =?utf-8?B?TnVmKzNiL0lIdE0rOXFzKzNaa0RTRmh4Y2JTdmtqelVPbUIxdy9HUHh3Z1pH?= =?utf-8?B?aG1rOGNLd0FaWDF0QzdQQTZTS3ErWk1xQkgraWU0NnJuRHQzeTZYcUVjR0Zx?= =?utf-8?B?Zk16bUFxbHMveHBCMFIxRitHVS9FQWFZTGVKS1ZZdTFYQ2Y3L3JRN045WE1z?= =?utf-8?B?NU1XYks5K0s0MDVtYWgyN1dHYkphNnBETzFUQzVQRjE4NVh2cFUrSEwrd1lt?= =?utf-8?B?WHhyWnZmODZHU3l0cVQ1ZTllbWtFUTR0UEhHa0UrSkx3WXJNaVJBdWNFMTl4?= =?utf-8?B?eUN2dHJ6cmxjTC9xRU1rUElVNmZ6VDRxRHBBNmpxQlFLdU8yVWtac2xnbkIr?= =?utf-8?B?NkhaRE9zbnExZmxId0s3R1UyS3JwOU5DeW1rSTJwRHJrcDN6VDUwRU5qMlBR?= =?utf-8?B?UjNnbVg3ZW5CNUd5Ly9iVVIwVG1GeVU3WStVS3NqaHJMUzBXQlpSVytFczBN?= =?utf-8?B?SEp6MWVQdW9VZ1JQK2swL0k2TkFxN09rbkp5R2EyUmxSOWRhemFzYWpKUDkv?= =?utf-8?B?ejhrYjZIT052VHZKc21QL2grdnlUeHZXWHpkR2RYckFFNElhZ05yVndjSVI0?= =?utf-8?B?K09KUzNDQVY3b3lsNnhMV2xtbFM0VmNrUC9jcTZHaXI3U2FSNGRkbEwrc0tK?= =?utf-8?B?azRHSGl4NFdBNXhtcGpLdlJaU0VVUWpmamFZS3RyWkx3Y09rVldvaENxNnJl?= =?utf-8?Q?JhwByESN+b/hJcDgSzWMaFg5rIIHo1pf?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8c4000f0-dcda-4222-2142-08da1710c5e9 X-MS-Exchange-CrossTenant-AuthSource: AS8PR01MB7944.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Apr 2022 14:30:03.5696 (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: DB6PR0102MB2696 Subject: Re: [FFmpeg-devel] [PATCH] avformat/mpegenc: Fix ever growing FIFO and infinite loop 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: Nicolas Gaullier 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: Andreas Rheinhardt: > Since the switch to the new FIFO API in commit > ea511196a6c85eb433e10cdbecb0b2c722faf20d, the FIFO is always > grown by the amount of data intended to be written into it > even in case the FIFO has enough free space. Fix this by > only growing the FIFO if needed and then only by the amount that is > actually needed. > > The allocation errors that resulted from this uncovered another bug: > The context is left in an inconsistent state in case the FIFO can't > be grown, because the FIFO does not contain as much data as the sizes > contained in the PacketDesc list claim. This led to an infinite loop > in output_packet() (called from mpeg_mux_end()). > > Fix this by growing the FIFO before adding a new PacketDesc element, > thereby preventing the context from becoming inconsistent. > > Reported-by: Nicolas Gaullier > Signed-off-by: Andreas Rheinhardt > --- > libavformat/mpegenc.c | 13 +++++++++---- > 1 file changed, 9 insertions(+), 4 deletions(-) > > diff --git a/libavformat/mpegenc.c b/libavformat/mpegenc.c > index cc47a43288..62692bfcd1 100644 > --- a/libavformat/mpegenc.c > +++ b/libavformat/mpegenc.c > @@ -1152,6 +1152,7 @@ static int mpeg_mux_write_packet(AVFormatContext *ctx, AVPacket *pkt) > int64_t pts, dts; > PacketDesc *pkt_desc; > int preload, ret; > + size_t can_write; > const int is_iframe = st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO && > (pkt->flags & AV_PKT_FLAG_KEY); > > @@ -1192,6 +1193,14 @@ static int mpeg_mux_write_packet(AVFormatContext *ctx, AVPacket *pkt) > size -= 3; > } > > + /* Enlarge the FIFO before adding a new PacketDesc > + * in order to avoid inconsistencies on failure. */ > + can_write = av_fifo_can_write(stream->fifo); > + if (can_write < size) { > + ret = av_fifo_grow2(stream->fifo, size - can_write); > + if (ret < 0) > + return ret; > + } > pkt_desc = av_mallocz(sizeof(PacketDesc)); > if (!pkt_desc) > return AVERROR(ENOMEM); > @@ -1207,10 +1216,6 @@ static int mpeg_mux_write_packet(AVFormatContext *ctx, AVPacket *pkt) > pkt_desc->unwritten_size = > pkt_desc->size = size; > > - ret = av_fifo_grow2(stream->fifo, size); > - if (ret < 0) > - return ret; > - > if (s->is_dvd) { > // min VOBU length 0.4 seconds (mpucoder) > if (is_iframe && Will apply this tonight unless there are objections. - Andreas _______________________________________________ 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".