* [PATCH 2.6]: IPv4: strcpy -> strlcpy @ 2003-11-27 14:04 Felipe Alfaro Solana 2003-11-27 14:21 ` David Roundy 0 siblings, 1 reply; 8+ messages in thread From: Felipe Alfaro Solana @ 2003-11-27 14:04 UTC (permalink / raw) To: davem; +Cc: netdev, Linux Kernel Mailinglist [-- Attachment #1: Type: text/plain, Size: 133 bytes --] Hi! Attached is a patch to replace strcpy() calls with strlcpy() for IPv4. Compiled and tested. Please, consider applying. Thanks! [-- Attachment #2: strlcpy-ipv4.patch --] [-- Type: text/x-patch, Size: 8929 bytes --] diff -uNr linux-2.6.0-test11.orig/net/core/dev.c linux-2.6.0-test11/net/core/dev.c --- linux-2.6.0-test11.orig/net/core/dev.c 2003-11-26 21:44:11.000000000 +0100 +++ linux-2.6.0-test11/net/core/dev.c 2003-11-27 13:21:12.791315993 +0100 @@ -335,7 +335,7 @@ for (i = 0; i < NETDEV_BOOT_SETUP_MAX; i++) { if (s[i].name[0] == '\0' || s[i].name[0] == ' ') { memset(s[i].name, 0, sizeof(s[i].name)); - strcpy(s[i].name, name); + strlcpy(s[i].name, name, sizeof(s[i].map)); memcpy(&s[i].map, map, sizeof(s[i].map)); break; } @@ -653,7 +653,7 @@ for (i = 0; i < 100; i++) { snprintf(buf, sizeof(buf), name, i); if (!__dev_get_by_name(buf)) { - strcpy(dev->name, buf); + strlcpy(dev->name, buf, sizeof(dev->name)); return i; } } @@ -1773,7 +1773,7 @@ return -ENODEV; } - strcpy(ifr.ifr_name, dev->name); + strlcpy(ifr.ifr_name, dev->name, sizeof(ifr.ifr_name)); read_unlock(&dev_base_lock); if (copy_to_user(arg, &ifr, sizeof(struct ifreq))) diff -uNr linux-2.6.0-test11.orig/net/core/sock.c linux-2.6.0-test11/net/core/sock.c --- linux-2.6.0-test11.orig/net/core/sock.c 2003-11-26 21:44:57.000000000 +0100 +++ linux-2.6.0-test11/net/core/sock.c 2003-11-27 13:22:22.150223793 +0100 @@ -157,7 +157,7 @@ static int warned; static char warncomm[16]; if (strcmp(warncomm, current->comm) && warned < 5) { - strcpy(warncomm, current->comm); + strlcpy(warncomm, current->comm, sizeof(warncomm)); printk(KERN_WARNING "process `%s' is using obsolete " "%s SO_BSDCOMPAT\n", warncomm, name); warned++; diff -uNr linux-2.6.0-test11.orig/net/ipv4/devinet.c linux-2.6.0-test11/net/ipv4/devinet.c --- linux-2.6.0-test11.orig/net/ipv4/devinet.c 2003-11-26 21:43:25.000000000 +0100 +++ linux-2.6.0-test11/net/ipv4/devinet.c 2003-11-27 13:31:43.971262502 +0100 @@ -731,9 +731,9 @@ break; memset(&ifr, 0, sizeof(struct ifreq)); if (ifa->ifa_label) - strcpy(ifr.ifr_name, ifa->ifa_label); + strlcpy(ifr.ifr_name, ifa->ifa_label, sizeof(ifr.ifr_name)); else - strcpy(ifr.ifr_name, dev->name); + strlcpy(ifr.ifr_name, dev->name, sizeof(ifr.ifr_name)); (*(struct sockaddr_in *)&ifr.ifr_addr).sin_family = AF_INET; (*(struct sockaddr_in *)&ifr.ifr_addr).sin_addr.s_addr = diff -uNr linux-2.6.0-test11.orig/net/ipv4/ipconfig.c linux-2.6.0-test11/net/ipv4/ipconfig.c --- linux-2.6.0-test11.orig/net/ipv4/ipconfig.c 2003-11-26 21:42:55.000000000 +0100 +++ linux-2.6.0-test11/net/ipv4/ipconfig.c 2003-11-27 13:32:06.904650818 +0100 @@ -299,7 +299,7 @@ int err; memset(&ir, 0, sizeof(ir)); - strcpy(ir.ifr_ifrn.ifrn_name, ic_dev->name); + strlcpy(ir.ifr_ifrn.ifrn_name, ic_dev->name, sizeof(ir.ifr_ifrn.ifrn_name)); set_sockaddr(sin, ic_myaddr, 0); if ((err = ic_dev_ioctl(SIOCSIFADDR, &ir)) < 0) { printk(KERN_ERR "IP-Config: Unable to set interface address (%d).\n", err); diff -uNr linux-2.6.0-test11.orig/net/ipv4/ip_gre.c linux-2.6.0-test11/net/ipv4/ip_gre.c --- linux-2.6.0-test11.orig/net/ipv4/ip_gre.c 2003-11-26 21:44:59.000000000 +0100 +++ linux-2.6.0-test11/net/ipv4/ip_gre.c 2003-11-27 13:30:13.342198122 +0100 @@ -1163,7 +1163,7 @@ iph = &tunnel->parms.iph; tunnel->dev = dev; - strcpy(tunnel->parms.name, dev->name); + strlcpy(tunnel->parms.name, dev->name, sizeof(tunnel->parms.name)); memcpy(dev->dev_addr, &tunnel->parms.iph.saddr, 4); memcpy(dev->broadcast, &tunnel->parms.iph.daddr, 4); @@ -1227,7 +1227,7 @@ struct iphdr *iph = &tunnel->parms.iph; tunnel->dev = dev; - strcpy(tunnel->parms.name, dev->name); + strlcpy(tunnel->parms.name, dev->name, sizeof(tunnel->parms.name)); iph->version = 4; iph->protocol = IPPROTO_GRE; diff -uNr linux-2.6.0-test11.orig/net/ipv4/ipip.c linux-2.6.0-test11/net/ipv4/ipip.c --- linux-2.6.0-test11.orig/net/ipv4/ipip.c 2003-11-26 21:46:10.000000000 +0100 +++ linux-2.6.0-test11/net/ipv4/ipip.c 2003-11-27 13:30:42.476717090 +0100 @@ -815,7 +815,7 @@ iph = &tunnel->parms.iph; tunnel->dev = dev; - strcpy(tunnel->parms.name, dev->name); + strlcpy(tunnel->parms.name, dev->name, sizeof(tunnel->parms.name)); memcpy(dev->dev_addr, &tunnel->parms.iph.saddr, 4); memcpy(dev->broadcast, &tunnel->parms.iph.daddr, 4); @@ -853,7 +853,7 @@ struct iphdr *iph = &tunnel->parms.iph; tunnel->dev = dev; - strcpy(tunnel->parms.name, dev->name); + strlcpy(tunnel->parms.name, dev->name, sizeof(tunnel->parms.name)); iph->version = 4; iph->protocol = IPPROTO_IPIP; diff -uNr linux-2.6.0-test11.orig/net/ipv4/ipvs/ip_vs_ctl.c linux-2.6.0-test11/net/ipv4/ipvs/ip_vs_ctl.c --- linux-2.6.0-test11.orig/net/ipv4/ipvs/ip_vs_ctl.c 2003-11-26 21:45:33.000000000 +0100 +++ linux-2.6.0-test11/net/ipv4/ipvs/ip_vs_ctl.c 2003-11-27 13:36:43.776537082 +0100 @@ -1918,7 +1918,7 @@ dst->addr = src->addr; dst->port = src->port; dst->fwmark = src->fwmark; - strcpy(dst->sched_name, src->scheduler->name); + strlcpy(dst->sched_name, src->scheduler->name, sizeof(dst->sched_name)); dst->flags = src->flags; dst->timeout = src->timeout / HZ; dst->netmask = src->netmask; @@ -2163,12 +2163,12 @@ memset(&d, 0, sizeof(d)); if (ip_vs_sync_state & IP_VS_STATE_MASTER) { d[0].state = IP_VS_STATE_MASTER; - strcpy(d[0].mcast_ifn, ip_vs_master_mcast_ifn); + strlcpy(d[0].mcast_ifn, ip_vs_master_mcast_ifn, sizeof(d[0].mcast_ifn)); d[0].syncid = ip_vs_master_syncid; } if (ip_vs_sync_state & IP_VS_STATE_BACKUP) { d[1].state = IP_VS_STATE_BACKUP; - strcpy(d[1].mcast_ifn, ip_vs_backup_mcast_ifn); + strlcpy(d[1].mcast_ifn, ip_vs_backup_mcast_ifn, sizeof(d[1].mcast_ifn)); d[1].syncid = ip_vs_backup_syncid; } if (copy_to_user(user, &d, sizeof(d)) != 0) diff -uNr linux-2.6.0-test11.orig/net/ipv4/ipvs/ip_vs_sync.c linux-2.6.0-test11/net/ipv4/ipvs/ip_vs_sync.c --- linux-2.6.0-test11.orig/net/ipv4/ipvs/ip_vs_sync.c 2003-11-26 21:42:47.000000000 +0100 +++ linux-2.6.0-test11/net/ipv4/ipvs/ip_vs_sync.c 2003-11-27 13:34:51.218619748 +0100 @@ -854,10 +854,10 @@ ip_vs_sync_state |= state; if (state == IP_VS_STATE_MASTER) { - strcpy(ip_vs_master_mcast_ifn, mcast_ifn); + strlcpy(ip_vs_master_mcast_ifn, mcast_ifn, sizeof(ip_vs_master_mcast_ifn)); ip_vs_master_syncid = syncid; } else { - strcpy(ip_vs_backup_mcast_ifn, mcast_ifn); + strlcpy(ip_vs_backup_mcast_ifn, mcast_ifn, sizeof(ip_vs_backup_mcast_ifn)); ip_vs_backup_syncid = syncid; } diff -uNr linux-2.6.0-test11.orig/net/ipv4/netfilter/arp_tables.c linux-2.6.0-test11/net/ipv4/netfilter/arp_tables.c --- linux-2.6.0-test11.orig/net/ipv4/netfilter/arp_tables.c 2003-11-26 21:45:10.000000000 +0100 +++ linux-2.6.0-test11/net/ipv4/netfilter/arp_tables.c 2003-11-27 13:23:24.284474101 +0100 @@ -1086,7 +1086,7 @@ sizeof(info.underflow)); info.num_entries = t->private->number; info.size = t->private->size; - strcpy(info.name, name); + strlcpy(info.name, name, sizeof(info.name)); if (copy_to_user(user, &info, *len) != 0) ret = -EFAULT; diff -uNr linux-2.6.0-test11.orig/net/ipv4/netfilter/ipchains_core.c linux-2.6.0-test11/net/ipv4/netfilter/ipchains_core.c --- linux-2.6.0-test11.orig/net/ipv4/netfilter/ipchains_core.c 2003-11-26 21:45:26.000000000 +0100 +++ linux-2.6.0-test11/net/ipv4/netfilter/ipchains_core.c 2003-11-27 13:28:39.884442527 +0100 @@ -1173,7 +1173,7 @@ = kmalloc(SIZEOF_STRUCT_IP_CHAIN, GFP_KERNEL); if (label == NULL) panic("Can't kmalloc for firewall chains.\n"); - strcpy(label->label,name); + strlcpy(label->label, name, sizeof(label->name)); label->next = NULL; label->chain = NULL; label->refcount = ref; diff -uNr linux-2.6.0-test11.orig/net/ipv4/netfilter/ip_queue.c linux-2.6.0-test11/net/ipv4/netfilter/ip_queue.c --- linux-2.6.0-test11.orig/net/ipv4/netfilter/ip_queue.c 2003-11-26 21:46:12.000000000 +0100 +++ linux-2.6.0-test11/net/ipv4/netfilter/ip_queue.c 2003-11-27 13:29:19.651041898 +0100 @@ -235,12 +235,12 @@ pmsg->hw_protocol = entry->skb->protocol; if (entry->info->indev) - strcpy(pmsg->indev_name, entry->info->indev->name); + strlcpy(pmsg->indev_name, entry->info->indev->name, sizeof(pmsg->indev_name)); else pmsg->indev_name[0] = '\0'; if (entry->info->outdev) - strcpy(pmsg->outdev_name, entry->info->outdev->name); + strlcpy(pmsg->outdev_name, entry->info->outdev->name, sizeof(pmsg->outdev_name)); else pmsg->outdev_name[0] = '\0'; diff -uNr linux-2.6.0-test11.orig/net/ipv4/netfilter/ip_tables.c linux-2.6.0-test11/net/ipv4/netfilter/ip_tables.c --- linux-2.6.0-test11.orig/net/ipv4/netfilter/ip_tables.c 2003-11-26 21:43:25.000000000 +0100 +++ linux-2.6.0-test11/net/ipv4/netfilter/ip_tables.c 2003-11-27 13:23:11.366451326 +0100 @@ -1277,7 +1277,7 @@ sizeof(info.underflow)); info.num_entries = t->private->number; info.size = t->private->size; - strcpy(info.name, name); + strlcpy(info.name, name, sizeof(info.name)); if (copy_to_user(user, &info, *len) != 0) ret = -EFAULT; ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2.6]: IPv4: strcpy -> strlcpy 2003-11-27 14:04 [PATCH 2.6]: IPv4: strcpy -> strlcpy Felipe Alfaro Solana @ 2003-11-27 14:21 ` David Roundy 2003-11-27 15:25 ` Felipe Alfaro Solana 0 siblings, 1 reply; 8+ messages in thread From: David Roundy @ 2003-11-27 14:21 UTC (permalink / raw) To: Linux Kernel Mailinglist On Thu, Nov 27, 2003 at 03:04:42PM +0100, Felipe Alfaro Solana wrote: > diff -uNr linux-2.6.0-test11.orig/net/core/dev.c linux-2.6.0-test11/net/core/dev.c > +++ linux-2.6.0-test11/net/core/dev.c 2003-11-27 13:21:12.791315993 +0100 > @@ -335,7 +335,7 @@ > for (i = 0; i < NETDEV_BOOT_SETUP_MAX; i++) { > if (s[i].name[0] == '\0' || s[i].name[0] == ' ') { > memset(s[i].name, 0, sizeof(s[i].name)); > - strcpy(s[i].name, name); > + strlcpy(s[i].name, name, sizeof(s[i].map)); ^^^ I believe this should be name. -- David Roundy http://www.abridgegame.org ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2.6]: IPv4: strcpy -> strlcpy 2003-11-27 14:21 ` David Roundy @ 2003-11-27 15:25 ` Felipe Alfaro Solana 2003-11-27 20:48 ` Timo Kamph 0 siblings, 1 reply; 8+ messages in thread From: Felipe Alfaro Solana @ 2003-11-27 15:25 UTC (permalink / raw) To: David Roundy; +Cc: Linux Kernel Mailinglist, davem, netdev [-- Attachment #1: Type: text/plain, Size: 725 bytes --] On Thu, 2003-11-27 at 15:21, David Roundy wrote: > On Thu, Nov 27, 2003 at 03:04:42PM +0100, Felipe Alfaro Solana wrote: > > diff -uNr linux-2.6.0-test11.orig/net/core/dev.c linux-2.6.0-test11/net/core/dev.c > > +++ linux-2.6.0-test11/net/core/dev.c 2003-11-27 13:21:12.791315993 +0100 > > @@ -335,7 +335,7 @@ > > for (i = 0; i < NETDEV_BOOT_SETUP_MAX; i++) { > > if (s[i].name[0] == '\0' || s[i].name[0] == ' ') { > > memset(s[i].name, 0, sizeof(s[i].name)); > > - strcpy(s[i].name, name); > > + strlcpy(s[i].name, name, sizeof(s[i].map)); > ^^^ > I believe this should be name. Yes, you're right. Sorry, my fault. Corrected patch attached. Thanks! [-- Attachment #2: strlcpy-ipv4.patch --] [-- Type: text/x-patch, Size: 8930 bytes --] diff -uNr linux-2.6.0-test11.orig/net/core/dev.c linux-2.6.0-test11/net/core/dev.c --- linux-2.6.0-test11.orig/net/core/dev.c 2003-11-26 21:44:11.000000000 +0100 +++ linux-2.6.0-test11/net/core/dev.c 2003-11-27 13:21:12.791315993 +0100 @@ -335,7 +335,7 @@ for (i = 0; i < NETDEV_BOOT_SETUP_MAX; i++) { if (s[i].name[0] == '\0' || s[i].name[0] == ' ') { memset(s[i].name, 0, sizeof(s[i].name)); - strcpy(s[i].name, name); + strlcpy(s[i].name, name, sizeof(s[i].name)); memcpy(&s[i].map, map, sizeof(s[i].map)); break; } @@ -653,7 +653,7 @@ for (i = 0; i < 100; i++) { snprintf(buf, sizeof(buf), name, i); if (!__dev_get_by_name(buf)) { - strcpy(dev->name, buf); + strlcpy(dev->name, buf, sizeof(dev->name)); return i; } } @@ -1773,7 +1773,7 @@ return -ENODEV; } - strcpy(ifr.ifr_name, dev->name); + strlcpy(ifr.ifr_name, dev->name, sizeof(ifr.ifr_name)); read_unlock(&dev_base_lock); if (copy_to_user(arg, &ifr, sizeof(struct ifreq))) diff -uNr linux-2.6.0-test11.orig/net/core/sock.c linux-2.6.0-test11/net/core/sock.c --- linux-2.6.0-test11.orig/net/core/sock.c 2003-11-26 21:44:57.000000000 +0100 +++ linux-2.6.0-test11/net/core/sock.c 2003-11-27 13:22:22.150223793 +0100 @@ -157,7 +157,7 @@ static int warned; static char warncomm[16]; if (strcmp(warncomm, current->comm) && warned < 5) { - strcpy(warncomm, current->comm); + strlcpy(warncomm, current->comm, sizeof(warncomm)); printk(KERN_WARNING "process `%s' is using obsolete " "%s SO_BSDCOMPAT\n", warncomm, name); warned++; diff -uNr linux-2.6.0-test11.orig/net/ipv4/devinet.c linux-2.6.0-test11/net/ipv4/devinet.c --- linux-2.6.0-test11.orig/net/ipv4/devinet.c 2003-11-26 21:43:25.000000000 +0100 +++ linux-2.6.0-test11/net/ipv4/devinet.c 2003-11-27 13:31:43.971262502 +0100 @@ -731,9 +731,9 @@ break; memset(&ifr, 0, sizeof(struct ifreq)); if (ifa->ifa_label) - strcpy(ifr.ifr_name, ifa->ifa_label); + strlcpy(ifr.ifr_name, ifa->ifa_label, sizeof(ifr.ifr_name)); else - strcpy(ifr.ifr_name, dev->name); + strlcpy(ifr.ifr_name, dev->name, sizeof(ifr.ifr_name)); (*(struct sockaddr_in *)&ifr.ifr_addr).sin_family = AF_INET; (*(struct sockaddr_in *)&ifr.ifr_addr).sin_addr.s_addr = diff -uNr linux-2.6.0-test11.orig/net/ipv4/ipconfig.c linux-2.6.0-test11/net/ipv4/ipconfig.c --- linux-2.6.0-test11.orig/net/ipv4/ipconfig.c 2003-11-26 21:42:55.000000000 +0100 +++ linux-2.6.0-test11/net/ipv4/ipconfig.c 2003-11-27 13:32:06.904650818 +0100 @@ -299,7 +299,7 @@ int err; memset(&ir, 0, sizeof(ir)); - strcpy(ir.ifr_ifrn.ifrn_name, ic_dev->name); + strlcpy(ir.ifr_ifrn.ifrn_name, ic_dev->name, sizeof(ir.ifr_ifrn.ifrn_name)); set_sockaddr(sin, ic_myaddr, 0); if ((err = ic_dev_ioctl(SIOCSIFADDR, &ir)) < 0) { printk(KERN_ERR "IP-Config: Unable to set interface address (%d).\n", err); diff -uNr linux-2.6.0-test11.orig/net/ipv4/ip_gre.c linux-2.6.0-test11/net/ipv4/ip_gre.c --- linux-2.6.0-test11.orig/net/ipv4/ip_gre.c 2003-11-26 21:44:59.000000000 +0100 +++ linux-2.6.0-test11/net/ipv4/ip_gre.c 2003-11-27 13:30:13.342198122 +0100 @@ -1163,7 +1163,7 @@ iph = &tunnel->parms.iph; tunnel->dev = dev; - strcpy(tunnel->parms.name, dev->name); + strlcpy(tunnel->parms.name, dev->name, sizeof(tunnel->parms.name)); memcpy(dev->dev_addr, &tunnel->parms.iph.saddr, 4); memcpy(dev->broadcast, &tunnel->parms.iph.daddr, 4); @@ -1227,7 +1227,7 @@ struct iphdr *iph = &tunnel->parms.iph; tunnel->dev = dev; - strcpy(tunnel->parms.name, dev->name); + strlcpy(tunnel->parms.name, dev->name, sizeof(tunnel->parms.name)); iph->version = 4; iph->protocol = IPPROTO_GRE; diff -uNr linux-2.6.0-test11.orig/net/ipv4/ipip.c linux-2.6.0-test11/net/ipv4/ipip.c --- linux-2.6.0-test11.orig/net/ipv4/ipip.c 2003-11-26 21:46:10.000000000 +0100 +++ linux-2.6.0-test11/net/ipv4/ipip.c 2003-11-27 13:30:42.476717090 +0100 @@ -815,7 +815,7 @@ iph = &tunnel->parms.iph; tunnel->dev = dev; - strcpy(tunnel->parms.name, dev->name); + strlcpy(tunnel->parms.name, dev->name, sizeof(tunnel->parms.name)); memcpy(dev->dev_addr, &tunnel->parms.iph.saddr, 4); memcpy(dev->broadcast, &tunnel->parms.iph.daddr, 4); @@ -853,7 +853,7 @@ struct iphdr *iph = &tunnel->parms.iph; tunnel->dev = dev; - strcpy(tunnel->parms.name, dev->name); + strlcpy(tunnel->parms.name, dev->name, sizeof(tunnel->parms.name)); iph->version = 4; iph->protocol = IPPROTO_IPIP; diff -uNr linux-2.6.0-test11.orig/net/ipv4/ipvs/ip_vs_ctl.c linux-2.6.0-test11/net/ipv4/ipvs/ip_vs_ctl.c --- linux-2.6.0-test11.orig/net/ipv4/ipvs/ip_vs_ctl.c 2003-11-26 21:45:33.000000000 +0100 +++ linux-2.6.0-test11/net/ipv4/ipvs/ip_vs_ctl.c 2003-11-27 13:36:43.776537082 +0100 @@ -1918,7 +1918,7 @@ dst->addr = src->addr; dst->port = src->port; dst->fwmark = src->fwmark; - strcpy(dst->sched_name, src->scheduler->name); + strlcpy(dst->sched_name, src->scheduler->name, sizeof(dst->sched_name)); dst->flags = src->flags; dst->timeout = src->timeout / HZ; dst->netmask = src->netmask; @@ -2163,12 +2163,12 @@ memset(&d, 0, sizeof(d)); if (ip_vs_sync_state & IP_VS_STATE_MASTER) { d[0].state = IP_VS_STATE_MASTER; - strcpy(d[0].mcast_ifn, ip_vs_master_mcast_ifn); + strlcpy(d[0].mcast_ifn, ip_vs_master_mcast_ifn, sizeof(d[0].mcast_ifn)); d[0].syncid = ip_vs_master_syncid; } if (ip_vs_sync_state & IP_VS_STATE_BACKUP) { d[1].state = IP_VS_STATE_BACKUP; - strcpy(d[1].mcast_ifn, ip_vs_backup_mcast_ifn); + strlcpy(d[1].mcast_ifn, ip_vs_backup_mcast_ifn, sizeof(d[1].mcast_ifn)); d[1].syncid = ip_vs_backup_syncid; } if (copy_to_user(user, &d, sizeof(d)) != 0) diff -uNr linux-2.6.0-test11.orig/net/ipv4/ipvs/ip_vs_sync.c linux-2.6.0-test11/net/ipv4/ipvs/ip_vs_sync.c --- linux-2.6.0-test11.orig/net/ipv4/ipvs/ip_vs_sync.c 2003-11-26 21:42:47.000000000 +0100 +++ linux-2.6.0-test11/net/ipv4/ipvs/ip_vs_sync.c 2003-11-27 13:34:51.218619748 +0100 @@ -854,10 +854,10 @@ ip_vs_sync_state |= state; if (state == IP_VS_STATE_MASTER) { - strcpy(ip_vs_master_mcast_ifn, mcast_ifn); + strlcpy(ip_vs_master_mcast_ifn, mcast_ifn, sizeof(ip_vs_master_mcast_ifn)); ip_vs_master_syncid = syncid; } else { - strcpy(ip_vs_backup_mcast_ifn, mcast_ifn); + strlcpy(ip_vs_backup_mcast_ifn, mcast_ifn, sizeof(ip_vs_backup_mcast_ifn)); ip_vs_backup_syncid = syncid; } diff -uNr linux-2.6.0-test11.orig/net/ipv4/netfilter/arp_tables.c linux-2.6.0-test11/net/ipv4/netfilter/arp_tables.c --- linux-2.6.0-test11.orig/net/ipv4/netfilter/arp_tables.c 2003-11-26 21:45:10.000000000 +0100 +++ linux-2.6.0-test11/net/ipv4/netfilter/arp_tables.c 2003-11-27 13:23:24.284474101 +0100 @@ -1086,7 +1086,7 @@ sizeof(info.underflow)); info.num_entries = t->private->number; info.size = t->private->size; - strcpy(info.name, name); + strlcpy(info.name, name, sizeof(info.name)); if (copy_to_user(user, &info, *len) != 0) ret = -EFAULT; diff -uNr linux-2.6.0-test11.orig/net/ipv4/netfilter/ipchains_core.c linux-2.6.0-test11/net/ipv4/netfilter/ipchains_core.c --- linux-2.6.0-test11.orig/net/ipv4/netfilter/ipchains_core.c 2003-11-26 21:45:26.000000000 +0100 +++ linux-2.6.0-test11/net/ipv4/netfilter/ipchains_core.c 2003-11-27 13:28:39.884442527 +0100 @@ -1173,7 +1173,7 @@ = kmalloc(SIZEOF_STRUCT_IP_CHAIN, GFP_KERNEL); if (label == NULL) panic("Can't kmalloc for firewall chains.\n"); - strcpy(label->label,name); + strlcpy(label->label, name, sizeof(label->name)); label->next = NULL; label->chain = NULL; label->refcount = ref; diff -uNr linux-2.6.0-test11.orig/net/ipv4/netfilter/ip_queue.c linux-2.6.0-test11/net/ipv4/netfilter/ip_queue.c --- linux-2.6.0-test11.orig/net/ipv4/netfilter/ip_queue.c 2003-11-26 21:46:12.000000000 +0100 +++ linux-2.6.0-test11/net/ipv4/netfilter/ip_queue.c 2003-11-27 13:29:19.651041898 +0100 @@ -235,12 +235,12 @@ pmsg->hw_protocol = entry->skb->protocol; if (entry->info->indev) - strcpy(pmsg->indev_name, entry->info->indev->name); + strlcpy(pmsg->indev_name, entry->info->indev->name, sizeof(pmsg->indev_name)); else pmsg->indev_name[0] = '\0'; if (entry->info->outdev) - strcpy(pmsg->outdev_name, entry->info->outdev->name); + strlcpy(pmsg->outdev_name, entry->info->outdev->name, sizeof(pmsg->outdev_name)); else pmsg->outdev_name[0] = '\0'; diff -uNr linux-2.6.0-test11.orig/net/ipv4/netfilter/ip_tables.c linux-2.6.0-test11/net/ipv4/netfilter/ip_tables.c --- linux-2.6.0-test11.orig/net/ipv4/netfilter/ip_tables.c 2003-11-26 21:43:25.000000000 +0100 +++ linux-2.6.0-test11/net/ipv4/netfilter/ip_tables.c 2003-11-27 13:23:11.366451326 +0100 @@ -1277,7 +1277,7 @@ sizeof(info.underflow)); info.num_entries = t->private->number; info.size = t->private->size; - strcpy(info.name, name); + strlcpy(info.name, name, sizeof(info.name)); if (copy_to_user(user, &info, *len) != 0) ret = -EFAULT; ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2.6]: IPv4: strcpy -> strlcpy 2003-11-27 15:25 ` Felipe Alfaro Solana @ 2003-11-27 20:48 ` Timo Kamph 2003-11-27 22:09 ` Felipe Alfaro Solana 0 siblings, 1 reply; 8+ messages in thread From: Timo Kamph @ 2003-11-27 20:48 UTC (permalink / raw) To: Felipe Alfaro Solana; +Cc: linux-kernel On 27 Nov 2003 at 16:25, Felipe Alfaro Solana wrote: > --- linux-2.6.0-test11.orig/net/ipv4/netfilter/ipchains_core.c 2003-11-26 21:45:26.000000000 +0100 > +++ linux-2.6.0-test11/net/ipv4/netfilter/ipchains_core.c 2003-11-27 13:28:39.884442527 +0100 > @@ -1173,7 +1173,7 @@ > = kmalloc(SIZEOF_STRUCT_IP_CHAIN, GFP_KERNEL); > if (label == NULL) > panic("Can't kmalloc for firewall chains.\n"); > - strcpy(label->label,name); > + strlcpy(label->label, name, sizeof(label->name)); ^^^^^^ I guess this shoud be label->label, or am I wrong? Timo ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2.6]: IPv4: strcpy -> strlcpy 2003-11-27 20:48 ` Timo Kamph @ 2003-11-27 22:09 ` Felipe Alfaro Solana 2003-11-28 2:05 ` YOSHIFUJI Hideaki / 吉藤英明 2003-11-28 9:42 ` David Woodhouse 0 siblings, 2 replies; 8+ messages in thread From: Felipe Alfaro Solana @ 2003-11-27 22:09 UTC (permalink / raw) To: Timo Kamph; +Cc: Linux Kernel Mailinglist, netdev, davem [-- Attachment #1: Type: text/plain, Size: 438 bytes --] On Thu, 2003-11-27 at 21:48, Timo Kamph wrote: > > + strlcpy(label->label, name, sizeof(label->name)); > ^^^^^^ > I guess this shoud be label->label, or am I wrong? Oh my god! Two consecutive mistakes with the same patch! I should have some sleep... Here's the one with the typo corrected. Thanks for pointing it out. Sorry for resending this patch so many times. [-- Attachment #2: strlcpy-ipv4.patch --] [-- Type: text/x-patch, Size: 8931 bytes --] diff -uNr linux-2.6.0-test11.orig/net/core/dev.c linux-2.6.0-test11/net/core/dev.c --- linux-2.6.0-test11.orig/net/core/dev.c 2003-11-26 21:44:11.000000000 +0100 +++ linux-2.6.0-test11/net/core/dev.c 2003-11-27 13:21:12.791315993 +0100 @@ -335,7 +335,7 @@ for (i = 0; i < NETDEV_BOOT_SETUP_MAX; i++) { if (s[i].name[0] == '\0' || s[i].name[0] == ' ') { memset(s[i].name, 0, sizeof(s[i].name)); - strcpy(s[i].name, name); + strlcpy(s[i].name, name, sizeof(s[i].name)); memcpy(&s[i].map, map, sizeof(s[i].map)); break; } @@ -653,7 +653,7 @@ for (i = 0; i < 100; i++) { snprintf(buf, sizeof(buf), name, i); if (!__dev_get_by_name(buf)) { - strcpy(dev->name, buf); + strlcpy(dev->name, buf, sizeof(dev->name)); return i; } } @@ -1773,7 +1773,7 @@ return -ENODEV; } - strcpy(ifr.ifr_name, dev->name); + strlcpy(ifr.ifr_name, dev->name, sizeof(ifr.ifr_name)); read_unlock(&dev_base_lock); if (copy_to_user(arg, &ifr, sizeof(struct ifreq))) diff -uNr linux-2.6.0-test11.orig/net/core/sock.c linux-2.6.0-test11/net/core/sock.c --- linux-2.6.0-test11.orig/net/core/sock.c 2003-11-26 21:44:57.000000000 +0100 +++ linux-2.6.0-test11/net/core/sock.c 2003-11-27 13:22:22.150223793 +0100 @@ -157,7 +157,7 @@ static int warned; static char warncomm[16]; if (strcmp(warncomm, current->comm) && warned < 5) { - strcpy(warncomm, current->comm); + strlcpy(warncomm, current->comm, sizeof(warncomm)); printk(KERN_WARNING "process `%s' is using obsolete " "%s SO_BSDCOMPAT\n", warncomm, name); warned++; diff -uNr linux-2.6.0-test11.orig/net/ipv4/devinet.c linux-2.6.0-test11/net/ipv4/devinet.c --- linux-2.6.0-test11.orig/net/ipv4/devinet.c 2003-11-26 21:43:25.000000000 +0100 +++ linux-2.6.0-test11/net/ipv4/devinet.c 2003-11-27 13:31:43.971262502 +0100 @@ -731,9 +731,9 @@ break; memset(&ifr, 0, sizeof(struct ifreq)); if (ifa->ifa_label) - strcpy(ifr.ifr_name, ifa->ifa_label); + strlcpy(ifr.ifr_name, ifa->ifa_label, sizeof(ifr.ifr_name)); else - strcpy(ifr.ifr_name, dev->name); + strlcpy(ifr.ifr_name, dev->name, sizeof(ifr.ifr_name)); (*(struct sockaddr_in *)&ifr.ifr_addr).sin_family = AF_INET; (*(struct sockaddr_in *)&ifr.ifr_addr).sin_addr.s_addr = diff -uNr linux-2.6.0-test11.orig/net/ipv4/ipconfig.c linux-2.6.0-test11/net/ipv4/ipconfig.c --- linux-2.6.0-test11.orig/net/ipv4/ipconfig.c 2003-11-26 21:42:55.000000000 +0100 +++ linux-2.6.0-test11/net/ipv4/ipconfig.c 2003-11-27 13:32:06.904650818 +0100 @@ -299,7 +299,7 @@ int err; memset(&ir, 0, sizeof(ir)); - strcpy(ir.ifr_ifrn.ifrn_name, ic_dev->name); + strlcpy(ir.ifr_ifrn.ifrn_name, ic_dev->name, sizeof(ir.ifr_ifrn.ifrn_name)); set_sockaddr(sin, ic_myaddr, 0); if ((err = ic_dev_ioctl(SIOCSIFADDR, &ir)) < 0) { printk(KERN_ERR "IP-Config: Unable to set interface address (%d).\n", err); diff -uNr linux-2.6.0-test11.orig/net/ipv4/ip_gre.c linux-2.6.0-test11/net/ipv4/ip_gre.c --- linux-2.6.0-test11.orig/net/ipv4/ip_gre.c 2003-11-26 21:44:59.000000000 +0100 +++ linux-2.6.0-test11/net/ipv4/ip_gre.c 2003-11-27 13:30:13.342198122 +0100 @@ -1163,7 +1163,7 @@ iph = &tunnel->parms.iph; tunnel->dev = dev; - strcpy(tunnel->parms.name, dev->name); + strlcpy(tunnel->parms.name, dev->name, sizeof(tunnel->parms.name)); memcpy(dev->dev_addr, &tunnel->parms.iph.saddr, 4); memcpy(dev->broadcast, &tunnel->parms.iph.daddr, 4); @@ -1227,7 +1227,7 @@ struct iphdr *iph = &tunnel->parms.iph; tunnel->dev = dev; - strcpy(tunnel->parms.name, dev->name); + strlcpy(tunnel->parms.name, dev->name, sizeof(tunnel->parms.name)); iph->version = 4; iph->protocol = IPPROTO_GRE; diff -uNr linux-2.6.0-test11.orig/net/ipv4/ipip.c linux-2.6.0-test11/net/ipv4/ipip.c --- linux-2.6.0-test11.orig/net/ipv4/ipip.c 2003-11-26 21:46:10.000000000 +0100 +++ linux-2.6.0-test11/net/ipv4/ipip.c 2003-11-27 13:30:42.476717090 +0100 @@ -815,7 +815,7 @@ iph = &tunnel->parms.iph; tunnel->dev = dev; - strcpy(tunnel->parms.name, dev->name); + strlcpy(tunnel->parms.name, dev->name, sizeof(tunnel->parms.name)); memcpy(dev->dev_addr, &tunnel->parms.iph.saddr, 4); memcpy(dev->broadcast, &tunnel->parms.iph.daddr, 4); @@ -853,7 +853,7 @@ struct iphdr *iph = &tunnel->parms.iph; tunnel->dev = dev; - strcpy(tunnel->parms.name, dev->name); + strlcpy(tunnel->parms.name, dev->name, sizeof(tunnel->parms.name)); iph->version = 4; iph->protocol = IPPROTO_IPIP; diff -uNr linux-2.6.0-test11.orig/net/ipv4/ipvs/ip_vs_ctl.c linux-2.6.0-test11/net/ipv4/ipvs/ip_vs_ctl.c --- linux-2.6.0-test11.orig/net/ipv4/ipvs/ip_vs_ctl.c 2003-11-26 21:45:33.000000000 +0100 +++ linux-2.6.0-test11/net/ipv4/ipvs/ip_vs_ctl.c 2003-11-27 13:36:43.776537082 +0100 @@ -1918,7 +1918,7 @@ dst->addr = src->addr; dst->port = src->port; dst->fwmark = src->fwmark; - strcpy(dst->sched_name, src->scheduler->name); + strlcpy(dst->sched_name, src->scheduler->name, sizeof(dst->sched_name)); dst->flags = src->flags; dst->timeout = src->timeout / HZ; dst->netmask = src->netmask; @@ -2163,12 +2163,12 @@ memset(&d, 0, sizeof(d)); if (ip_vs_sync_state & IP_VS_STATE_MASTER) { d[0].state = IP_VS_STATE_MASTER; - strcpy(d[0].mcast_ifn, ip_vs_master_mcast_ifn); + strlcpy(d[0].mcast_ifn, ip_vs_master_mcast_ifn, sizeof(d[0].mcast_ifn)); d[0].syncid = ip_vs_master_syncid; } if (ip_vs_sync_state & IP_VS_STATE_BACKUP) { d[1].state = IP_VS_STATE_BACKUP; - strcpy(d[1].mcast_ifn, ip_vs_backup_mcast_ifn); + strlcpy(d[1].mcast_ifn, ip_vs_backup_mcast_ifn, sizeof(d[1].mcast_ifn)); d[1].syncid = ip_vs_backup_syncid; } if (copy_to_user(user, &d, sizeof(d)) != 0) diff -uNr linux-2.6.0-test11.orig/net/ipv4/ipvs/ip_vs_sync.c linux-2.6.0-test11/net/ipv4/ipvs/ip_vs_sync.c --- linux-2.6.0-test11.orig/net/ipv4/ipvs/ip_vs_sync.c 2003-11-26 21:42:47.000000000 +0100 +++ linux-2.6.0-test11/net/ipv4/ipvs/ip_vs_sync.c 2003-11-27 13:34:51.218619748 +0100 @@ -854,10 +854,10 @@ ip_vs_sync_state |= state; if (state == IP_VS_STATE_MASTER) { - strcpy(ip_vs_master_mcast_ifn, mcast_ifn); + strlcpy(ip_vs_master_mcast_ifn, mcast_ifn, sizeof(ip_vs_master_mcast_ifn)); ip_vs_master_syncid = syncid; } else { - strcpy(ip_vs_backup_mcast_ifn, mcast_ifn); + strlcpy(ip_vs_backup_mcast_ifn, mcast_ifn, sizeof(ip_vs_backup_mcast_ifn)); ip_vs_backup_syncid = syncid; } diff -uNr linux-2.6.0-test11.orig/net/ipv4/netfilter/arp_tables.c linux-2.6.0-test11/net/ipv4/netfilter/arp_tables.c --- linux-2.6.0-test11.orig/net/ipv4/netfilter/arp_tables.c 2003-11-26 21:45:10.000000000 +0100 +++ linux-2.6.0-test11/net/ipv4/netfilter/arp_tables.c 2003-11-27 13:23:24.284474101 +0100 @@ -1086,7 +1086,7 @@ sizeof(info.underflow)); info.num_entries = t->private->number; info.size = t->private->size; - strcpy(info.name, name); + strlcpy(info.name, name, sizeof(info.name)); if (copy_to_user(user, &info, *len) != 0) ret = -EFAULT; diff -uNr linux-2.6.0-test11.orig/net/ipv4/netfilter/ipchains_core.c linux-2.6.0-test11/net/ipv4/netfilter/ipchains_core.c --- linux-2.6.0-test11.orig/net/ipv4/netfilter/ipchains_core.c 2003-11-26 21:45:26.000000000 +0100 +++ linux-2.6.0-test11/net/ipv4/netfilter/ipchains_core.c 2003-11-27 13:28:39.884442527 +0100 @@ -1173,7 +1173,7 @@ = kmalloc(SIZEOF_STRUCT_IP_CHAIN, GFP_KERNEL); if (label == NULL) panic("Can't kmalloc for firewall chains.\n"); - strcpy(label->label,name); + strlcpy(label->label, name, sizeof(label->label)); label->next = NULL; label->chain = NULL; label->refcount = ref; diff -uNr linux-2.6.0-test11.orig/net/ipv4/netfilter/ip_queue.c linux-2.6.0-test11/net/ipv4/netfilter/ip_queue.c --- linux-2.6.0-test11.orig/net/ipv4/netfilter/ip_queue.c 2003-11-26 21:46:12.000000000 +0100 +++ linux-2.6.0-test11/net/ipv4/netfilter/ip_queue.c 2003-11-27 13:29:19.651041898 +0100 @@ -235,12 +235,12 @@ pmsg->hw_protocol = entry->skb->protocol; if (entry->info->indev) - strcpy(pmsg->indev_name, entry->info->indev->name); + strlcpy(pmsg->indev_name, entry->info->indev->name, sizeof(pmsg->indev_name)); else pmsg->indev_name[0] = '\0'; if (entry->info->outdev) - strcpy(pmsg->outdev_name, entry->info->outdev->name); + strlcpy(pmsg->outdev_name, entry->info->outdev->name, sizeof(pmsg->outdev_name)); else pmsg->outdev_name[0] = '\0'; diff -uNr linux-2.6.0-test11.orig/net/ipv4/netfilter/ip_tables.c linux-2.6.0-test11/net/ipv4/netfilter/ip_tables.c --- linux-2.6.0-test11.orig/net/ipv4/netfilter/ip_tables.c 2003-11-26 21:43:25.000000000 +0100 +++ linux-2.6.0-test11/net/ipv4/netfilter/ip_tables.c 2003-11-27 13:23:11.366451326 +0100 @@ -1277,7 +1277,7 @@ sizeof(info.underflow)); info.num_entries = t->private->number; info.size = t->private->size; - strcpy(info.name, name); + strlcpy(info.name, name, sizeof(info.name)); if (copy_to_user(user, &info, *len) != 0) ret = -EFAULT; ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2.6]: IPv4: strcpy -> strlcpy 2003-11-27 22:09 ` Felipe Alfaro Solana @ 2003-11-28 2:05 ` YOSHIFUJI Hideaki / 吉藤英明 2003-11-28 9:42 ` David Woodhouse 1 sibling, 0 replies; 8+ messages in thread From: YOSHIFUJI Hideaki / 吉藤英明 @ 2003-11-28 2:05 UTC (permalink / raw) To: felipe_alfaro; +Cc: timo, linux-kernel, netdev, davem, yoshfuji In article <1069970946.2138.13.camel@teapot.felipe-alfaro.com> (at Thu, 27 Nov 2003 23:09:06 +0100), Felipe Alfaro Solana <felipe_alfaro@linuxmail.org> says: > diff -uNr linux-2.6.0-test11.orig/net/ipv4/ipconfig.c linux-2.6.0-test11/net/ipv4/ipconfig.c > --- linux-2.6.0-test11.orig/net/ipv4/ipconfig.c 2003-11-26 21:42:55.000000000 +0100 > +++ linux-2.6.0-test11/net/ipv4/ipconfig.c 2003-11-27 13:32:06.904650818 +0100 > @@ -299,7 +299,7 @@ > int err; > > memset(&ir, 0, sizeof(ir)); > - strcpy(ir.ifr_ifrn.ifrn_name, ic_dev->name); > + strlcpy(ir.ifr_ifrn.ifrn_name, ic_dev->name, sizeof(ir.ifr_ifrn.ifrn_name)); please use strlcpy(ir.ifr_name, ic_dev->name, sizeof(ir.ifr_name)); instead. --yoshfuji ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2.6]: IPv4: strcpy -> strlcpy 2003-11-27 22:09 ` Felipe Alfaro Solana 2003-11-28 2:05 ` YOSHIFUJI Hideaki / 吉藤英明 @ 2003-11-28 9:42 ` David Woodhouse 2003-11-30 10:26 ` Ingo Oeser 1 sibling, 1 reply; 8+ messages in thread From: David Woodhouse @ 2003-11-28 9:42 UTC (permalink / raw) To: Felipe Alfaro Solana; +Cc: Timo Kamph, Linux Kernel Mailinglist, netdev, davem On Thu, 2003-11-27 at 23:09 +0100, Felipe Alfaro Solana wrote: > On Thu, 2003-11-27 at 21:48, Timo Kamph wrote: > > > > + strlcpy(label->label, name, sizeof(label->name)); > > ^^^^^^ > > I guess this shoud be label->label, or am I wrong? > > Oh my god! Two consecutive mistakes with the same patch! I should have > some sleep... Here's the one with the typo corrected. Perhaps we should consider #define strsizecpy(x, y) strlcpy((x), (y), sizeof(x)) -- dwmw2 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2.6]: IPv4: strcpy -> strlcpy 2003-11-28 9:42 ` David Woodhouse @ 2003-11-30 10:26 ` Ingo Oeser 0 siblings, 0 replies; 8+ messages in thread From: Ingo Oeser @ 2003-11-30 10:26 UTC (permalink / raw) To: David Woodhouse; +Cc: Timo Kamph, Linux Kernel Mailinglist, netdev, davem -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Friday 28 November 2003 10:42, David Woodhouse wrote: > On Thu, 2003-11-27 at 23:09 +0100, Felipe Alfaro Solana wrote: > > On Thu, 2003-11-27 at 21:48, Timo Kamph wrote: > > > > + strlcpy(label->label, name, sizeof(label->name)); > > > > > > > > > ^^^^^^ I guess this shoud be label->label, or am I wrong? > > > > Oh my god! Two consecutive mistakes with the same patch! I should have > > some sleep... Here's the one with the typo corrected. > > Perhaps we should consider > > #define strsizecpy(x, y) strlcpy((x), (y), sizeof(x)) Then we should do: #define strsizecpy(x, y) strlcpy(x, y, sizeof(x)/sizeof(x[0])) to rule out passing the wrong variables or dereferencing to much. Unfortunatly there is no simple way in C to differentiate between array and pointer. There is a way with typeof, but that is hackish. Regards Ingo Oeser -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.2 (GNU/Linux) iD8DBQE/ycXOU56oYWuOrkARAiJ8AJ9wkl1ijJVn5M+lGhUwSwWRxzxxHwCg2nAU t+9HdAasQDZo/GQFuj9s5ZU= =py/4 -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2003-11-30 10:57 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2003-11-27 14:04 [PATCH 2.6]: IPv4: strcpy -> strlcpy Felipe Alfaro Solana 2003-11-27 14:21 ` David Roundy 2003-11-27 15:25 ` Felipe Alfaro Solana 2003-11-27 20:48 ` Timo Kamph 2003-11-27 22:09 ` Felipe Alfaro Solana 2003-11-28 2:05 ` YOSHIFUJI Hideaki / 吉藤英明 2003-11-28 9:42 ` David Woodhouse 2003-11-30 10:26 ` Ingo Oeser
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).