e100, e1000, ixgb: Fix an impossible memory overwrite bug
authorAuke Kok <auke\-jan.h.kok@intel.com>
Wed, 27 Sep 2006 19:53:17 +0000 (12:53 -0700)
committerAuke Kok <juke-jan.h.kok@intel.com>
Wed, 27 Sep 2006 19:53:17 +0000 (12:53 -0700)
We keep getting requests from people that think that this might be
an exploitable hole where we would overwrite 4 bytes in the netdev
struct if the pci name would exceed 15 characters. In reality this
will never happen but we fix it anyway.

Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
drivers/net/e100.c
drivers/net/e1000/e1000_main.c
drivers/net/ixgb/ixgb_main.c

index d9750e269a56d3487caee4f443d905a2a75e8d9b..ab0868cb120c57f8b9a516d5b583991ff4b772a5 100644 (file)
@@ -2572,7 +2572,7 @@ static int __devinit e100_probe(struct pci_dev *pdev,
 #ifdef CONFIG_NET_POLL_CONTROLLER
        netdev->poll_controller = e100_netpoll;
 #endif
-       strcpy(netdev->name, pci_name(pdev));
+       strncpy(netdev->name, pci_name(pdev), sizeof(netdev->name) - 1);
 
        nic = netdev_priv(netdev);
        nic->netdev = netdev;
index 082c02918a4145ce5b4938043833fbec5ee8461d..bd673802e8ce1a71fc48d71ba311b56c03f91a75 100644 (file)
@@ -759,7 +759,7 @@ e1000_probe(struct pci_dev *pdev,
 #ifdef CONFIG_NET_POLL_CONTROLLER
        netdev->poll_controller = e1000_netpoll;
 #endif
-       strcpy(netdev->name, pci_name(pdev));
+       strncpy(netdev->name, pci_name(pdev), sizeof(netdev->name) - 1);
 
        netdev->mem_start = mmio_start;
        netdev->mem_end = mmio_start + mmio_len;
index a88c2b8b66b1258f9d7a6fb51f17dc91914144b5..fb4c1ad745b2db315049453ffdb2edb07c2899b1 100644 (file)
@@ -437,7 +437,7 @@ ixgb_probe(struct pci_dev *pdev,
        netdev->poll_controller = ixgb_netpoll;
 #endif
 
-       strcpy(netdev->name, pci_name(pdev));
+       strncpy(netdev->name, pci_name(pdev), sizeof(netdev->name) - 1);
        netdev->mem_start = mmio_start;
        netdev->mem_end = mmio_start + mmio_len;
        netdev->base_addr = adapter->hw.io_base;