OSDN Git Service

netfilter: nft_osf: refactor deprecated strncpy
authorJustin Stitt <justinstitt@google.com>
Wed, 9 Aug 2023 01:06:08 +0000 (01:06 +0000)
committerFlorian Westphal <fw@strlen.de>
Tue, 22 Aug 2023 13:13:21 +0000 (15:13 +0200)
Use `strscpy_pad` over `strncpy` for NUL-terminated strings.

We can also drop the + 1 from `NFT_OSF_MAXGENRELEN + 1` since `strscpy`
will guarantee NUL-termination.

Signed-off-by: Justin Stitt <justinstitt@google.com>
Signed-off-by: Florian Westphal <fw@strlen.de>
net/netfilter/nft_osf.c

index 70820c6..7f61506 100644 (file)
@@ -23,7 +23,7 @@ static void nft_osf_eval(const struct nft_expr *expr, struct nft_regs *regs,
        struct nft_osf *priv = nft_expr_priv(expr);
        u32 *dest = &regs->data[priv->dreg];
        struct sk_buff *skb = pkt->skb;
-       char os_match[NFT_OSF_MAXGENRELEN + 1];
+       char os_match[NFT_OSF_MAXGENRELEN];
        const struct tcphdr *tcp;
        struct nf_osf_data data;
        struct tcphdr _tcph;
@@ -45,7 +45,7 @@ static void nft_osf_eval(const struct nft_expr *expr, struct nft_regs *regs,
        }
 
        if (!nf_osf_find(skb, nf_osf_fingers, priv->ttl, &data)) {
-               strncpy((char *)dest, "unknown", NFT_OSF_MAXGENRELEN);
+               strscpy_pad((char *)dest, "unknown", NFT_OSF_MAXGENRELEN);
        } else {
                if (priv->flags & NFT_OSF_F_VERSION)
                        snprintf(os_match, NFT_OSF_MAXGENRELEN, "%s:%s",
@@ -53,7 +53,7 @@ static void nft_osf_eval(const struct nft_expr *expr, struct nft_regs *regs,
                else
                        strscpy(os_match, data.genre, NFT_OSF_MAXGENRELEN);
 
-               strncpy((char *)dest, os_match, NFT_OSF_MAXGENRELEN);
+               strscpy_pad((char *)dest, os_match, NFT_OSF_MAXGENRELEN);
        }
 }