Use stricter checking to match possible vlan clones by not allowing extra
garbage characters around or within the tag. Reviewed by: brooks MFC after: 3 days
This commit is contained in:
parent
a6fffd6cb0
commit
fb92ad4af5
@ -582,7 +582,7 @@ vlan_clone_match_ethertag(struct if_clone *ifc, const char *name, int *tag)
|
||||
{
|
||||
const char *cp;
|
||||
struct ifnet *ifp;
|
||||
int t = 0;
|
||||
int t;
|
||||
|
||||
/* Check for <etherif>.<vlan> style interface names. */
|
||||
IFNET_RLOCK_NOSLEEP();
|
||||
@ -592,13 +592,15 @@ vlan_clone_match_ethertag(struct if_clone *ifc, const char *name, int *tag)
|
||||
if (strncmp(ifp->if_xname, name, strlen(ifp->if_xname)) != 0)
|
||||
continue;
|
||||
cp = name + strlen(ifp->if_xname);
|
||||
if (*cp != '.')
|
||||
if (*cp++ != '.')
|
||||
continue;
|
||||
for(; *cp != '\0'; cp++) {
|
||||
if (*cp < '0' || *cp > '9')
|
||||
continue;
|
||||
if (*cp == '\0')
|
||||
continue;
|
||||
t = 0;
|
||||
for(; *cp >= '0' && *cp <= '9'; cp++)
|
||||
t = (t * 10) + (*cp - '0');
|
||||
}
|
||||
if (*cp != '\0')
|
||||
continue;
|
||||
if (tag != NULL)
|
||||
*tag = t;
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user