mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-28 07:54:36 -05:00
ipv6: ip6_gre: replace strcpy with strscpy for tunnel name
Replace the strcpy() call that copies the device name into tunnel->parms.name with strscpy(), to avoid potential overflow and guarantee NULL termination. This uses the two-argument form of strscpy(), where the destination size is inferred from the array type. Destination is tunnel->parms.name (size IFNAMSIZ). Tested in QEMU (Alpine rootfs): - Created IPv6 GRE tunnels over loopback - Assigned overlay IPv6 addresses - Verified bidirectional ping through the tunnel - Changed tunnel parameters at runtime (`ip -6 tunnel change`) Signed-off-by: Miguel García <miguelgarciaroman8@gmail.com> Link: https://patch.msgid.link/20250818220203.899338-1-miguelgarciaroman8@gmail.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
9efd5152e3
commit
09bde6fdcd
@@ -329,9 +329,9 @@ static struct ip6_tnl *ip6gre_tunnel_locate(struct net *net,
|
||||
if (parms->name[0]) {
|
||||
if (!dev_valid_name(parms->name))
|
||||
return NULL;
|
||||
strscpy(name, parms->name, IFNAMSIZ);
|
||||
strscpy(name, parms->name);
|
||||
} else {
|
||||
strcpy(name, "ip6gre%d");
|
||||
strscpy(name, "ip6gre%d");
|
||||
}
|
||||
dev = alloc_netdev(sizeof(*t), name, NET_NAME_UNKNOWN,
|
||||
ip6gre_tunnel_setup);
|
||||
@@ -1469,7 +1469,7 @@ static int ip6gre_tunnel_init_common(struct net_device *dev)
|
||||
tunnel = netdev_priv(dev);
|
||||
|
||||
tunnel->dev = dev;
|
||||
strcpy(tunnel->parms.name, dev->name);
|
||||
strscpy(tunnel->parms.name, dev->name);
|
||||
|
||||
ret = dst_cache_init(&tunnel->dst_cache, GFP_KERNEL);
|
||||
if (ret)
|
||||
@@ -1529,7 +1529,7 @@ static void ip6gre_fb_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);
|
||||
|
||||
tunnel->hlen = sizeof(struct ipv6hdr) + 4;
|
||||
}
|
||||
@@ -1842,7 +1842,7 @@ static int ip6erspan_tap_init(struct net_device *dev)
|
||||
tunnel = netdev_priv(dev);
|
||||
|
||||
tunnel->dev = dev;
|
||||
strcpy(tunnel->parms.name, dev->name);
|
||||
strscpy(tunnel->parms.name, dev->name);
|
||||
|
||||
ret = dst_cache_init(&tunnel->dst_cache, GFP_KERNEL);
|
||||
if (ret)
|
||||
|
||||
Reference in New Issue
Block a user