continue;
}
- strcpy(info->name, p->lifr_name);
- memset(&info->addr, 0, sizeof(info->addr));
+ memset(info, 0, sizeof(struct iface_info));
+ strncpy(info->name, p->lifr_name, sizeof(info->name) - 1);
memcpy(&info->addr, &p->lifr_addr, sizeof(p->lifr_addr));
#if defined(sun) || defined(__linux)
(strncmp(info->name, "dummy", 5) == 0));
memset(&tmp, 0, sizeof(tmp));
- strcpy(tmp.lifr_name, info->name);
+ strncpy(tmp.lifr_name, info->name, sizeof(tmp.lifr_name) - 1);
if (ioctl(ifaces->sock, SIOCGLIFFLAGS, &tmp) < 0) {
log_error("Error getting interface flags for '%s'; %m",
p->lifr_name);
log_error("IPv6 interface name '%s' too long", name);
return 0;
}
- strcpy(info->name, name);
+ strncpy(info->name, name, sizeof(info->name) - 1);
#ifdef SKIP_DUMMY_INTERFACES
} while (strncmp(info->name, "dummy", 5) == 0);
* Get our flags.
*/
memset(&tmp, 0, sizeof(tmp));
- strcpy(tmp.ifr_name, name);
+ strncpy(tmp.ifr_name, name, sizeof(tmp.ifr_name) - 1);
if (ioctl(ifaces->sock, SIOCGIFFLAGS, &tmp) < 0) {
log_error("Error getting interface flags for '%s'; %m", name);
*err = 1;
*/
int
next_iface(struct iface_info *info, int *err, struct iface_conf_list *ifaces) {
+ memset(info, 0, sizeof(struct iface_info));
if (next_iface4(info, err, ifaces)) {
return 1;
}
*err = 1;
return 0;
}
- strcpy(info->name, ifaces->next->ifa_name);
+ memset(info, 0, sizeof(struct iface_info));
+ strncpy(info->name, ifaces->next->ifa_name, sizeof(info->name) - 1);
memcpy(&info->addr, ifaces->next->ifa_addr,
ifaces->next->ifa_addr->sa_len);
info->flags = ifaces->next->ifa_flags;
log_fatal("Error allocating interface %s: %s",
info.name, isc_result_totext(status));
}
- strcpy(tmp->name, info.name);
+ strncpy(tmp->name, info.name, sizeof(tmp->name) - 1);
interface_snorf(tmp, ir);
interface_dereference(&tmp, MDL);
tmp = interfaces; /* XXX */