iface = netdev_priv(dev);
        local = iface->local;
 
-       strncpy(info->driver, "hostap", sizeof(info->driver) - 1);
-       snprintf(info->fw_version, sizeof(info->fw_version) - 1,
+       strlcpy(info->driver, "hostap", sizeof(info->driver));
+       snprintf(info->fw_version, sizeof(info->fw_version),
                 "%d.%d.%d", (local->sta_fw_ver >> 16) & 0xff,
                 (local->sta_fw_ver >> 8) & 0xff,
                 local->sta_fw_ver & 0xff);
 
        struct ipw2100_priv *priv = libipw_priv(dev);
        char fw_ver[64], ucode_ver[64];
 
-       strcpy(info->driver, DRV_NAME);
-       strcpy(info->version, DRV_VERSION);
+       strlcpy(info->driver, DRV_NAME, sizeof(info->driver));
+       strlcpy(info->version, DRV_VERSION, sizeof(info->version));
 
        ipw2100_get_fwversion(priv, fw_ver, sizeof(fw_ver));
        ipw2100_get_ucodeversion(priv, ucode_ver, sizeof(ucode_ver));
        snprintf(info->fw_version, sizeof(info->fw_version), "%s:%d:%s",
                 fw_ver, priv->eeprom_version, ucode_ver);
 
-       strcpy(info->bus_info, pci_name(priv->pci_dev));
+       strlcpy(info->bus_info, pci_name(priv->pci_dev),
+               sizeof(info->bus_info));
 }
 
 static u32 ipw2100_ethtool_get_link(struct net_device *dev)
 
        char date[32];
        u32 len;
 
-       strcpy(info->driver, DRV_NAME);
-       strcpy(info->version, DRV_VERSION);
+       strlcpy(info->driver, DRV_NAME, sizeof(info->driver));
+       strlcpy(info->version, DRV_VERSION, sizeof(info->version));
 
        len = sizeof(vers);
        ipw_get_ordinal(p, IPW_ORD_STAT_FW_VERSION, vers, &len);
 
        snprintf(info->fw_version, sizeof(info->fw_version), "%s (%s)",
                 vers, date);
-       strcpy(info->bus_info, pci_name(p->pci_dev));
+       strlcpy(info->bus_info, pci_name(p->pci_dev),
+               sizeof(info->bus_info));
        info->eedump_len = IPW_EEPROM_IMAGE_SIZE;
 }
 
 
 {
        struct lbs_private *priv = dev->ml_priv;
 
-       snprintf(info->fw_version, 32, "%u.%u.%u.p%u",
+       snprintf(info->fw_version, sizeof(info->fw_version),
+               "%u.%u.%u.p%u",
                priv->fwrelease >> 24 & 0xff,
                priv->fwrelease >> 16 & 0xff,
                priv->fwrelease >>  8 & 0xff,
                priv->fwrelease       & 0xff);
-       strcpy(info->driver, "libertas");
-       strcpy(info->version, lbs_driver_version);
+       strlcpy(info->driver, "libertas", sizeof(info->driver));
+       strlcpy(info->version, lbs_driver_version, sizeof(info->version));
 }
 
 /*
 
 static void islpci_ethtool_get_drvinfo(struct net_device *dev,
                                        struct ethtool_drvinfo *info)
 {
-       strcpy(info->driver, DRV_NAME);
-       strcpy(info->version, DRV_VERSION);
+       strlcpy(info->driver, DRV_NAME, sizeof(info->driver));
+       strlcpy(info->version, DRV_VERSION, sizeof(info->version));
 }
 
 static const struct ethtool_ops islpci_ethtool_ops = {