From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <ffmpeg-devel-bounces@ffmpeg.org>
Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100])
	by master.gitmailbox.com (Postfix) with ESMTP id B58B04B61C
	for <ffmpegdev@gitmailbox.com>; Tue,  9 Jul 2024 20:19:20 +0000 (UTC)
Received: from [127.0.1.1] (localhost [127.0.0.1])
	by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DB62168DCE4;
	Tue,  9 Jul 2024 23:19:17 +0300 (EEST)
Received: from mail-qv1-f43.google.com (mail-qv1-f43.google.com
 [209.85.219.43])
 by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E60E368DB6B
 for <ffmpeg-devel@ffmpeg.org>; Tue,  9 Jul 2024 23:19:10 +0300 (EEST)
Received: by mail-qv1-f43.google.com with SMTP id
 6a1803df08f44-6b5dfa18db1so6033896d6.0
 for <ffmpeg-devel@ffmpeg.org>; Tue, 09 Jul 2024 13:19:10 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1720556349; x=1721161149; darn=ffmpeg.org;
 h=content-transfer-encoding:in-reply-to:autocrypt:from
 :content-language:references:to:subject:user-agent:mime-version:date
 :message-id:from:to:cc:subject:date:message-id:reply-to;
 bh=QorJWON+9De0cNETNsY1RVbNMrh18SVjZlfFf38Yc9c=;
 b=d3kYr06lKhV5bYt+cEXfXl1rTF3gbGkxE2MIhimqJw+rQYXQBVpIGnDYdgsBrb5icf
 fFBsm1+0rG9S0R2CFvdpY76pqDjCDUXuBKGMe4EUxrpPJJDqIRza/LqQKcqgfk9/ZLFb
 AzYsaxuoi9aW2NIhbA9ejJTmtGDpidOys9UPz56sKIRFBydf1yLGGVe4TExwe72g+Saz
 fpAnC07zwvNmUSmbzzxfBtJ47chv4dN0R4V9UxmF0KJgBJyefcgzH7et8jBi7ePEyCG6
 VVF6pZ4bUfop0xX0pKPAJRj4CCtBympJmA259e7zN6/KhUbDBA7Rwni8kZyAJEV64eu3
 ysYg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1720556349; x=1721161149;
 h=content-transfer-encoding:in-reply-to:autocrypt:from
 :content-language:references:to:subject:user-agent:mime-version:date
 :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
 :reply-to;
 bh=QorJWON+9De0cNETNsY1RVbNMrh18SVjZlfFf38Yc9c=;
 b=g6CsHqLnNDDJ005NP+daoU91/5qe6PTprUPqhAuByDF21zK5PQ10gpiw7CfUix9/Kg
 atuz+F8zDdX2B8vsd9cxaodl2p17J6cyDtfi/k0AvlBYliqal4SGGftVHVRuL035Opl5
 yyKoCUlhnpP5D1/Q9JfonTgO6h4EeFILd2AQZqgo5J17tyCRwwKErWq4l/B6CJjErMlE
 7i43ZP1tR4YTzCwmGPtvKRfa3qQd1LfsbwvPS5LP1jA0BnVTopjT+AcyjkkjVI59bmPO
 ouFG5n4QvambO7BIWExnZrLvgqZNcpW2MJ9kKfksO6ygUrWhcZ3xF0Zo7ITnHHDIk7Dv
 r+PA==
X-Gm-Message-State: AOJu0Yw5UTFheZdk3C3FSJQ0aNTvZdWgFfqcTY+7Yq7IoWwqWUMZe6/A
 ZiXzxtEX/ZF3odSlmJJUEaH6/Ta984hUBmAr7CqCbcqMa+p9gVCt/TG04g==
X-Google-Smtp-Source: AGHT+IFtyetPaF57ru7I/FvOfaDZDXb3W6tblZeO8Frg5D/3C3M6PGl50QCQnhtcsJQwxdCmr8Q+qg==
X-Received: by 2002:a0c:c20b:0:b0:6b0:6a38:e01d with SMTP id
 6a1803df08f44-6b61bbe1fddmr38950396d6.0.1720556349276; 
 Tue, 09 Jul 2024 13:19:09 -0700 (PDT)
