From: Ben Greear <greearb@xxxxxxxxxxxxxxx> The compiler on Fedora-26 has gotten pickier about some things. The issues it complains about seem real, but I guess they do not happen in practice or someone one have noticed already. Signed-off-by: Ben Greear <greearb@xxxxxxxxxxxxxxx> --- src/drivers/driver_hostap.c | 11 ++++++++--- src/drivers/driver_nl80211.c | 5 ++++- src/drivers/driver_nl80211_monitor.c | 4 ++-- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/drivers/driver_hostap.c b/src/drivers/driver_hostap.c index 597da335e..218020250 100644 --- a/src/drivers/driver_hostap.c +++ b/src/drivers/driver_hostap.c @@ -217,6 +217,7 @@ static int hostap_init_sockets(struct hostap_driver_data *drv, u8 *own_addr) { struct ifreq ifr; struct sockaddr_ll addr; + char buf[32]; drv->sock = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)); if (drv->sock < 0) { @@ -231,7 +232,9 @@ static int hostap_init_sockets(struct hostap_driver_data *drv, u8 *own_addr) } memset(&ifr, 0, sizeof(ifr)); - snprintf(ifr.ifr_name, sizeof(ifr.ifr_name), "%sap", drv->iface); + snprintf(buf, sizeof(buf), "%sap", drv->iface); + os_strlcpy(ifr.ifr_name, buf, sizeof(ifr.ifr_name)); + if (ioctl(drv->sock, SIOCGIFINDEX, &ifr) != 0) { wpa_printf(MSG_ERROR, "ioctl(SIOCGIFINDEX): %s", strerror(errno)); @@ -346,9 +349,11 @@ static int hostap_set_iface_flags(void *priv, int dev_up) { struct hostap_driver_data *drv = priv; struct ifreq ifr; - char ifname[IFNAMSIZ]; + char ifname[IFNAMSIZ + 10]; + + os_snprintf(ifname, sizeof(ifname), "%sap", drv->iface); + ifname[IFNAMSIZ - 1] = 0; - os_snprintf(ifname, IFNAMSIZ, "%sap", drv->iface); if (linux_set_iface_flags(drv->ioctl_sock, ifname, dev_up) < 0) return -1; diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c index 0271f960c..ffec533e1 100644 --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c @@ -6398,8 +6398,11 @@ static int i802_set_wds_sta(void *priv, const u8 *addr, int aid, int val, struct i802_bss *bss = priv; struct wpa_driver_nl80211_data *drv = bss->drv; char name[IFNAMSIZ + 1]; + char tmp[34]; /* make F-26 gcc stop complaining about size of snprintf destination */ + + os_snprintf(tmp, sizeof(tmp), "%s.sta%d", bss->ifname, aid); + os_strlcpy(name, tmp, sizeof(name)); - os_snprintf(name, sizeof(name), "%s.sta%d", bss->ifname, aid); if (ifname_wds) os_strlcpy(ifname_wds, name, IFNAMSIZ + 1); diff --git a/src/drivers/driver_nl80211_monitor.c b/src/drivers/driver_nl80211_monitor.c index 28a99f274..e7ea023a2 100644 --- a/src/drivers/driver_nl80211_monitor.c +++ b/src/drivers/driver_nl80211_monitor.c @@ -340,7 +340,7 @@ void nl80211_remove_monitor_interface(struct wpa_driver_nl80211_data *drv) int nl80211_create_monitor_interface(struct i802_bss *bss, struct wpa_driver_nl80211_data *drv) { - char buf[IFNAMSIZ]; + char buf[IFNAMSIZ + 20]; struct sockaddr_ll ll; int optval; socklen_t optlen; @@ -362,7 +362,7 @@ int nl80211_create_monitor_interface(struct i802_bss *bss, struct wpa_driver_nl8 snprintf(buf, IFNAMSIZ, "mon-%s", drv->first_bss->ifname + 4); } else { /* Non-P2P interface with AP functionality. */ - snprintf(buf, IFNAMSIZ, "mon.%s", drv->first_bss->ifname); + snprintf(buf, sizeof(buf), "mon.%s", drv->first_bss->ifname); } buf[IFNAMSIZ - 1] = '\0'; -- 2.13.5 _______________________________________________ Hostap mailing list Hostap@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/hostap