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 BE4AC48D3F for ; Mon, 25 Mar 2024 12:57:03 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7816868D467; Mon, 25 Mar 2024 14:57:00 +0200 (EET) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01olkn2087.outbound.protection.outlook.com [40.92.66.87]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 483AF68D41B for ; Mon, 25 Mar 2024 14:56:54 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VIs5FH+5ycuEyRDcw8NxdVJ4wM46y9IYIK6/xpLQBxUjQCN5+ALXE7KQJ9HOe7yB9E54why2o7nZnUlb+GuWPHbpMw4lUVeXdKmw52XDiXWtdphcve5OZVc00iY9cRHuB3AnazvBoFD1eywYyF4C10Z5NGq0KPGIDKGjBLwvyWuyN69C67Y7Gz71Vn4n1nZaYrSW3UdsqgNA6WhQsWVbleruO87cElYEDJDmemh4ktfcLDuY67y742Aa6gUQoE/IATMmDgG4INUT7kkIK0HVxzBMU6A89GhX5tbUHX/4V383/WBtIjxmn/mleAFQzb7BqwZyOw2O/KCG5goL0X6nNQ== 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=GeypbCCNgS/oM6h45FMDg3wZZI+b+mxFbrrbEH7R0Is=; b=oI6xaKF+8e0udJ+Plg/GgqVs7SY73T3nBeZQpthjlrk30yrboBC1zR886WNo3lWi4Cu4C2xRom8mxN2FuBoXhyImoEpBo37Oly3jlhg7eAv60Chy/yMBz6i7foG1edYFBvG0e9XHe6JZIF+yw7CT3jbvEcNoFSjh3PJANX2Eoyxt7mLQG9LkDIrXDXvb7a84M/iP8fRCVuZh4MVlF9pObabcLjW4DBJEeEdrW7imVXI8Fu5gljgTYVuEFuBkPQvTO+7sVCRTvy/9IXKp+Ytq0Fy4JnTYIvPkAQuzBc10bVTCF7Q32Ot2YypqSRAPhoDvvhfcmkbqepIV8ybjN75XJQ== 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=GeypbCCNgS/oM6h45FMDg3wZZI+b+mxFbrrbEH7R0Is=; b=QkeK9etIn4ANQwNZ3swKHvItE/K4KeeOJ71Bww/kl4j/7yyWwJM6bHfCrD+iUlaWyVloOhfnZ0YO/u86U3Zu1tVNsuqIMqsYLFVzIWGG5Xpm515BevUpjtO9vnAVGPbTksURB6CDAMdvCPLsnVgK/sEmCT+Kb8fyImmCE26ZVf/7KGMup4qN1sPUzKZKoeRLS4y9F0LxNslZzkoH+aoO217JcmbaNEEye56OZjlt3yYVYZiJlqiQSs/RWr1SY7ht6ag/782U0sprQoexxp2J4dbLzB+RIEftD81/PQP5b/DUuw9XwHVj3dl+pFl1FqLMaYAfXK3kAP8g0pI7heUIRg== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AM8P250MB0157.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:320::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.31; Mon, 25 Mar 2024 12:56:51 +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.7409.028; Mon, 25 Mar 2024 12:56:51 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 25 Mar 2024 13:56:43 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [KAOHrhWUfz9RLebBbGYASdDrr/BuiJVRspizCHr/VeE=] X-ClientProxiedBy: ZR0P278CA0181.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:44::14) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20240325125643.2510112-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AM8P250MB0157:EE_ X-MS-Office365-Filtering-Correlation-Id: 3b0faaf7-a16d-4743-a915-08dc4ccb09c9 X-MS-Exchange-SLBlob-MailProps: Cq7lScuPrnqkjmXb1vlddM5aSa/Epk3ABh79suC/+CPRkQhSsxGNl1Ufgowa3Tn+Wf0hhD0F2zVbJGbz6B3CLuMKkN4BgBbl7dL73MOnIl22F5LOA5PWCaeORl1fWDbwWy+unobzAoS1sB1m6wa8j0LVvV2pgPjNTNMqj4lwdDOH/oRCMLzfpVd0N0qqnXg/1AqTnr7aYi7GMzmvho6zoXrgcbIYjBqrlWaj/VccNQabyLb0lMaZweqObsH0olsjEl89jmIC/rqtDe/N/Rao6RsmJEeZQiydgx9hwBXyRrvEtxsmSFVpFSP+HBQVrFGfpaUCQuV7tyetR4NlASibe3OYt7tkKnDw8JHazz2jB28V7rw42ZpT3FZ0da9neN1ioQyGz6Lyw+ZUi0CM6cQ3i+pSkr+Nvfd0WV1kgrUS5fC3hMhlSvJJV83jn6A8WDAmzHTpfjyQsLKSzJar1Hvd848V7cGL3An8ztR0GXl7kpRCP1oCyLxTFB4vDzY9iIHl+eUDE0+cG7Q1xnZuLPiZ1Q4ebNi+5NDVSNlmtdzOKlc7NqNVoWs25GCXlIXvVRdV+HEtW5ZSS06hpnK3ivxejoJ6tpLNmAj1/ovfdOdgGl43dYRGz/axUSU4Qd/vLQBD25GvNVzjK5kydWaumDBMsl4VmXeveSBVkdQ6QSEISpsjVEHSP17RYCxVhNLAVHt84kehONAoZxu93EG1QLDsRjJOR9H3ADDqiZI1KPsKOXE4k9NwDrY8wSAf3ECvM9wS7S3FpxaCo00= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: jJJATUwXtMmnma1+0h1Kc6LTdxYI4lw7XFXoSHnWGu0iDmbSs14ggmBMT97yuTaHcMoD/gpy3BML/XG9qZOhPy9eqh70aOD26y4OFwiIE2mq7XdbSBwBr6fYdMViqR6DhKJuUGmUBGgL0l2DfV4fThP4HJPkHMb1eSFs+FugFymisd7rz9yE5L3mgdxej+sjvk/unh0wtAPMpRn6CeQzxBLNQ6DQB5WAIGgaRH22VBZPhMKRYxKFET5ZGsesmQWtodM4v3gBGwUd3502of3nKLKhVmYjflmo1Brfy0k6J1rktNh1zZLjR03pvWh5EuycGApTpc8QCN3+7fU6Ef5kqlv/FyFCCuLiQBHeGRXBJ+yi1cEtFkMVE2sbriJFo0iNnAVNey93UtaLbACuM8bpTmiTp8Qn0SE8l3WadfGm4HuPaAUza/CpvRaycYA93+fsBfnF0HWc+qGAwb+zYHkHbBlWiyFvCE70Jcy3FloS/ENGN8BY0XIZPRyPeZGimqIbaJru0D0YSALJw+B2xIZSQ9n0ZLZJH9r6hDtsxNrsTANpJiYikGJZMfNLGZMzTDzcxxFErsoQMfW0vRFFST5Sd5bE4Ik9Ciz6QWDJAI6NPPKy3eYsOh6Jo6VZPQrsuG2c X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ubizSAfJe93Lho5r8kQbfStlcZTPTBnpFizZjl2xIJDkCvK0DANf9U2XSfY9?= =?us-ascii?Q?ebEgbDlIkARg1Rk67yQn8Wmg/oz4X+Vu7Owk/bk3OUYrFf/+zTh2Xk2QY50c?= =?us-ascii?Q?4yEWRCTyReTD5lqDnpLpLUreC4lKaJGSTTthUpwquC8gy7nfKSFHxxUhg+s+?= =?us-ascii?Q?GuS0KwC489kPcg3hpBSFjev7TUmsLNfnz3iBg3g5sx3gMGr5jzL5FCWfpzPA?= =?us-ascii?Q?xoQdkS6+jZ9FOUJwV+R70b3gyf+6lkasNnGWeKPhrrirtqoZxyz+bksjIck2?= =?us-ascii?Q?mHNu4BaN5Kbq8zAO2eZH/9IjSPgIH9gvniIyiXBRfaPjyCTIKUdXsoKgerkm?= =?us-ascii?Q?rpvKbfs/ol4gpCeeu60eXS9vH3BVoVvB11t5IX2htsGEE+QO3XvS4YJGUveT?= =?us-ascii?Q?Fa35PogaDbNwFo7mI+Y+16OTDJ0jYWbNJLcoe9qu3B9HjcVXhxUixOXe8IWb?= =?us-ascii?Q?2RecD0wvclrEdzuBiFqJ9QfcLTUf8UPtARyeIFQw2xeHb4X1Wa9l6rbJesbL?= =?us-ascii?Q?qI6A8rmB9PXetZsSbrxKX/rIjEuBAA9v4W4Hhy+APG07tKTLKuROkKbHfVho?= =?us-ascii?Q?5r7Sq3NWwox/IMpuYLvBrbcCPDks13WuLEZbcwGsoBuAfZCuOs9yujK/JMv+?= =?us-ascii?Q?f9Y79yrVhHVN3OE9C54q3jQpshwIZAuXDntBFbPzIdQ131niaFBkVjL9htdL?= =?us-ascii?Q?h28x9PcVDa0vFufj05vveY8gtgB0R2NRU83Sf8Vjwf4w2WR+nFZsMc1uiGHF?= =?us-ascii?Q?/uvte7NiMJMcycSPZLTxcFTUQDk1cDhrwqqU6gyLc0TEiotRG8eBS2XwpPX+?= =?us-ascii?Q?ZDehu6hIbSvGAzVDfQlxerarQ2fEExUQnfj1OLzsgUZDVW4YfCUvmLHOi7kE?= =?us-ascii?Q?UDaECJoi7IufPYOjjCF7slq8zvug7T60WmnO1GB/iAljEBrD9wA8rW0Ypt9C?= =?us-ascii?Q?XmsCIEa4CDo845p3YsJcW5GaskIOLrvIaSUt5rWp2X+qx0d4uhHxUr0il9rq?= =?us-ascii?Q?PEWP7dqtyTJ+3ra0DNdZ68joiY/TsFwybm9v+taB0rA+yob3apjEGQdHHn2I?= =?us-ascii?Q?56Jfo9kIS/V6xGmdyeOYeq/Hl6OGBHhz8w4Q1oBeOYSrclLv9Cjwq+jqxQnM?= =?us-ascii?Q?ELIoKqAm+7859/1NNAiTADDADFX6oPkZVlZRjz77DJ2eh8+QnPzfDVoIm0nl?= =?us-ascii?Q?o9Kg46CytwEnLUwSaRbDcZgHU99DU0JTc9xHIxfQnMO5P6ZxhHeYmHe1WW/n?= =?us-ascii?Q?GeRcYwL0BXisGa8zgs9CJ2ssdV1rPILwXcpwDO55Yg=3D=3D?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3b0faaf7-a16d-4743-a915-08dc4ccb09c9 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Mar 2024 12:56:51.1647 (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: AM8P250MB0157 Subject: [FFmpeg-devel] [PATCH 11/11] avutil/opt: Avoid av_strdup(NULL) 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: It is not documented to be safe and in any case it is nonsense: Currently av_strdup(NULL) returns NULL and in order to distinguish this from a genuine allocation failure, opt_copy_elem() checked afterwards whether src was actually NULL. But then one can simply check in advance whether one should call av_strdup() at all. set_string() was even worse and returned ENOMEM in case the value to be duplicated is NULL; this only worked because av_opt_set_defaults2() does not check the return value at all (given that it can't propagate it). These two places account for 389114 of 390356 av_strdup(NULL) calls during one FATE run. Signed-off-by: Andreas Rheinhardt --- libavutil/opt.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/libavutil/opt.c b/libavutil/opt.c index 76080f87e8..3130606337 100644 --- a/libavutil/opt.c +++ b/libavutil/opt.c @@ -309,6 +309,8 @@ static int set_string_binary(void *obj, const AVOption *o, const char *val, uint static int set_string(void *obj, const AVOption *o, const char *val, uint8_t **dst) { av_freep(dst); + if (!val) + return 0; *dst = av_strdup(val); return *dst ? 0 : AVERROR(ENOMEM); } @@ -2032,9 +2034,11 @@ static int opt_copy_elem(void *logctx, enum AVOptionType type, if (type == AV_OPT_TYPE_STRING) { if (*dst8 != *src8) av_freep(dst8); - *dst8 = av_strdup(*src8); - if (*src8 && !*dst8) - return AVERROR(ENOMEM); + if (*src8) { + *dst8 = av_strdup(*src8); + if (!*dst8) + return AVERROR(ENOMEM); + } } else if (type == AV_OPT_TYPE_BINARY) { int len = *(const int *)(src8 + 1); if (*dst8 != *src8) -- 2.40.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".