Received: from [192.168.1.35] (c-68-56-149-176.hsd1.mi.comcast.net.
 [68.56.149.176]) by smtp.gmail.com with ESMTPSA id
 6a1803df08f44-6b61b9c4d9fsm11755926d6.3.2024.07.09.13.19.08
 for <ffmpeg-devel@ffmpeg.org>
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 09 Jul 2024 13:19:09 -0700 (PDT)
Message-ID: <81b76fa0-6eb3-4619-8878-488bc8886448@gmail.com>
Date: Tue, 9 Jul 2024 16:19:08 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
To: ffmpeg-devel@ffmpeg.org
References: <20240708042517.5585-1-gseanmcg@gmail.com>
 <20240709183434.10114-1-gseanmcg@gmail.com>
Content-Language: en-US-large
From: Leo Izen <leo.izen@gmail.com>
Autocrypt: addr=leo.izen@gmail.com; keydata=
 xjMEZZw8HxYJKwYBBAHaRw8BAQdAgcfI+LbtjWarA7LQu6/WAPlKkn9tn4HalmHgGVhMUdzN
 KkxlbyBJemVuIChUcmFuZXB0b3JhKSA8bGVvLml6ZW5AZ21haWwuY29tPsKTBBMWCgA7FiEE
 HYMKC85GcJ4gOyb8dk5I6kgiGDMFAmWcPB8CGwMFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcC
 F4AACgkQdk5I6kgiGDOnGAEA+oJFwblAblnhK+T5a5EuEbXMTZG4FkYTYz0VmjJ0NHIA/Rn9
 ZE9+EEsH8fmT0hRJSiM3+zbkwQJA9gVVYAek9kMKzjgEZZw8HxIKKwYBBAGXVQEFAQEHQDes
 4thejF9AU2rkGuDuut3CQYwB4SVpI4EzU8uvPJgfAwEIB8J4BBgWCgAgFiEEHYMKC85GcJ4g
 Oyb8dk5I6kgiGDMFAmWcPB8CGwwACgkQdk5I6kgiGDOv3QD+PLXrL0Ihk675Ip5FG+VJOodN
 6e+5n3iYC6wJ75eqG3EA/1nCywoGXlCYuzXgq3el6NOn+8awwaXcTVJFzZCRbe8M
In-Reply-To: <20240709183434.10114-1-gseanmcg@gmail.com>
Subject: Re: [FFmpeg-devel] [PATCHv3] swscale: prevent undefined behaviour
 in the PUTRGBA macro
X-BeenThere: ffmpeg-devel@ffmpeg.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org>
List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe>
List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel>
List-Post: <mailto:ffmpeg-devel@ffmpeg.org>
List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help>
List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe>
Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="us-ascii"; Format="flowed"
Errors-To: ffmpeg-devel-bounces@ffmpeg.org
Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org>
Archived-At: <https://master.gitmailbox.com/ffmpegdev/81b76fa0-6eb3-4619-8878-488bc8886448@gmail.com/>
List-Archive: <https://master.gitmailbox.com/ffmpegdev/>
List-Post: <mailto:ffmpegdev@gitmailbox.com>

On 7/9/24 2:34 PM, Sean McGovern wrote:
> For even small values of 'asrc', shifting them by 24 bits or more
> will cause arithmetic overflow and be caught by
> GCC's undefined behaviour sanitizer.
> 
> Ensure the values do not overflow by up-casting the bracketed
> expressions involving 'asrc' to int32_t.
> ---
>   libswscale/yuv2rgb.c | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/libswscale/yuv2rgb.c b/libswscale/yuv2rgb.c
> index 977eb3a7dd..ac0b811f61 100644
> --- a/libswscale/yuv2rgb.c
> +++ b/libswscale/yuv2rgb.c
> @@ -100,9 +100,9 @@ const int *sws_getCoefficients(int colorspace)
>   
>   #define PUTRGBA(dst, ysrc, asrc, i, abase)                              \
>       Y              = ysrc[2 * i];                                       \
> -    dst[2 * i]     = r[Y] + g[Y] + b[Y] + (asrc[2 * i]     << abase);   \
> +    dst[2 * i]     = r[Y] + g[Y] + b[Y] + ((int32_t)(asrc[2 * i])     << abase);   \
>       Y              = ysrc[2 * i + 1];                                   \
> -    dst[2 * i + 1] = r[Y] + g[Y] + b[Y] + (asrc[2 * i + 1] << abase);
> +    dst[2 * i + 1] = r[Y] + g[Y] + b[Y] + ((int32_t)(asrc[2 * i + 1]) << abase);
>   
>   #define PUTRGB48(dst, src, asrc, i, abase)          \
>       Y                = src[ 2 * i];                 \

Are these able to be negative? If not, it may be wise to cast to 
uint32_t instead as left shifting a negative integer is UB.

- Leo Izen (Traneptora)
_______________________________________________
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".