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 B077E4A23E for ; Mon, 25 Mar 2024 15:11:36 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4A4E568D53A; Mon, 25 Mar 2024 17:11:35 +0200 (EET) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04olkn2017.outbound.protection.outlook.com [40.92.75.17]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 111E768D300 for ; Mon, 25 Mar 2024 17:11:29 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=la7kN5kK/83SFzSSK2AbAJ90gDDRabDYc0H2pkGghJPibxibBfUNkcLvUm6aN9JL+OnPnLpHcVgj/DXJiZicE14GLuDpzQjmrfN/groD0gMuHbnVo1pA7wz/COntAk6ySp+x5hfqC5qeCkmUltlACLR8GGOU5NebNyVIZjv4o+d8qoheLqtVILUJ0NjFxWniNIO4Lu6HCwI+TTD0DMZ0O63yl3m7IhRbbLii3gv04JNF/6uAruCsCW7T2AvjKERhcbLl1WMU+os+xUCVsu4ROaXUyUzFNFhQGLCRjD7sO72xyC+sy0ldgHS7zKXy9SrJ25n2flzF0T53SFUzRynyyA== 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=khcZzeGXOlvwMGQRrs8GWzxXS1w3EAXlxSgspYxMVp8=; b=eZWZ0c5Sq+BjcL+eNSho3lH/IjOTGlyPlg5p7TZkeq0yV+ghgKisiysNizlWPZPFnPTEpDmU+tKHA1Qymxiux1lBKTx0SDW0PnREe/ouaAGvX/B/PR10E8Xa4yHBR5xkvuAGq8MgUK///JSryvx8RpbAtqlJ7d9dQAsjQpB7oDK/Ys+0HzLJeFaHlWXO1kgtdgXlzWz45BdViQAJFWuI9sDXsw3H7kO8BZH+j/lM/ymq6O2s9CC+3NbzbVUqo9dLmcWsfIYYJacN02F49Q+Su6AUKjL7r9M1B3ihrrYQV0kr9kBD55nks5SyDrc11OXQs8RsvBVkRp/uvjx8+G7llA== 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=khcZzeGXOlvwMGQRrs8GWzxXS1w3EAXlxSgspYxMVp8=; b=LqxS9oJ3uD0WfRpWTXVDNbyHpkse0ac6evryTDO5DJPqQ766MWHj1+a3yIoZsSVAJMVzcnmghLQOAVVYwdg95YRRe4g28mHHEliwoxD3PWdL5LK+dOma/sYqgmM35xVU9a6P/i7lRC+2+UpovYohlLTQMjJzn1qBjmIOvFIml9rP0sfKu+JDYODYEnZymm5aHwI7hFE4f7KfV3RTM4WTXFiXd868r6gh1VwoHksQE9qSK0jCzHi/2uVTj9nOLDBiyKEkUq24JRjI5+TLhOd8As2PK8BnipQEFb0u4cnx7spdqt6RKUcFDOODDPOkduJ+iKhcR+RNCZTDS4MgHFvavA== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AM8P250MB0124.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:36f::20) 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 15:11:27 +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 15:11:27 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 25 Mar 2024 16:11:20 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [mFxbNxG0AzbkvElCmZMHfWtQHChoU8ONbbAgukHhJiM=] X-ClientProxiedBy: FR3P281CA0181.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a4::14) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20240325151120.2936564-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AM8P250MB0124:EE_ X-MS-Office365-Filtering-Correlation-Id: e39fe5c9-ee68-4540-133f-08dc4cddd7f5 X-MS-Exchange-SLBlob-MailProps: Cq7lScuPrnqkjmXb1vlddM5aSa/Epk3AqOlh6LBJbZGaXEk2GZRDduhH721ZWvlVlTbEwkevVh/h0LsQB2dxeSJy0i0RKzyNw5K9PssEysxjhWl+gxWjhxEXLNPT2YXDrH6oeRvR8DCYimd43QElKrRDDK6/yC1Y//FByL3jCqLxgvLKO+nF3p60X6Wy0n5NdfEcT8kgLRCDRNAJ6FzE2S+d01pBy7x5E3K0xshlP3l+DjTj8X6cUbh2ZYYwzuF6UHRyHsp1XyQORatKEb3e261+CXB/sj5Cljq3CpY1JhBhJF1gGKtlEHXeoZ5WSTJhfYy1zmypUNMjreBlKpLTvLqM4Zc/fdTIRirmHJWEMaucB/mvO4o57vvenZa+Uk3h1k84e+VzsrsOLWX0KREjKzsMeARwl9Jj01x27tG427MTkQ3FwTDR7WCBQGLC/BNn+P3bdTeDdHZBARL3WAMJJZ7RIQFSXlXNE1nrWpySBe/uuVsp+NIzDDQJ0OQCp/wjAI7akxf4rQ5/p6Mkg7gK8oFXY1L2b+PN70K8uo4olWqb1+VZB/7sdTzFH/4D/dU7bba6+nBG3iXbhhGd0sQl6XA6ePcWwqgwzehJ3ERWanKXRNhP/OOBYfIVEwklT98V74esNMbkato9yw+hPo8ee2m7QmBdxO6EB6EefjLWHp6C9YgVYzcDDBt531OA13a4n7f8/WmVtkv73lvYBivNr++tcwB+t7m7MiDDcGybkG7ydXQ2Zety84IPnDZ6P91LolHm5RTr9Kc= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: UYtqVJeyj64KEUNYwSkGOjE6EYp60oh18lfIj8Wo55oLkFxkpYlSsJE6BLAO3Wpl0sPF3buKECNtJnbLfbaU0Gx5LijPRlpfUM7hSwg9RZsnoz6sojkn1Xl7T0RQq1K3le6Ut3Z4T1UO0HGgZGgrhW9sXGoh6dFPRme1f02RxqIZjsEfmvGYW1/Y4dBJuKZz5RDUEAETqYrTJ3VHWSfTURtm1OKwbNo1g/B04BlWfX+3lhFW6U4VX+ysdRDPWg7jeEqePO+DVnkyg8O00RRslVMHXG6+3Lv++/WK0zN1ljdbcYKmdxJ40uD+ggo/lH1C65sStVM1S8DvMOMu8UgvbmIGk6e0/h+MKkABU7YFG93iDWxtYbyHZqDipMdd5AZDk5IoqpuMEjez8tBWt3UW6QavCJKJLZXAZsoY8KkSi0fvZK6Ij7/AT0bKRbsZopXuaEzr/RDTpSra9mV2F/FuDVtEMzFsrksjZG1a2BX4D/V80qI6EuBx2fqxKnv/cRgk0lRm4wOzxOLUHoxmKOwumcY6pjNKjxtQlVIIyDB49sScv8PsvpPWzBTaSiIdWRRjJVRZ7K7QXSdpa0idPmSGGVeohUxU11R28WzUpZ1OXtvYh1wccQr1V0G7sTbbChjF X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?oSdlUOY5eCl2MmKPSrECbgdb8wtY7ORptvfh/SHQ/psLMQOHEs5der4ZlcIk?= =?us-ascii?Q?dVa8JCZoVz/BpMtebEfkxZHHt2PlK1Bbd4tG9L1GOwQ5km/cDqKuYT1ikKIj?= =?us-ascii?Q?9JHAUZt14skRxIlNtLdtO66HBQEgDIXXVLbnWW5MiRQvEC9YYQ++3i1vtJi1?= =?us-ascii?Q?GgWMMJSnaRLXWR+W4s8zEJ9mMzF34yXR94cBkekw2CdWQteQfo01frsAbEWd?= =?us-ascii?Q?q7ReuMqtWwhAkowWBC7TMLgOIEJJ8HhssM9unMdi94CewohF8nFpt4i4LoAP?= =?us-ascii?Q?Tgb84idWxXijWimjimnxZTdXDOQ9BfwXip9g+PURnXlD0R1vO0C2PewqtHxN?= =?us-ascii?Q?mtA1YNtJyLqJ3J62PjDKeI1Wvg5vL7DLiE5H8/ioM3tmFl9zT/vJawBRSzYL?= =?us-ascii?Q?t+4cldrqzybFGWPZDslWMW6MkrV3AgPwpOuY2nefHdQtlxqbLvSDNeNkx9dT?= =?us-ascii?Q?jq1fKgA38v+kLy6nlfA9GsLrgUmEDnewfO5B+cv53/P10FtwAmWZWi4lmvPe?= =?us-ascii?Q?npNzrlpjAc5FIGPg1F48SskRjpO+J6JUd+5XFriFwRPGBebfVwR/OsHhdR8K?= =?us-ascii?Q?yeHpCpOXYqnm6Axct8oXNsDcWH/ShHafvJDzmmpP2oLuiNhaK0txLMDM/bOn?= =?us-ascii?Q?enONYX2qBKOGEumPBRcXxk15aDoyG/AmYU1cagJQTDxQchGt/ojUIk3u9mXR?= =?us-ascii?Q?sQXptZfhoWXUSNZLRm12su3Y81nn+aHebvfmyR43Qx/7puJ7+WQnwlqB8gk4?= =?us-ascii?Q?ZDSXMPlJI1LzWfyxZKz8Cld7ANrSIZnpLlrurDbUgRSJyyVkqMTQSPrNbcjq?= =?us-ascii?Q?T7WRRmUvgEjF8dmrpUfkzK0KLee4/koAMrjircrb20crucU5oJ1O9EYswB4f?= =?us-ascii?Q?8cySuzDgu/wZc04eWHuXWkz9Jn3uHl/w90FD7MIL494igxObsK2UR+0JBXoi?= =?us-ascii?Q?lRS+VuRkr7JCTpt2m57PgAcYrUXm78fTX6xSY5WGn7ptHoymGy2f8qDODOc4?= =?us-ascii?Q?HxgRukG9JH8aPzq6ZcuVIK7otwGTv5I1OdJD3tGn7cmSwoZfg4ogtmYCHqAG?= =?us-ascii?Q?vIvfJk6lPBdBMIQf+ClYfxPjaq0Xt93GgzzJHzcwJccXNENKssLJVR0CxQb1?= =?us-ascii?Q?2bAHTxCm6NMJpzCCRENWnnHvEsOYiS7WcZ5YhOYURuVy/DVH6fULQLckrNnV?= =?us-ascii?Q?xaEShJJZyeEwkpbux3TzvFb9+sxxdUzGzITE+m6U2O9sGjOJuY0rPT3DkFP9?= =?us-ascii?Q?xuszOTSCYM9Q++nURPRHRMdtysYeOZfQlPRgF9uXiQ=3D=3D?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e39fe5c9-ee68-4540-133f-08dc4cddd7f5 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Mar 2024 15:11:27.7826 (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: AM8P250MB0124 Subject: [FFmpeg-devel] [PATCH 12/12] avutil/opt: Don't cast when the result might be misaligned 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: A pointer conversion is UB if the resulting pointer is not correctly aligned for the resultant type, even if no load/store is ever performed through that pointer (C11 6.3.2.3 (7)). This may happen in opt_copy_elem(), because the pointers are converted even when they belong to a type that does not guarantee sufficient alignment. Fix this by deferring the cast after having checked the type. Also make the casts -Wcast-qual safe and avoid an indirection for src. Signed-off-by: Andreas Rheinhardt --- libavutil/opt.c | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/libavutil/opt.c b/libavutil/opt.c index 3130606337..5fa8870707 100644 --- a/libavutil/opt.c +++ b/libavutil/opt.c @@ -2028,18 +2028,19 @@ void *av_opt_ptr(const AVClass *class, void *obj, const char *name) static int opt_copy_elem(void *logctx, enum AVOptionType type, void *dst, const void *src) { - uint8_t **dst8 = (uint8_t **)dst; - const uint8_t **src8 = (const uint8_t **)src; - if (type == AV_OPT_TYPE_STRING) { - if (*dst8 != *src8) - av_freep(dst8); - if (*src8) { - *dst8 = av_strdup(*src8); - if (!*dst8) + const char *src_str = *(const char *const *)src; + char **dstp = (char **)dst; + if (*dstp != src_str) + av_freep(dstp); + if (src_str) { + *dstp = av_strdup(src_str); + if (!*dstp) return AVERROR(ENOMEM); } } else if (type == AV_OPT_TYPE_BINARY) { + const uint8_t *const *src8 = (const uint8_t *const *)src; + uint8_t **dst8 = (uint8_t **)dst; int len = *(const int *)(src8 + 1); if (*dst8 != *src8) av_freep(dst8); @@ -2052,12 +2053,12 @@ static int opt_copy_elem(void *logctx, enum AVOptionType type, } else if (type == AV_OPT_TYPE_CONST) { // do nothing } else if (type == AV_OPT_TYPE_DICT) { - AVDictionary **sdict = (AVDictionary **)src; - AVDictionary **ddict = (AVDictionary **)dst; - if (*sdict != *ddict) - av_dict_free(ddict); - *ddict = NULL; - return av_dict_copy(ddict, *sdict, 0); + const AVDictionary *sdict = *(const AVDictionary * const *)src; + AVDictionary **ddictp = (AVDictionary **)dst; + if (sdict != *ddictp) + av_dict_free(ddictp); + *ddictp = NULL; + return av_dict_copy(ddictp, sdict, 0); } else if (type == AV_OPT_TYPE_CHLAYOUT) { if (dst != src) return av_channel_layout_copy(dst, src); -- 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".