|
|
Message-ID: <20240601023429.GJ10433@brightrain.aerifal.cx>
Date: Fri, 31 May 2024 22:34:30 -0400
From: Rich Felker <dalias@...c.org>
To: Ismael Luceno <ismael@...ev.co.uk>
Cc: musl@...ts.openwall.com
Subject: Re: [PATCH] ioctl: Fix implicit constant conversion overflow
On Sat, Jun 01, 2024 at 03:03:25AM +0200, Ismael Luceno wrote:
> The last parameter (result of sizeof) to _IOC in _IOR/_IOW/_IOWR causes
> the underlying expression's value to be promoted to size_t. Casting it
> to int resolves the issue.
>
> Signed-off-by: Ismael Luceno <ismael@...ev.co.uk>
> ---
> arch/generic/bits/ioctl.h | 6 +++---
> arch/mips/bits/ioctl.h | 6 +++---
> arch/mipsn32/bits/ioctl.h | 6 +++---
> arch/powerpc/bits/ioctl.h | 6 +++---
> arch/powerpc64/bits/ioctl.h | 6 +++---
> arch/sh/bits/ioctl.h | 6 +++---
> 6 files changed, 18 insertions(+), 18 deletions(-)
>
> diff --git a/arch/generic/bits/ioctl.h b/arch/generic/bits/ioctl.h
> index 60ae8b850b17..16541d547f68 100644
> --- a/arch/generic/bits/ioctl.h
> +++ b/arch/generic/bits/ioctl.h
> @@ -4,9 +4,9 @@
> #define _IOC_READ 2U
>
> #define _IO(a,b) _IOC(_IOC_NONE,(a),(b),0)
> -#define _IOW(a,b,c) _IOC(_IOC_WRITE,(a),(b),sizeof(c))
> -#define _IOR(a,b,c) _IOC(_IOC_READ,(a),(b),sizeof(c))
> -#define _IOWR(a,b,c) _IOC(_IOC_READ|_IOC_WRITE,(a),(b),sizeof(c))
> +#define _IOW(a,b,c) _IOC(_IOC_WRITE,(a),(b),(int)sizeof(c))
> +#define _IOR(a,b,c) _IOC(_IOC_READ,(a),(b),(int)sizeof(c))
> +#define _IOWR(a,b,c) _IOC(_IOC_READ|_IOC_WRITE,(a),(b),(int)sizeof(c))
I don't see how this helps with the warning you're trying to suppress,
since _IOC_{READ,WRITE} already have unsigned type. If you changed
that, you would then have *real overflows* (undefined behavior)
instead of the well-defined, valid implicit conversions -Werror is
complaining about.
There may be a way to improve on the situation here but it's not so
simple.
Rich
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.