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 565FD477D1 for ; Thu, 21 Mar 2024 16:23:07 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3CB5168D562; Thu, 21 Mar 2024 18:23:05 +0200 (EET) Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03olkn2108.outbound.protection.outlook.com [40.92.59.108]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B2CA768D4AD for ; Thu, 21 Mar 2024 18:22:57 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=A0rKJO1OU4P8kavFWbC/DZ6QiEbhq/Ea87rrBLrjqnAER/TGaFtvePNlRbFZT6iW+BCtct6n6EqPPbqWBWr5IAe8XDOT7IYiTWK44bdLOEh1z7i9mfdPXdM7Om2xRWdIUofqSBUBhONpdoCbqXG0S3RUsPdIS9OH7F02gD4xazIDyIhMbgNXKMKjbVgJSNZ4XZ3t63n61zDp34WQHxtyLx5AadUtnVfmW3KEZ/wI+sxDdl6is12j7qk8bPPMsYOoRwKjHryDvPQ45ajtAnlh9lB7WE83AtFhRbiR5c12VAu6cUa9i1K4WK+sPIj/giB4EVO6vxWR1c9ZwHROXLOUFA== 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=VvsfVdfeyIyc3KSN4M5G9xCBde9aty/C/EUemFeGKiA=; b=GG/G1uXuAyjh5i1kUrb3xg+nWcfcfbWavP3qilfEK01SQ/x97dB5mETEd/RYnPPgk3uQXVzycVfBN1E3BhnwpnoiNI72YZ6Y4SMQHVxFF/J1C9yld6b36bsT7w56cavJKdSlhHGBPHO3+tgYM2dRlGSpDRPuKVfST7++zSyGMjoVrPNdZnwBdRIOaBJ5F06OHn9kgeor3ttKuuzpahmlg3cms6jLXLY8fdtHc74zUG3Yv6Pl2NAEo/m5CWl4T9+6MEAXAW/q/157VptyY3ZSK+YhsZj8Jsh3fKA+4+3Qg/tK149Sisb7kKh2LXnnlu30/ohS1DBa+jHU+gyxY2Rfzg== 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=VvsfVdfeyIyc3KSN4M5G9xCBde9aty/C/EUemFeGKiA=; b=YXlv1wHi+Da5WmlQRWYKMjrmSTmfntm/vCBqylkprpOkycQv4Pp8kC2xuGVhyjbhUcli0W2SsjnDzfLtvk+43sVmKhqPiZuc14TPdUYvKHH9IRDAptpQx/KLCpY8BHZAoyK0jvm2APUWQYsjeLJXPA/oYxOsFOqG//i0k81H/ES3fN3iciFbKCbyPAqU32/oMEVeNloPDmi4JtlswhKNUtFE8LnGd23Nsj/2HNFmDivyAK7IZcTOliK4jJ43TVZIk6twsFtefiyi0g8UrlYZK21BemSkS7JNGfR9eKYh8h9ld2gxXP03lniTvSCejNFuFlXWtInfxheGeVaMygNpKA== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AM8P250MB0182.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:325::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.23; Thu, 21 Mar 2024 16:22:55 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4a3b:cf76:cddc:c68d]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4a3b:cf76:cddc:c68d%4]) with mapi id 15.20.7386.025; Thu, 21 Mar 2024 16:22:55 +0000 Message-ID: Date: Thu, 21 Mar 2024 17:22:52 +0100 User-Agent: Mozilla Thunderbird Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20240321035207.3849560-1-marth64@proxyid.net> <20240321035207.3849560-2-marth64@proxyid.net> From: Andreas Rheinhardt In-Reply-To: <20240321035207.3849560-2-marth64@proxyid.net> X-TMN: [HQmkElQdWFAyXZeFEC3ZA2KfwufN1kFfuYbLPQlsqoc=] X-ClientProxiedBy: ZRAP278CA0015.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:10::25) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AM8P250MB0182:EE_ X-MS-Office365-Filtering-Correlation-Id: 7aa53f7e-22ff-49b0-07c1-08dc49c329cd X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: FEl/z+pQwkzAB1rXpq75QK+IptOsxVGCinnqK1vH9wwo7c5nGuVXdB45X6NPVLsrMMX5LoVoyAFL4d3tC+fjepjGpwNg6U4q4sOzXHUxfBwx7ENTkjC6noqFLJ6vVQ5rXQ7WXVT9mLWm2ICnMVsMG8yMNYUpYOEMvBAHHf3uvoXdIE5G0uzOPwwHBXnM49x3pIpT9PDGhxTkSm14a42uMFJIB9mbK20bMIaM3hacIeZ9wZC9aFJExdeP/u6kRFlsTeNiD5tLgXxwQrmo5UVhyJh5sTS20GN+/3VN3rU2pwmxd9JMr7l4qd26LfplPHfE6JrnyAoGWJE0A3/lpXb4/Xa5OfHQ++jMnvERSDaCc3/ZhEoWvev+fYXlvGHFamnz36ucfrGWf534C/UkCuDECAggZVo+nZ/zwc5j7P73IRZ4Vpye+FkYYgW3trZdck1kRH4JesqQyQ4PKo6/sb/E+nVBmDNyBhm3CGMlVsO+/E03mU3ysEHNcqqZid8hMd29fwJ20s4uzzC0YoU3+utGddxYS0Nb/T3TGIpMGeL1JICMuQldAudmNe6xLhZTnH5n X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?RDVFL3k3bFpkR0doNGRHdFFIYkszVStDMGxHbDdESVU4cHZnQmI1REJ3d2pB?= =?utf-8?B?MllUM240dElVRDA2dFVjeHVKT3RlVHczalNoSGZLeDNicGUrUDBWNWZCb0F0?= =?utf-8?B?RTJ1WE50VlhaK0hlaFZUaDE2SlRNaTVveEZLYy9MSXo2czVXTUtKaWhNUXZD?= =?utf-8?B?bEFtZ2t0em5KZHdhcEo1MTIveGRORGxXQ2dQSGxGeFRINVZQQkdqajBQdy9i?= =?utf-8?B?UzNDNDhMRXkxZ1FQa0d3cFpKUUxMTEROZlVCY2xPOXVUWFhOQmFQRDhwcW4w?= =?utf-8?B?eUQ2QlNoRHR1OUlOU3dtdEcvK2FTZUt2ZlhnTjZ1V2laMUkwNUEvYjY0TWtJ?= =?utf-8?B?WXhsbFlCS2pzd1hvay9wSncxeFdUblM3c0hoa2FZd2c3alBONnBzVm03Ui9S?= =?utf-8?B?Rmo2R01aWlpvaGE3dHJPSUdWVC9BbG1sbHplTE9DbWYwdGRvbTdTM2k2S0hD?= =?utf-8?B?ZkN0RWZoUWNzMmgzQ3hUUTVyVGFBTUdBb2JxNTZyUmRDM2ZvZlIwUnk0ZVAy?= =?utf-8?B?NnB1N0pLczZSMUxPZmlJZEtZb2Y5MnBQVFBIcXVSckE2L1JhZ3l2N2Y2MXkw?= =?utf-8?B?T2hwaFhZblN1WDA5VlQ2UHo5REhLck5xOU00NlQwR043RnZ1L1lxODBqanI4?= =?utf-8?B?OXp5Q2d5T1dXLytEQVA3cGZJbXJDengzMzBLd0NyZVlpUE9NaldCRnFwV2sw?= =?utf-8?B?VU5WaUJpd0lhNFJ0R1EzZlVIditiT2w1a1VrcDQwdDhRb1g0YjR5b1VtalB2?= =?utf-8?B?T25HNTlwWGl6d20yVXNNVWFUc3BXVGZTejBVZEo2bXcyVDlUdDU4c1Z6amNO?= =?utf-8?B?NVdtRm5iTVNUa3dvR0w1QUFibFBjNmgrZkJoY1lIZnRzS0o4bVRtZDlBR0M1?= =?utf-8?B?bU9ic3VicXlhZlJlNm5BZVYrR1l3SCtYMUl5K3hjNUJsd0FpY2xWajF5aTVM?= =?utf-8?B?K010Vi9rbGRHcklpRHJiNUwwU1BPMkVOQk9zNlZzQnc0cWFkY1VUSXRLdkM1?= =?utf-8?B?aE80K0NWbFhPZE85Mm1rSGwrVTB1N1BsdTNOY0tadFZkK2R1a2dzdVpYZFdC?= =?utf-8?B?a3BBUXZMY3ptZFRFQmgraGZ6TUhmWmxpOW1WRnI2ZUFtSXdtQ0cvc3lXbGJz?= =?utf-8?B?MDEvaE5YSzc4SWpEdlUybkRMOTQwbHdJUjdXZ2xZd2NOZEFsbHRMYkZkdjJH?= =?utf-8?B?MDZIcEtXdU5TSWhWY0E2cG5iaUxqZGdONkRpQTZzdDdzamtUWEFNNGdLbXJl?= =?utf-8?B?QTU4SjFFNmF3MkkybW5vT05zajBHTSs3QSt2OXhvanNKZWJsWjNRV2VoSEhY?= =?utf-8?B?eXVBRFNPa3Fha3UxOUo0REVHdkJBS1gvbktDMHoyY3ZGSXRYNWxOUGlKTENq?= =?utf-8?B?dHhNdnZmM0s5SkwzdG1zQ2ZlNlBpbVJ0dldoVndVUEVmdDFoN3pTTDlOejFM?= =?utf-8?B?bDVXcFpOQTZnRGFKa2UyZHJhL0ZvaXNZNmlYQjhWYmNWOXlhOXAyeTZkU0E5?= =?utf-8?B?M0F6WmtLc1plM1hZaWhVV3c5MVpuK2RlWTJxd01YbU9BbE1xc21JMExaYUJP?= =?utf-8?B?cFl3VDFKZUtwSFZmYll4QlJTaEJobnhGRlQ3YlpwS2JnT3dKcEhYWmhnUk1M?= =?utf-8?B?dThIQXhKQW5aN1FGV2JReCtzRTNuUHVqNHFKQnBWSU9HV21IcjN6Q0ZIYkV4?= =?utf-8?B?bHRwRG5obnRrQ0hxNWJsajNwdzUvZmp3K1FNM05PMloveGhRZVhreWV3PT0=?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7aa53f7e-22ff-49b0-07c1-08dc49c329cd X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Mar 2024 16:22:55.2163 (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: AM8P250MB0182 Subject: Re: [FFmpeg-devel] [PATCH v7 1/5] avformat/subtitles: extend ff_subtitles_queue_insert() to support empty events 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 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: Marth64: > If ff_subtitles_queue_insert() were to given a NULL buffer > with 0 length, it would still attempt to grow the packet > or memcpy depending on if merge option is enabled. > > In this commit, consider a NULL buffer with 0 length as > an empty event and do not attempt to modify the packet. > This way, if a subtitle demuxer happens to pass an empty > cue or wants to use av_get_packet() to read bytes, there > are no unnecessary operations on the packet after it is > allocated. > > Signed-off-by: Marth64 > --- > libavformat/subtitles.c | 4 ++++ > libavformat/subtitles.h | 2 +- > 2 files changed, 5 insertions(+), 1 deletion(-) > > diff --git a/libavformat/subtitles.c b/libavformat/subtitles.c > index 3413763c7b..38d2ffb8a9 100644 > --- a/libavformat/subtitles.c > +++ b/libavformat/subtitles.c > @@ -117,6 +117,8 @@ AVPacket *ff_subtitles_queue_insert(FFDemuxSubtitlesQueue *q, > int old_len; > sub = q->subs[q->nb_subs - 1]; > old_len = sub->size; > + if (event == NULL && len == 0) > + return sub; Checks for NULL are typically written as !event. I'd prefer if (!event) { av_assert1(len == 0); return sub; } as this also makes clear that !event with len > 0 must not happen and also avoids one runtime check for ordinary users (with assert-level 0). > if (av_grow_packet(sub, len) < 0) > return NULL; > memcpy(sub->data + old_len, event, len); > @@ -140,6 +142,8 @@ AVPacket *ff_subtitles_queue_insert(FFDemuxSubtitlesQueue *q, > subs[q->nb_subs++] = sub; > sub->flags |= AV_PKT_FLAG_KEY; > sub->pts = sub->dts = 0; > + if (event == NULL && len == 0) > + return sub; > memcpy(sub->data, event, len); This will allocate sub->data to a buffer of size AV_INPUT_BUFFER_PADDING_SIZE and usable size of zero. This is not what is intended: You should not allocate anything at all, i.e. skip av_new_packet(). This small buffer (together with the AVBuffer and AVBufferRef allocated for it) will leak with your current patch 2. > } > return sub; > diff --git a/libavformat/subtitles.h b/libavformat/subtitles.h > index 88665663c5..ba162fa503 100644 > --- a/libavformat/subtitles.h > +++ b/libavformat/subtitles.h > @@ -112,7 +112,7 @@ typedef struct { > /** > * Insert a new subtitle event. > * > - * @param event the subtitle line, may not be zero terminated > + * @param event the subtitle line (not zero terminated), or NULL on empty event on not yet available event > * @param len the length of the event (in strlen() sense, so without '\0') > * @param merge set to 1 if the current event should be concatenated with the > * previous one instead of adding a new entry, 0 otherwise _______________________________________________ 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".