Re: [PATCH v2 2/2] auxdisplay: panel: avoid gcc 8's Wstringop-truncation warning

From: Kees Cook
Date: Wed Aug 01 2018 - 14:47:51 EST


On Wed, Aug 1, 2018 at 10:58 AM, Miguel Ojeda
<miguel.ojeda.sandonis@xxxxxxxxx> wrote:
> Let gcc know it is not meant to be NUL-terminated by annotating with
> the new __nonstring variable attribute; and remove the comment since it
> conveys the same information.
>
> Cc: Willy Tarreau <w@xxxxxx>
> Cc: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx>
> Cc: Martin Sebor <msebor@xxxxxxxxx>
> Signed-off-by: Miguel Ojeda <miguel.ojeda.sandonis@xxxxxxxxx>
> ---
> drivers/auxdisplay/panel.c | 7 +++----
> 1 file changed, 3 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/auxdisplay/panel.c b/drivers/auxdisplay/panel.c
> index 3b25a643058c..21b9b2f2470a 100644
> --- a/drivers/auxdisplay/panel.c
> +++ b/drivers/auxdisplay/panel.c
> @@ -155,10 +155,9 @@ struct logical_input {
> int release_data;
> } std;
> struct { /* valid when type == INPUT_TYPE_KBD */
> - /* strings can be non null-terminated */
> - char press_str[sizeof(void *) + sizeof(int)];
> - char repeat_str[sizeof(void *) + sizeof(int)];
> - char release_str[sizeof(void *) + sizeof(int)];
> + char press_str[sizeof(void *) + sizeof(int)] __nonstring;
> + char repeat_str[sizeof(void *) + sizeof(int)] __nonstring;
> + char release_str[sizeof(void *) + sizeof(int)] __nonstring;
> } kbd;
> } u;
> };

If it's not a string, why not use "u8" instead of "char"? Does the
warning persist?

-Kees

--
Kees Cook
Pixel Security