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 3043C4224A for ; Thu, 30 Jun 2022 08:31:17 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 55D3568B6DD; Thu, 30 Jun 2022 11:31:14 +0300 (EEST) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-oln040092066088.outbound.protection.outlook.com [40.92.66.88]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0B9D868B411 for ; Thu, 30 Jun 2022 11:31:07 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dQfUKFWZPrzetbkbVPOEktgO2EtQooTs0SVUXq2N3BPIKi75KqRO+g8qExmPKM4Rtpu2Y9asqmrIRPlu387lgKkhO2bSBfkmGTTrl6zshOHb6oTy95hG0JdDOx0dWFxtPFaJF1VfO79Lr6FnrEOpLZlGH4kG1IEUIIT+qqrcBhujFKT9ztiGAsBfNXwc+iK3TVrFq1OyAGi3o8oiKFSKrqr7nUZ14LxTVPGhahjUVHfq+/VScK8dE2qnrHjrkTPvN65DZBBSrzptO1Moy0GXuPxiRjjW61CEGRFjn+uPvPm6P5+PHeK2kGaR7E3qVwFIBqp4ybKWEjGs3wSxYm26/A== 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=/8K8U+jvwuZMN2pdwc05DXGkl4cQcZwND5DDDj0xsZg=; b=V0dr+Frq42ZyrluvBwGdERju3NWBtOVccsz17R7lR0QmfHrVUz/9hQC76IbAiewGuZcqkmrY9NlkVk7s+mGbzDrPjRjEqNId9N2cp5KKT+5D0pOZzEzC2ypxASJc1HqbYSlthVcNmnqz6k//JJcGxR7cMEHobi2c9mtjWfoCamhVY0NtmIaYPUL4bXKrpJqoLt7ivPpZ2AJLXnokaF1d48NZ6yj8YPslJoYSNbeBzBlfW36z2vKRke+oPT9cmF0EwUExZt8MYTSrEKZ9hukOjkLiuMYpl56JSvt0IPHb0msyjUw9X3Hp3ER5DzIdcBkQRC2CHs8O5TKN0Iu/TJCywg== 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=/8K8U+jvwuZMN2pdwc05DXGkl4cQcZwND5DDDj0xsZg=; b=IprfZrTysSWWa1oneT9dxZZxoVE79OMzQfwZoFMHXVF5y7nPMq6OSrJmxUhEqHJiJWsLYWcDtsSRXP+Ptaff8mwpot7U40py1oFkWmDVoDuYXhl3XYpv0GJ6kqUyLbXc5ukn1jJrulN+ORLiX5vLjh5ULjyliXt1jLWzvwKNpyBAQc9dHp8BDerxvMya8YiTQo/qsYsHZ89Dkz9NNl4i7WW1jH1MESRNZP6GcBe3KI4yKZGsRqstebnecwPZxsG8ha3b8ptarGg3CwssqQ1U4YEvBuyHvaq3/5mDNMkI7tEcEk6mmu08Nrp8DOFhhhl2jRh8H0F+dndB/57k71Vmvg== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by AM5PR0101MB2465.eurprd01.prod.exchangelabs.com (2603:10a6:203:31::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.14; Thu, 30 Jun 2022 08:31:06 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5373.018; Thu, 30 Jun 2022 08:31:06 +0000 Message-ID: Date: Thu, 30 Jun 2022 10:31:04 +0200 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: From: Andreas Rheinhardt In-Reply-To: X-TMN: [Wb8yp26F5P7Yl5PSOOfiuZdFeUFeqqM+] X-ClientProxiedBy: AS9PR06CA0346.eurprd06.prod.outlook.com (2603:10a6:20b:466::21) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <937beed7-1322-02b2-e835-1bf7fe8c65d9@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 332f27ba-9ff0-455c-bfca-08da5a72e02a X-MS-TrafficTypeDiagnostic: AM5PR0101MB2465:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: jCp7fVzPRsXS6cdNSYIGJEZCBBvlXm5RbidjT7lJbyAbDWgTG5gRK8USZASF54o0jUTXkIbJgngH/NP/Rk7DTO6vHFgT7nKbIOab5llyH/BzygREFMdMcelj8QbxZdGGst9J0HptkSNKccD61E23YzajYPSgK+dXwO0sTNNFw8TvVH9q255gyoDaLw5TleGuPSTQ1f/bVj4Zp6Rb5Ydab+HsD+0zcOVqWV4hlQJOuNdbk7hO273Cfd4nG64YwgRhYAOT3XGOQfKZJPh80YHVmRfJJ2XC4yA1PR3eflomah9f8XCAK0i8kv1+mgtiQh7+pFzFguAG+VbE96GaUmNBinBZEKOqnSU47hTOQsAPFvKzxcLY82v8pP/bttMOHIsnMG3I2BP6Efv4tGbiAp/V8+7OQKE7xBrNzyWiYjYod23wGc2UzSMwCH+QFBBu/cJ8IC67g1Xc9Yilp61jZoX3j8MRPQ5qzOwZcbAWz+7tr6/gVmO+vjgSTn8JqS6CMHUyFIYsv5qNjB0APTqvTZAXiOHQz4WR+GUZ09vrWbYvvmI0RjvyLeZbzw27u8lYIw/OewrV7Kr/+3ALNsRIZLwhpP2/FcP4H9cRnpObMxMQMSpNWDEfz0eryLo7xkJtLK7qmbYkVlbap7fQnJZGgg613A== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Q3hUampVdVRCT21RRVJCQVdMWW9xRktPaUFmUTdhQzJGS1MvODhKdk9Bdmk2?= =?utf-8?B?Sjl6dFhoYkw3YlJVWEVneDIzQUZqd3VFbklManNmSHY2Y3pOT2oyRnFQaGlN?= =?utf-8?B?aWkyUXVjTkpLQmFVZU5MZWZQNWtNVEpUVGh5NWhYcWE5cXBNOWdSUENXWXJF?= =?utf-8?B?aFVkV2E2c0Q0cGhJWXkzYjNpQzUvL01yMUJtZDU1M3VmV3BTZ1pDa04zdjVY?= =?utf-8?B?V3VDQnJJQUQ2K25JUlV1NU1rYlRxQTA2clJValBnYjBHclppN2YzTy95YzBR?= =?utf-8?B?V016M1Rwb1hYMzVqcVZQK1IvTzQ2SmFHa2FUaUtROXdZWVZQUW53dWFWRFVq?= =?utf-8?B?ZFZBencvSEhhY1ZES3FTKzlFKzcxRUZLak9PYVhOYy8ydmxoQVFPRXFiRDRB?= =?utf-8?B?aGhHcjdDeFBVWEl5ZzZUakFWY0RCRXhFSkhSczB4MHNKdEpiME5Dc0hSQVo4?= =?utf-8?B?YWlvQ0FaazNNQnhENWlRZ3huWTV3Rk1tTytqU3RucmlhODVKSlcvVDVQUGFE?= =?utf-8?B?Q2h4bHZhdnZ1UDdBcmNqeVU5aTlGK2ZRVnhkWENjSU9MVkNxQkJmZTg4SmpF?= =?utf-8?B?V2p1TjZNaUFiUkJEN08vMmFUVWUzNlkzYndneVpIWGMwRkF2N1JHWEIwUjNG?= =?utf-8?B?T3g1aTJxMUFMWE9xRExmbVVHSVRmNTBybER0TTU2V0RwNDNERDN4SGxOZkFU?= =?utf-8?B?b1dsdXhtd0cxZk5uR21SMTdUcVVEZm1mek1kaVZ3V0xtSVBmR0xaOGRLSTVP?= =?utf-8?B?MUVQZEVOeWZHVjJLaWRJbjFrZjlhRVRlUnR1MFN6cEUzSU1sdWtsSzl0MCtU?= =?utf-8?B?TlZMSnFJdzFnWDM1OXhLekhRK2NKUjRLZlcxb0lSQlI0SmF6a240cDBFeGsv?= =?utf-8?B?S2hXdVFkaVliU1UzTENSUDVhQUpHTmxheWhYaHg0TmhPT1NzcjJkNkJsV2Q2?= =?utf-8?B?VkFtNDFOSGh4R3BTY3czcFBWd0dkTHpCbk9xMHhQRUVkd2FRc1I4T2M0YWhF?= =?utf-8?B?RFpjeEsvK21XWTAwQUU2MU5SZTRiS01oVk1hMExKb3BOWGtLQllaT0ZmUWQ0?= =?utf-8?B?Z2lNWE95eEhxbTRhc09LNFdPRC9RdERzVU4wNzZ4S1EvVStWMTJNWS8vSVhL?= =?utf-8?B?S3pCS2VaYjhMTDg4YjR0bHYvb3p5bHNIbFVsakJuazZ4UURWWjZ1czN5Zkk1?= =?utf-8?B?UlJlWjNWVml1ZXhuUlAveXZWaHVSR3ZuVGhjSHdYcTRVekdBL3RGampSaTVj?= =?utf-8?B?bTljQzVWUHlWNEo5SEdGSEM5U3pHY3FOU2g3Zm1rSmxORnQ1V3UwME5qMHBZ?= =?utf-8?B?SndPNUhJM1VVL3NwZHFaSHM5MENNS3kyamxBeHl2OVZMTWNwU3VpVStZOWFz?= =?utf-8?B?TFpuN00xc2NjT2huam5BdTRONVBWMStObWdvdVdrQ3pFa1A5b1BseE5mTGRr?= =?utf-8?B?em12VnhYeHY2NVNCU21VbFRvZ3d1OHZFWFZncm1DdGpnZ0ZObEk3STZVZXFZ?= =?utf-8?B?Sm5UdElPUjNaSDZ6bGtVWkptL2V6dFhnczdFLzVjdE8xK09lZVIxZXZNVVRa?= =?utf-8?B?Z2lEQ2RCUVhnak90MGxVbVB4STR1OFdPM2x3cm1CQk1zZ0wvNFFKdXpsd2l4?= =?utf-8?B?ZjN0am9NRUNqeDVkR1NUOERRNnBaVkNYQ1BDdmRUcTNRa3hha09TL3lqWXVW?= =?utf-8?B?RVREUTQ0MzJKYjNXemdvL2xlbEhKWVgrQklsOHhhQStFa091VWdXS2pOL1Jz?= =?utf-8?Q?t5bCoK81bYmevM7nkg=3D?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 332f27ba-9ff0-455c-bfca-08da5a72e02a X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jun 2022 08:31:06.3609 (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: AM5PR0101MB2465 Subject: Re: [FFmpeg-devel] [PATCH] avcodec/apedec: fix prediction 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: Zhao Zhili: > From: Zhao Zhili > > Fixes ticket #9816. > Regression since ed0001482a74b60f3d5bc5. > > Prediction value larger than INT32_MAX should be treated as > negative. The code already depends on undefined right shift > behavior before the patch, which doesn't get fixed by the patch. > > Signed-off-by: Zhao Zhili > --- > libavcodec/apedec.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/libavcodec/apedec.c b/libavcodec/apedec.c > index a7c38bce1b..5f2af2e147 100644 > --- a/libavcodec/apedec.c > +++ b/libavcodec/apedec.c > @@ -1198,7 +1198,7 @@ static av_always_inline int predictor_update_filter(APEPredictor64 *p, > p->buf[delayB - 3] * p->coeffsB[filter][3] + > p->buf[delayB - 4] * p->coeffsB[filter][4]; > > - p->lastA[filter] = decoded + ((int64_t)((uint64_t)predictionA + (predictionB >> 1)) >> 10); > + p->lastA[filter] = decoded + ((int32_t)((uint64_t)predictionA + (predictionB >> 1)) >> 10); > p->filterA[filter] = p->lastA[filter] + ((int64_t)(p->filterA[filter] * 31ULL) >> 5); > > sign = APESIGN(decoded); 1. Right shifts of negative numbers are implementation-defined, not undefined. And we rely on the implementation to do the sane thing for two's complement, so it is defined for us. 2. You are not necessarily treating them as negative, you simply discard the upper 32 bits and the result could be positive. And you discard the upper bits before you discard the lowest 10 bits, so the result has effectively only 22 bits. Is this really intended? If it is, you could perform the addition predictionA + (predictionB >> 1) in 32 bits. 3. I see one possibility for UB in this: The outermost addition on the right side is a signed addition, so it could overflow. - 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".