Staging: brcm80211: make interface name buffer smaller
Subsystems (2)
PATCH 1/1 Staging: brcm80211: make interface name buffer smaller
In the original code the interface name was IFNAMSIZ + 1, but that caused problems in dhd_ifname2idx() which does:
strncmp(dhd->iflist[i]->name, name, IFNAMSIZ)
The wl_event_msg_t struct can only store 16 character names as well.
And thirdly there is a potential buffer overflow in dhd_op_if() because if->net->name is IFNAMSIZ and we do:
strcpy(ifp->net->name, ifp->name);
Signed-off-by Dan Carpenter <[email protected]>
drivers/staging/brcm80211/brcmfmac/dhd_linux.c +2 -3
@@ -217,7 +217,7 @@ typedef struct dhd_if {u8 mac_addr[ETHER_ADDR_LEN ];/* assigned MAC address */ bool attached;/* Delayed attachment when unset */ bool txflowcontrol;/* Per interface flow control indicator */ -char name[IFNAMSIZ +1 ];/* linux interface name */ +char name[IFNAMSIZ ];/* linux interface name */ } dhd_if_t;/* Local private structure (extension of pub) */
@@ -1871,8 +1871,7 @@ dhd_add_if(dhd_info_t *dhd, int ifidx, void *handle, char *name,memset (ifp,0 ,sizeof (dhd_if_t)); ifp->info = dhd; dhd->iflist[ifidx] = ifp; -strncpy (ifp->name, name,IFNAMSIZ ); - ifp->name[IFNAMSIZ ] ='\0' ; +strlcpy (ifp->name, name,IFNAMSIZ );if (mac_addr !=NULL )memcpy (&ifp->mac_addr, mac_addr,ETHER_ADDR_LEN );