Commit e0dc4f12 authored by Bruce Allan's avatar Bruce Allan Committed by David S. Miller

e1000e: properly bounds-check string functions

Use string functions with bounds checking rather than their non-bounds
checking counterparts, and do not hard code these boundaries.
Signed-off-by: default avatarBruce Allan <bruce.w.allan@intel.com>
Tested-by: default avatarEmil Tantilov <emil.s.tantilov@intel.com>
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 482fed85
...@@ -624,20 +624,24 @@ static void e1000_get_drvinfo(struct net_device *netdev, ...@@ -624,20 +624,24 @@ static void e1000_get_drvinfo(struct net_device *netdev,
struct e1000_adapter *adapter = netdev_priv(netdev); struct e1000_adapter *adapter = netdev_priv(netdev);
char firmware_version[32]; char firmware_version[32];
strncpy(drvinfo->driver, e1000e_driver_name, 32); strncpy(drvinfo->driver, e1000e_driver_name,
strncpy(drvinfo->version, e1000e_driver_version, 32); sizeof(drvinfo->driver) - 1);
strncpy(drvinfo->version, e1000e_driver_version,
sizeof(drvinfo->version) - 1);
/* /*
* EEPROM image version # is reported as firmware version # for * EEPROM image version # is reported as firmware version # for
* PCI-E controllers * PCI-E controllers
*/ */
sprintf(firmware_version, "%d.%d-%d", snprintf(firmware_version, sizeof(firmware_version), "%d.%d-%d",
(adapter->eeprom_vers & 0xF000) >> 12, (adapter->eeprom_vers & 0xF000) >> 12,
(adapter->eeprom_vers & 0x0FF0) >> 4, (adapter->eeprom_vers & 0x0FF0) >> 4,
(adapter->eeprom_vers & 0x000F)); (adapter->eeprom_vers & 0x000F));
strncpy(drvinfo->fw_version, firmware_version, 32); strncpy(drvinfo->fw_version, firmware_version,
strncpy(drvinfo->bus_info, pci_name(adapter->pdev), 32); sizeof(drvinfo->fw_version) - 1);
strncpy(drvinfo->bus_info, pci_name(adapter->pdev),
sizeof(drvinfo->bus_info) - 1);
drvinfo->regdump_len = e1000_get_regs_len(netdev); drvinfo->regdump_len = e1000_get_regs_len(netdev);
drvinfo->eedump_len = e1000_get_eeprom_len(netdev); drvinfo->eedump_len = e1000_get_eeprom_len(netdev);
} }
......
...@@ -5639,7 +5639,7 @@ static void e1000_print_device_info(struct e1000_adapter *adapter) ...@@ -5639,7 +5639,7 @@ static void e1000_print_device_info(struct e1000_adapter *adapter)
ret_val = e1000_read_pba_string_generic(hw, pba_str, ret_val = e1000_read_pba_string_generic(hw, pba_str,
E1000_PBANUM_LENGTH); E1000_PBANUM_LENGTH);
if (ret_val) if (ret_val)
strcpy(pba_str, "Unknown"); strncpy((char *)pba_str, "Unknown", sizeof(pba_str) - 1);
e_info("MAC: %d, PHY: %d, PBA No: %s\n", e_info("MAC: %d, PHY: %d, PBA No: %s\n",
hw->mac.type, hw->phy.type, pba_str); hw->mac.type, hw->phy.type, pba_str);
} }
...@@ -5968,7 +5968,7 @@ static int __devinit e1000_probe(struct pci_dev *pdev, ...@@ -5968,7 +5968,7 @@ static int __devinit e1000_probe(struct pci_dev *pdev,
if (!(adapter->flags & FLAG_HAS_AMT)) if (!(adapter->flags & FLAG_HAS_AMT))
e1000_get_hw_control(adapter); e1000_get_hw_control(adapter);
strcpy(netdev->name, "eth%d"); strncpy(netdev->name, "eth%d", sizeof(netdev->name) - 1);
err = register_netdev(netdev); err = register_netdev(netdev);
if (err) if (err)
goto err_register; goto err_register;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment