mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-29 22:02:02 +00:00
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: Bruce Allan <bruce.w.allan@intel.com> Tested-by: Emil Tantilov <emil.s.tantilov@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
482fed85e6
commit
e0dc4f1254
2 changed files with 11 additions and 7 deletions
|
@ -624,20 +624,24 @@ static void e1000_get_drvinfo(struct net_device *netdev,
|
|||
struct e1000_adapter *adapter = netdev_priv(netdev);
|
||||
char firmware_version[32];
|
||||
|
||||
strncpy(drvinfo->driver, e1000e_driver_name, 32);
|
||||
strncpy(drvinfo->version, e1000e_driver_version, 32);
|
||||
strncpy(drvinfo->driver, e1000e_driver_name,
|
||||
sizeof(drvinfo->driver) - 1);
|
||||
strncpy(drvinfo->version, e1000e_driver_version,
|
||||
sizeof(drvinfo->version) - 1);
|
||||
|
||||
/*
|
||||
* EEPROM image version # is reported as firmware version # for
|
||||
* 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 & 0x0FF0) >> 4,
|
||||
(adapter->eeprom_vers & 0x000F));
|
||||
|
||||
strncpy(drvinfo->fw_version, firmware_version, 32);
|
||||
strncpy(drvinfo->bus_info, pci_name(adapter->pdev), 32);
|
||||
strncpy(drvinfo->fw_version, firmware_version,
|
||||
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->eedump_len = e1000_get_eeprom_len(netdev);
|
||||
}
|
||||
|
|
|
@ -5639,7 +5639,7 @@ static void e1000_print_device_info(struct e1000_adapter *adapter)
|
|||
ret_val = e1000_read_pba_string_generic(hw, pba_str,
|
||||
E1000_PBANUM_LENGTH);
|
||||
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",
|
||||
hw->mac.type, hw->phy.type, pba_str);
|
||||
}
|
||||
|
@ -5968,7 +5968,7 @@ static int __devinit e1000_probe(struct pci_dev *pdev,
|
|||
if (!(adapter->flags & FLAG_HAS_AMT))
|
||||
e1000_get_hw_control(adapter);
|
||||
|
||||
strcpy(netdev->name, "eth%d");
|
||||
strncpy(netdev->name, "eth%d", sizeof(netdev->name) - 1);
|
||||
err = register_netdev(netdev);
|
||||
if (err)
|
||||
goto err_register;
|
||||
|
|
Loading…
Reference in a new issue