lkml.org 
[lkml]   [1999]   [Nov]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
SubjectA patch for acenic
Date
From
Hi,

There is a bug in the acenic driver. The "name" field is too small.
It causes the memory overrun. This patch seems to fix the problem.


--
H.J. Lu (hjl@gnu.org)
--
--- linux/drivers/net/acenic.h.orig Wed Nov 3 13:00:22 1999
+++ linux/drivers/net/acenic.h Wed Nov 3 13:02:34 1999
@@ -647,7 +647,7 @@ struct ace_private
u8 pci_bus;
u8 pci_dev_fun;
#endif
- char name[24];
+ char name[48];
struct net_device_stats stats;
};

--- linux/drivers/net/acenic.c.orig Wed Nov 3 13:02:40 1999
+++ linux/drivers/net/acenic.c Wed Nov 3 13:12:21 1999
@@ -289,34 +289,39 @@ __initfunc(int acenic_probe (struct devi

switch(ap->vendor){
case PCI_VENDOR_ID_ALTEON:
- sprintf(ap->name, "AceNIC Gigabit Ethernet");
+ strncpy(ap->name, "AceNIC Gigabit Ethernet", sizeof (ap->name));
printk(KERN_INFO "%s: Alteon AceNIC ", dev->name);
break;
case PCI_VENDOR_ID_3COM:
- sprintf(ap->name, "3Com 3C985 Gigabit Ethernet");
+ strncpy(ap->name, "3Com 3C985 Gigabit Ethernet",
+ sizeof (ap->name));
printk(KERN_INFO "%s: 3Com 3C985 ", dev->name);
break;
case PCI_VENDOR_ID_NETGEAR:
- sprintf(ap->name, "NetGear GA620 Gigabit Ethernet");
+ strncpy(ap->name, "NetGear GA620 Gigabit Ethernet",
+ sizeof (ap->name));
printk(KERN_INFO "%s: NetGear GA620 ", dev->name);
break;
case PCI_VENDOR_ID_DEC:
if (pdev->device == PCI_DEVICE_ID_FARALLON_PN9000SX) {
- sprintf(ap->name, "Farallon PN9000-SX "
- "Gigabit Ethernet");
+ strncpy(ap->name, "Farallon PN9000-SX Gigabit Ethernet",
+ sizeof (ap->name));
printk(KERN_INFO "%s: Farallon PN9000-SX ",
dev->name);
break;
}
case PCI_VENDOR_ID_SGI:
- sprintf(ap->name, "SGI AceNIC Gigabit Ethernet");
+ strncpy(ap->name, "SGI AceNIC Gigabit Ethernet",
+ sizeof (ap->name));
printk(KERN_INFO "%s: SGI AceNIC ", dev->name);
break;
default:
- sprintf(ap->name, "Unknown AceNIC based Gigabit Ethernet");
+ strncpy(ap->name, "Unknown AceNIC based Gigabit Ethernet",
+ sizeof (ap->name));
printk(KERN_INFO "%s: Unknown AceNIC ", dev->name);
break;
}
+ ap->name [sizeof (ap->name) - 1] = '\0';
printk("Gigabit Ethernet at 0x%08lx, irq %i, PCI latency %i "
"clks\n", pdev->base_address[0], dev->irq, pci_latency);

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:54    [W:0.053 / U:0.020 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site