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 A2A8E45A1F for ; Wed, 9 Aug 2023 08:59:39 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8BC0C68C2E0; Wed, 9 Aug 2023 11:59:35 +0300 (EEST) Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03olkn2079.outbound.protection.outlook.com [40.92.59.79]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5927168BB5A for ; Wed, 9 Aug 2023 11:59:29 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=etEgH1BfXjqW4niZF7//I29ODlbdaBIVbudSxzAwWtGm/vvG5mhW+eRiqOIlxFdBCgcn2ylXdTdsJefuPwDy5XQ/edL0XbwcVxCoe2+gjuvzWmaQOO9c1zVPCHFwBIouUKjzPjLVmI4vrBjd36EdiCCxlPbIRh29pHFHdoWB2PDB+xEMv6Kwr1lBXijDNN4+sFItk1vntpc9WWP7Mt7fOMqFO1a7Xqpi7mqLPctTgMRVBWycvhpsVEH3E6C+ICTxducJCyrOyBaMCfSA4HHc3Q1Mx1LMMCEwkignAqELEtsZKE6eHM5x8DYNOUyWDNkv4n2g19LoyQzjx3w8JEzD/w== 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=6IoVHskRWiZLESQP0Ev8961gTeBT7R403BkKLTf/tj0=; b=QyG0mw9M70HPsIMR/LwY2797GYoSPDTfjBzbzhnyrOdfDSDVwURcQhJTsp8DdRUPy1aISpH4CXUGSgrqVOQqD5Havo8g5aDv5I4DPUtYamdY2hyPpyaPIlsyKbDH+f0fEFIRcvnX/jKnt4MBQHI9rf8rYBl7RduXOIAzRerHZyZYUy9KYZ39Xd4BUyDwjIZXk7Y5LV7kXHxSLOKElPpsX+zwKB2lVTSScb4Qs9OPMoDmXuF77FMOavXmOfoAbKjNYxDxfVQHX6Ct/oqITLLM4RR86ry9XM+oGAldNc0jf08wuDoPaHn4+PT21beDKrc5Elrm0Y5oTalUa7aqfB++Pg== 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=6IoVHskRWiZLESQP0Ev8961gTeBT7R403BkKLTf/tj0=; b=BkVRF355s1IrefJj9Qtp4jbDGR4cQ2ZQHNQ9dBbWR7Hb7/MjdHpK/Ol6UqSoXdDZsvOKfQ044biVh3MKtiWIJntEmE6dRRssHxXDZigu3gijUp5CL4Kyz2EinO+xrBGHTOyyZWo1zoy6AhSe0gdhLGYMJK+AU1gFAkK0KxztyaatsyFIeZEVji3FkKOF3mZmrXKSGajf0jLlVvmI5EdWoOjCXpds0pYZ26NpupO2bs8ECTxT3AyrUEdrxkhatb3Iw0yASOKMh/3ImBIbHaTX7VK1nC3k81UWVmVgjBbb49dTpGVqpRK6k9khgPw9Z8UuTSiwQ/sA6FdLD0wUrXVbSQ== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by AM8P250MB0197.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:324::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6652.28; Wed, 9 Aug 2023 08:59:27 +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.6652.021; Wed, 9 Aug 2023 08:59:27 +0000 Message-ID: Date: Wed, 9 Aug 2023 11:00:40 +0200 To: ffmpeg-devel@ffmpeg.org References: Content-Language: en-US From: Andreas Rheinhardt In-Reply-To: X-TMN: [YDIgqsF34XgoD3amGSPh1zFkfDKPXv3O7dHGiyAU+P8=] X-ClientProxiedBy: FR3P281CA0087.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1f::9) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <7a26cdb6-4d47-bad1-d0bc-88575eaf8a6e@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|AM8P250MB0197:EE_ X-MS-Office365-Filtering-Correlation-Id: 161712e9-99cc-4406-2625-08db98b6ef5d X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ndWRgD6WrLTiDEOkOWHYvDuYRU5K2Ck8QmIdhC3lO8NcOUQd2lHPWdMrzL0LwGoUtZYkMwhOytk813kWVmflwijd1ub7X6jPi3eLYbJpzO5fjHYXk742dTOcZKkBf1oQDbC3Oe7dssHjPQrQX/1prCkRaOMBUXn+fQD4ikipU1nWOc/26fvvWFgsFBsSLepxHr5dQ6jkKG/k+8UlSED5FwMgXB0koDUi5ZLAMFAUslLbdzWnbtwftK/OuMZPcjRgFZ/8QZEBBvDLR9W7Ud/BdXGq59buyNkOHGf5Vrjra1QD1cBzVx9sINPA9JQBm1M1VfWW3DrdHBFFJLiyd4DOrcInsbqCPHeiG/tHCLJqsd73f95R/n2idvxx2pFj70FOT2PjnJEQGtcvabZB6lkHlppZqAHC2Ne9lcgEi//XP4AApwL71mFDNIsC1AqkN7Y4oJCBnU4uB6wGvSFOdIrV6uKIb2Ld7vJEram6ERpt/q08TOGfjS6BU1O6CTR2v80P5Z1d9zQ1+L4QeLofXnU0gDXX3n1MlSpflcPTmyLJJJ0Ge111BnQQVops8DrTSAGG X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?bStFc3VhNXFLZkQ1SFUzOW4rRjRUK216b0hZSnRJbFhkaTV0a0puTXZkQ2da?= =?utf-8?B?TE5ZZzRFaTFIVUM4WDYwVXVlQk9nMWEvbm1wU2FDWG9EeGM3TjZlMCs1Nkdr?= =?utf-8?B?NHUra2g0SkMxdzltSTNvVXh4YlROUEd0NkpBRjVOSmpJd2Q3TGVSTnlQbVQy?= =?utf-8?B?ME9JencveFdjemMwd09HbHpXbnV0Y1hZOW81SzFiWDJjTFdqRGQwWXd4amtE?= =?utf-8?B?VnEvYjVvSmlSRmlVS3RlYzdBeThva2VYUmlvdUlucnhlaHpMMVNPVVY4dWJK?= =?utf-8?B?Z21PN3IzbnZpMWluSTAyVVAzWExQVzVQbTdrOW8yRG9RWnZOallpMTEvY0tE?= =?utf-8?B?ZVN3M3N4T3VBa0RieXhUYVZEcmRHOTMzSDVzYVV3Nk9CQTZKZUNIRHUwVlln?= =?utf-8?B?b2xvMFdEQ3RwdUpGUTFaRzVYSDc5V3Q2Zlk0MGc3VVdsS3YxSTlIUXowZTV0?= =?utf-8?B?czR3bERId096a29oeXNTb1JNTlBWS1A0Y3VqTGpmR1RKSlUwWGN3d3ZIMEVs?= =?utf-8?B?SW9DTlUrTVQ3NngrcXRVR2piWnNmbzNxd0Znczk0MHhSQ01SU2F1c3BidHlI?= =?utf-8?B?NWZJWGd2R3RHaS91ZzM5b1JxMHlJb1VoTUgyNmZlSG9EblpEZkxXUXZKZ2JE?= =?utf-8?B?MzhzUFlNZHkzdHYrdU1RRldjd0QwL1JKazQyNS9XWGFiU3RlUUY4b2d4eUt5?= =?utf-8?B?bUdlNUhETEVRelBNbzlvL05Cci9MTlhKOC96QzN0dDhzRTY3WW9MWHRCVFgx?= =?utf-8?B?WXpVbmZMRmVxTGEwbmRBKzQrZWgvaWxNVVh2d0IwL2FzTmN1djAvamZDdlNP?= =?utf-8?B?anpSWW9KQ0RCMUhOVC9tYkRwWFBQcDU5RkpjcWIzdDVpMU5qWStHQlVFdkRJ?= =?utf-8?B?RlJuQWVHbCtPZnYyck1wMlFZc2VzKzdtRm1EaWtpdXBqeEJJUkdoS1ZLUzdh?= =?utf-8?B?enVJcE81eVNBeFk1TllNdGVmQWM1cFJnbjB3bUswWTRQWE9qdjliZ2NzbmxF?= =?utf-8?B?ZFZ1WFRyclhLQ1BaSXhLOVpTeU9JUFMvU29NeVZzTmNOLy9nRmRYcnYxVStJ?= =?utf-8?B?STh0T1FjRTIydi9wdXlBTkJqNk5TWGlhZTFoeEhuSEZHUDZ4QXdYWTBXZVdi?= =?utf-8?B?MzI1Y0R5Y25QUlh0RGJ6VzM3eWh2VDh5WTd3Y0xIdWdVMnZRLzJCTDBPV1NC?= =?utf-8?B?YUpiSGZWeUY2bjlzZlA0dVlFUEZUa2xYY0ZaNzcvV014Y01mdkJQZENXSGVE?= =?utf-8?B?SlJGaFVkVGsxTExxRUFFcXkrL3ZvYkM0UzFIMDAyb2c0d1dxbVVtUE9aaE05?= =?utf-8?B?dHBPcVE0R2trRFgwaHdLWDlBWmR2Z2lsLy90S240ZkJTMHlUMXA1blQ5MUpz?= =?utf-8?B?NkF1dlNCSjlydDdpdytqeEREQ0Frdi8wZmVJcXZxekdFc3BuaHpPUHQxUEtq?= =?utf-8?B?MUFGZkx5a3BIQXVGVEpOeUlHQjkrbUVaTVA1RThBUVlTK1ZwT2piNTY4b3Nq?= =?utf-8?B?Yzh2cStOYWFIWkhmeUwra2E1bTBMdGZpa1FPTGRRL0wyWW15TUNnUFR2M1Vl?= =?utf-8?B?NWdaLzdXekY0eXd5SkEzREEwVzhMNDJidzhFWUdQUGxXNHZoRldhYXVaZkV3?= =?utf-8?B?a2M3bXVHUG9ZNklUV21UTTlaTE1NVDJXdTZHU0ROeS9pZ05UQ05hdTdiVzdn?= =?utf-8?Q?p7RMUz5Gh9nxLlPbTgM8?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 161712e9-99cc-4406-2625-08db98b6ef5d X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Aug 2023 08:59:27.3287 (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: AM8P250MB0197 Subject: Re: [FFmpeg-devel] [PATCH 2/7] avutil/bprint: Allow size == 0 in av_bprint_init_for_buffer() 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: Andreas Rheinhardt: > The AVBPrint API guarantees that the string buffer is always > zero-terminated; in order to honour this guarantee, there > obviously must be a string buffer at all and it must have > a size >= 1. Therefore av_bprint_init_for_buffer() treats > passing a NULL buffer or size == 0 as invalid data that > leads to undefined behaviour, namely NPD in case NULL is provided > or a write to a buffer of size 0 in case size == 0. > > But it would be easy to support this, namely by using the internal > buffer with AV_BPRINT_SIZE_COUNT_ONLY in case size == 0. > > There is a reason to allow this: Several functions like > av_channel_(description|name) are actually wrappers > around corresponding AVBPrint functions. They accept user > provided buffers and are supposed to return the required > size of the buffer, which would allow the user to call > it once to get the required buffer size and call it once > more after having allocated the buffer. > If av_bprint_init_for_buffer() treats size == 0 as invalid, > all these users would need to check for this themselves > and basically add the same codeblock that this patch > adds to av_bprint_init_for_buffer(). > > This change is in line with e.g. snprintf() which also allows > the pointer to be NULL in case size is zero. > > This fixes Coverity issues #1503074, #1503076 and #1503082; > all of these issues are about providing NULL to the channel-layout > functions that are wrappers around AVBPrint versions. > > Signed-off-by: Andreas Rheinhardt > --- > Missing lavu minor version bump. > > libavutil/bprint.c | 5 +++++ > libavutil/bprint.h | 3 +++ > 2 files changed, 8 insertions(+) > > diff --git a/libavutil/bprint.c b/libavutil/bprint.c > index 23998a8b02..4e9571715c 100644 > --- a/libavutil/bprint.c > +++ b/libavutil/bprint.c > @@ -84,6 +84,11 @@ void av_bprint_init(AVBPrint *buf, unsigned size_init, unsigned size_max) > > void av_bprint_init_for_buffer(AVBPrint *buf, char *buffer, unsigned size) > { > + if (size == 0) { > + av_bprint_init(buf, 0, AV_BPRINT_SIZE_COUNT_ONLY); > + return; > + } > + > buf->str = buffer; > buf->len = 0; > buf->size = size; > diff --git a/libavutil/bprint.h b/libavutil/bprint.h > index f27d30f723..8559745478 100644 > --- a/libavutil/bprint.h > +++ b/libavutil/bprint.h > @@ -144,6 +144,9 @@ void av_bprint_init(AVBPrint *buf, unsigned size_init, unsigned size_max); > * Init a print buffer using a pre-existing buffer. > * > * The buffer will not be reallocated. > + * In case size equals zero, the AVBPrint will be initialized to use > + * the internal buffer as if using AV_BPRINT_SIZE_COUNT_ONLY with > + * av_bprint_init(). > * > * @param buf buffer structure to init > * @param buffer byte buffer to use for the string data Ping for this patch (and the rest of this patchset). Will apply patches 2-5 in two days unless there are objections; will apply the rest today. - 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".