]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net/ipv4: net: prefer strscpy over strcpy
authorHongbo Li <lihongbo22@huawei.com>
Wed, 28 Aug 2024 12:32:24 +0000 (20:32 +0800)
committerJakub Kicinski <kuba@kernel.org>
Thu, 29 Aug 2024 19:33:14 +0000 (12:33 -0700)
The deprecated helper strcpy() performs no bounds checking on the
destination buffer. This could result in linear overflows beyond
the end of the buffer, leading to all kinds of misbehaviors.
The safe replacement is strscpy() [1].

Link: https://www.kernel.org/doc/html/latest/process/deprecated.html#strcpy
Signed-off-by: Hongbo Li <lihongbo22@huawei.com>
Link: https://patch.msgid.link/20240828123224.3697672-7-lihongbo22@huawei.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ipv4/ip_tunnel.c
net/ipv4/netfilter/arp_tables.c
net/ipv4/netfilter/ip_tables.c

index 5cffad42fe8ca65817e6b5676be8de56d484e97e..0cd2f3de100c380cb75ddace0c7c9b0a808ac7b8 100644 (file)
@@ -1326,7 +1326,7 @@ int ip_tunnel_init(struct net_device *dev)
 
        tunnel->dev = dev;
        tunnel->net = dev_net(dev);
-       strcpy(tunnel->parms.name, dev->name);
+       strscpy(tunnel->parms.name, dev->name);
        iph->version            = 4;
        iph->ihl                = 5;
 
index 14365b20f1c5c09964dd7024060116737f22cb63..42c34e8952da7e7f4b0c1ad03bab6d23fff03070 100644 (file)
@@ -826,7 +826,7 @@ static int get_info(struct net *net, void __user *user, const int *len)
                       sizeof(info.underflow));
                info.num_entries = private->number;
                info.size = private->size;
-               strcpy(info.name, name);
+               strscpy(info.name, name);
 
                if (copy_to_user(user, &info, *len) != 0)
                        ret = -EFAULT;
index fe89a056eb06c43743b2d7449e59f4e9360ba223..97e754ddc155725640d57648af7dc829d8624551 100644 (file)
@@ -981,7 +981,7 @@ static int get_info(struct net *net, void __user *user, const int *len)
                       sizeof(info.underflow));
                info.num_entries = private->number;
                info.size = private->size;
-               strcpy(info.name, name);
+               strscpy(info.name, name);
 
                if (copy_to_user(user, &info, *len) != 0)
                        ret = -EFAULT;