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 7244E4B40A for ; Wed, 5 Jun 2024 11:14:19 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 702B568D355; Wed, 5 Jun 2024 14:14:16 +0300 (EEST) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04olkn2082.outbound.protection.outlook.com [40.92.73.82]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6FCB068C371 for ; Wed, 5 Jun 2024 14:14:09 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Cu4UjM6IU9zuPF2KQpWph6hzLFNJDTTovJEWuoVfsiMvSaxw4inCqfdvelmLQUdSOOQnSfKc1bbQ9uMStEdwjUz80tpA+2FPdgNtBuyeh49NTaWNzi0tcf+W6QtCDr8kwTYWCLdnfepXNrh1FzdKzKzyiOh0rxdLuHLguUWE5w/mB+YfWE4wVx34/3lO3OnqJ2mUb7O67IKh/sgrCF9jBYt+X9dzNJmb7jleH8/zTUzBtwvXwMNO6FfaEWE6+d3wAVsBo+YENdRcQ6ORp2szJovLXGwMYmW8nuaBbF3cPv3bvhau2i+vECI5L8Kyc/3yYNHPRQELc5Oe0gTmJLEhrg== 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=7wHwOAiuRN3OLG/YaZHYYpgsKV/RmLEEU9N/WP4mZU0=; b=S5kPB6kOR41I1P15JX3m8wcR3gkT41C45j4TtIR5OIg7s4nqLOcytrx/b1nEMDm9CAgfFFAC196ZA+laCtuQA0HURXF1bwtDfKmeRVwQ2hn07qJZ6IPXITZIiCewZIAT+T81Yhj4vdIG+0OUDFU/B0IoFKnqTIAaDbsK+MG0CMY+oSq4k/v4zEsumXPu2EPlfOxxJ8gfXn1EDE/u0mt0gtHh6bmZblKK24mrnKl5mT0RTdJdabf/XMCPPVraB3RYZh9dlSThb1Lgen0ZxX7K4uJQvsSZgzWarpcvVqtMyasqy+ZPznAwm8bYNvlh0anYoP+X0rZtKAyIXG+kPRVaOA== 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=7wHwOAiuRN3OLG/YaZHYYpgsKV/RmLEEU9N/WP4mZU0=; b=LpgF46HvbencPHRafwSEKXkUcEJEcdrdKiVyewfNvPOhbYhQbNOn6HXeEqQ889Et0VKj/NBU8r77QjxE/wJFM9cLAnWE8kr0CI4/2TnPHyHyu4SUyWpl3sVREhwT1oF5y9zQuX2CvW1Wbor6XinpPmQhhOjqX8JY/GU8nrunaM7AVmBQA3OqvhisSQmgWSFnV0McB0AkSm5cqfES83P3R36Jt/uJLuByW8tKdKFphkQZFWzf2dvj5i0rTGah9ap0G9CSJMjDKI3Vht6/VGOFBc3ua+9kWUZzahqfjsPpFbNwryPDMZf8a/5inM3qLO/MGtm7Ic/AwSWsqt+ba+OOQg== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by PAXP250MB0598.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:286::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.23; Wed, 5 Jun 2024 11:14:03 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614%4]) with mapi id 15.20.7633.021; Wed, 5 Jun 2024 11:14:03 +0000 Message-ID: Date: Wed, 5 Jun 2024 13:14:01 +0200 User-Agent: Mozilla Thunderbird To: ffmpeg-devel@ffmpeg.org References: <20240604222835.166462-1-marcus@marcusspencer.xyz> Content-Language: en-US From: Andreas Rheinhardt In-Reply-To: X-TMN: [0MYzV71R2U9HEP3vxWriTL7IbGE4Rd6JJqNKA/PnI0Q=] X-ClientProxiedBy: FR4P281CA0204.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:e5::15) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <638676e6-3cc7-48dc-9cbc-3c912b83418a@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|PAXP250MB0598:EE_ X-MS-Office365-Filtering-Correlation-Id: 05dc7d17-a225-4beb-e332-08dc85509b6c X-Microsoft-Antispam: BCL:0;ARA:14566002|461199019|3412199016|440099019; X-Microsoft-Antispam-Message-Info: Pg+iRRP4csLZ/tcY6A5mipaF5g0dJqZV5pWjq5j3OoVisY04afB32Jxnrk0zLbUONIttpf/JnyX/HvWCfGzVpB8TNd77BJYgRrlWQR1KbF+BWYiA5qly41HGPyRVhqUgJinh5y+H+2hRaspN/5rMahJc53QoFwx7h4TPnGDCCm5KPWkaM1lYdURzMUgpJ+ZCJ8KaO19e7kA7Ck2TDyCCdvnkQIqc4jaBpq+8GVvb2VMOv1ZwpR4hE7apiCjHTG6vWuOk5nFD+7qOUoDKWqPg377McIw6nm9avqqycSIKg+hcYZ+lKUxqCj0+RiIZawQUoK2jh9zm6Xh64NnG49+IZORbSt/SpY+lazO7c62gZ0nJCJfngmzB9LoNmU1FXHu5RdqhHU9ZQrGCZD+tvJ7D7M3rVZyMdXZ7M8MpBduJ9umRriEpQIr47Z9iE/nKsioTH1XOVcRrK4KotilO8JF+uoWaRrdUDbCl+piBV7LlaHwvEfcQWNj85jy7xpBdJAI2LeGFxZU1Gfez7fRmA8hYfyzD3ed6iaVZrTheXymgxUvHLLR6TWvAnRu39ZIIk2tM X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?MFRNRGcwVjQrUTk4NGpDRitNZStrUXgzdDlXYXZpNmc1SG1qZk9ic2xkS2VY?= =?utf-8?B?Qk01SFRrM3prQWlPRnRTQ05Rc0ZQcThsSVd4VlZvbjJ0YzhPMjhYeStUODZu?= =?utf-8?B?VGVVeHRWUVZWRDE5YUdMZ2xTd0VIRVRUSFk3cm9WajVkUFFvNHZTWEZzb04y?= =?utf-8?B?c1NqMDNub1g0eWgwSVk3UnF3ekhmZ3AvQXhjLzJ0NnBFQlpVN283VzdZSDRz?= =?utf-8?B?emJrdytreXNVTlZaalN5RktJbkpBVVAvMCtTQmxHdGxCRll0YU9XazhIbWxL?= =?utf-8?B?N2VTMDJBQ3d0K1FBVW4zVDljbTltMW13T0xiRUhScXF2aEd4NEJYNWh2Z1lm?= =?utf-8?B?Q0lrNXJueDg1cEVHY1lDNytxQTJaTUREc1Z2Z2pjcXM4dXgwaHlRdzJPMmpp?= =?utf-8?B?emg1dWlRM0NYdTRTQ0Jwdzl3Y0JUeWxFcXN0eHVtWDI3aHRNWWJFYVJpaU9n?= =?utf-8?B?b1BnWDdWdlBncklQamJ0L09JMTk1eUFaclk2SlFKS09MaGFhY1NhTEdnK0ph?= =?utf-8?B?TmV4TEtFbVVnSkZGNGkvcE9SZXVxNTZ1eHBFQnR6bW50dXVEWEcrZGtSNnhj?= =?utf-8?B?cXJUaWJDbGR5RHZJYmtaUFpjeGxyR0RTYlJZRXV6TVZvZjU2Q1N5WTJVaWVC?= =?utf-8?B?QTNMZFdtWUlPWlVadWREVW9tTkpBMm9tTVh0eDBXcnZkalpjenQvb3FCL2sx?= =?utf-8?B?MWJ3bGJySU9GNnZMbDBheGlhOVE1VUk0MFRxb01DajZHck9GSU5DemZBSlY1?= =?utf-8?B?RWdHZ05TT1BrNXdDcVp0ZVN6RTZIS3BMMWxpd2F5OWtsWHprN29vWTl3Lzdi?= =?utf-8?B?T0U2VHVaS2ova3R5YUQyS3RlaHdaNDc3UFdhVkg3b1k1MTRGR2tWYm9jaCtq?= =?utf-8?B?c203U0l6TnROdTlNR0hoRlJ1aWxnc1RoWFE0eWhzSmEyaXdtRjI3dG8vZk5x?= =?utf-8?B?QmNQRnU0dzhaUTNRaFpuSlBVdW94Vi9OaTllZTZvd3RyYVdlSWNLWCs4WE50?= =?utf-8?B?ZTJoYjJWZURKR29iYVZlNGNXUkJCcEdEaEZxMlVRaDc0MVBSTFdjWVJDbUVQ?= =?utf-8?B?MmFIZXR4emxzMFU5MG1CZ2MwOEZhclNKMzhLQ1NuUmpLb2EyMUo1OEk0OFZv?= =?utf-8?B?UytCQVVLeVFtcWtXc1BQQWFwS3BjNStTQ0hmRmowbzYydmJEOXJqYnNkbUwr?= =?utf-8?B?aXNTbWQzRHR1UHJpUVdEUk9rNWJnYkY2Nzg1cXl3ekNQcC9HSHZHL0NBQTVT?= =?utf-8?B?UisrcTNKR3JqVlc5SG1qNjBnaFVmVlc4RGJsSmdhR1dVUDdTdjNRVWxZN25s?= =?utf-8?B?ZjNtcjJ4NDRYTURlOHlZeVRVTWIyeUEvMFIvVG02ckVRWWFOK1M2V2lsZWp4?= =?utf-8?B?WWRKRVZxdlh2enBiZ2NoMlczbGQ5NHhQdzFrcDB2L0lEU2U2cUp5VlhsTmVo?= =?utf-8?B?RDEzbW01eDVLTFhjVkQ0aU4waDE5SzdBd21QZ3BlSEk4VERsd0FGU2VxSi81?= =?utf-8?B?cE05NkZyTm9jUmdlZzRpQVRHdUZYbTZhSEtrN1JQNmdUS29UUnFjS3dFd2NM?= =?utf-8?B?NkpjVTFSclIxaTJza1R1YlFqUHlKZGhRM2JZVE5ZUzY4WmxqMFk3a2Zlc3A3?= =?utf-8?B?dnZsb2JnYTI3ZWJCSnp6ZkhYYjdpQlB2allhL0xyb09UYTJVV2MxNEtMZWh5?= =?utf-8?B?RytPQ3B4M2FySUlSRmpqTUwxYnBERGNydHpnUStCdXUwb1lDK3pYOUd3PT0=?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 05dc7d17-a225-4beb-e332-08dc85509b6c X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2024 11:14:03.2920 (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: PAXP250MB0598 Subject: Re: [FFmpeg-devel] [PATCH v6] avcodec: add farbfeld encoder 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: Stefano Sabatini: > On date Wednesday 2024-06-05 12:02:08 +0200, Andreas Rheinhardt wrote: >> Stefano Sabatini: >>> On date Tuesday 2024-06-04 17:28:35 -0500, Marcus B Spencer wrote: > [...] >>>> +#define HEADER_SIZE 16 >>>> + >>>> +static int farbfeld_encode_frame(AVCodecContext *ctx, AVPacket *pkt, >>>> + const AVFrame *p, int *got_packet) >>>> +{ >>> >>>> + int raw_img_size = av_image_get_buffer_size( >>>> + p->format, >>>> + p->width, >>>> + p->height, >>>> + 1 >>>> + ); >>> >>>> + int64_t buf_size = (int64_t)raw_img_size + HEADER_SIZE; >>> >>> not yet, this might change the sign for a negative raw_img_size, you >>> need two separate checks (one is not enough), as in the following: >>> >>> int raw_img_size = av_image_get_buffer_size(p->format, p->width,p->height, 1); >>> >>> if (raw_image_size < 0) >>> return raw_image_size; >>> >>> int buf_size = raw_img_size + HEADER_SIZE; >>> if (buf_size < 0) >>> return AVERROR(EINVAL); >> > >> This is absolutely wrong: raw_img_size is nonnegative here as is >> HEADER_SIZE and the addition will be performed as an int, so that >> overflow would be UB which implies that the compiler can optimize this >> check away. > > Correct, the following should avoid the UB if I'm not mistaken again: > > if (HEADER_SIZE > (INT_MAX - raw_img_size)) > return AVERROR(EINVAL); > int buf_size = raw_img_size + HEADER_SIZE; > ... > >> One does not need two checks as long as int is 32 bits (because then one >> can just perform the addition in 64bits). > > sizeof(int) is not defined by the C standard, so you cannot assume it > is 32 bits (even if on most platforms/compilers it will be) > Did you even read the following? It handles the case where simply using 64bits is not enough. >> Just use the following (#if >> has been used because compilers have a tendency to emit warnings if a >> particular check is tautologically false): >> >> #if INT_MAX > INT64_MAX - HEADER_SIZE >> if (raw_img_size > INT64_MAX - HEADER_SIZE) >> return AVERROR(ERANGE); >> #endif _______________________________________________ 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".