Re: [PATCH] tipc: fix -Wstringop-truncation warnings

From: Ying Xue
Date: Fri Nov 13 2020 - 07:26:28 EST


On 11/12/20 5:34 PM, Kang Wenlin wrote:
> From: Wenlin Kang <wenlin.kang@xxxxxxxxxxxxx>
>
> Replace strncpy() with strscpy(), fixes the following warning:
>
> In function 'bearer_name_validate',
> inlined from 'tipc_enable_bearer' at net/tipc/bearer.c:246:7:
> net/tipc/bearer.c:141:2: warning: 'strncpy' specified bound 32 equals destination size [-Wstringop-truncation]
> strncpy(name_copy, name, TIPC_MAX_BEARER_NAME);
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> Signed-off-by: Wenlin Kang <wenlin.kang@xxxxxxxxxxxxx>

Acked-by: Ying Xue <ying.xue@xxxxxxxxxxxxx>

> ---
> net/tipc/bearer.c | 5 +----
> 1 file changed, 1 insertion(+), 4 deletions(-)
>
> diff --git a/net/tipc/bearer.c b/net/tipc/bearer.c
> index 650414110452..2241d5a38f7b 100644
> --- a/net/tipc/bearer.c
> +++ b/net/tipc/bearer.c
> @@ -139,10 +139,7 @@ static int bearer_name_validate(const char *name,
> u32 if_len;
>
> /* copy bearer name & ensure length is OK */
> - name_copy[TIPC_MAX_BEARER_NAME - 1] = 0;
> - /* need above in case non-Posix strncpy() doesn't pad with nulls */
> - strncpy(name_copy, name, TIPC_MAX_BEARER_NAME);
> - if (name_copy[TIPC_MAX_BEARER_NAME - 1] != 0)
> + if (strscpy(name_copy, name, TIPC_MAX_BEARER_NAME) < 0)
> return 0;
>
> /* ensure all component parts of bearer name are present */
>