netfilter: ipset: refactor deprecated strncpy
authorJustin Stitt <justinstitt@google.com>
Wed, 9 Aug 2023 01:06:04 +0000 (01:06 +0000)
committerFlorian Westphal <fw@strlen.de>
Tue, 22 Aug 2023 13:13:20 +0000 (15:13 +0200)
Use `strscpy_pad` instead of `strncpy`.

Link: https://github.com/KSPP/linux/issues/90
Cc: linux-hardening@vger.kernel.org
Signed-off-by: Justin Stitt <justinstitt@google.com>
Signed-off-by: Florian Westphal <fw@strlen.de>
net/netfilter/ipset/ip_set_core.c

index 0b68e2e..e564b51 100644 (file)
@@ -872,7 +872,7 @@ ip_set_name_byindex(struct net *net, ip_set_id_t index, char *name)
        BUG_ON(!set);
 
        read_lock_bh(&ip_set_ref_lock);
-       strncpy(name, set->name, IPSET_MAXNAMELEN);
+       strscpy_pad(name, set->name, IPSET_MAXNAMELEN);
        read_unlock_bh(&ip_set_ref_lock);
 }
 EXPORT_SYMBOL_GPL(ip_set_name_byindex);
@@ -1326,7 +1326,7 @@ static int ip_set_rename(struct sk_buff *skb, const struct nfnl_info *info,
                        goto out;
                }
        }
-       strncpy(set->name, name2, IPSET_MAXNAMELEN);
+       strscpy_pad(set->name, name2, IPSET_MAXNAMELEN);
 
 out:
        write_unlock_bh(&ip_set_ref_lock);
@@ -1380,9 +1380,9 @@ static int ip_set_swap(struct sk_buff *skb, const struct nfnl_info *info,
                return -EBUSY;
        }
 
-       strncpy(from_name, from->name, IPSET_MAXNAMELEN);
-       strncpy(from->name, to->name, IPSET_MAXNAMELEN);
-       strncpy(to->name, from_name, IPSET_MAXNAMELEN);
+       strscpy_pad(from_name, from->name, IPSET_MAXNAMELEN);
+       strscpy_pad(from->name, to->name, IPSET_MAXNAMELEN);
+       strscpy_pad(to->name, from_name, IPSET_MAXNAMELEN);
 
        swap(from->ref, to->ref);
        ip_set(inst, from_id) = to;