svn commit: r201351 - head/sys/net
John Baldwin
jhb at FreeBSD.org
Thu Dec 31 20:44:39 UTC 2009
Author: jhb
Date: Thu Dec 31 20:44:38 2009
New Revision: 201351
URL: http://svn.freebsd.org/changeset/base/201351
Log:
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
Modified:
head/sys/net/if_vlan.c
Modified: head/sys/net/if_vlan.c
==============================================================================
--- head/sys/net/if_vlan.c Thu Dec 31 20:29:58 2009 (r201350)
+++ head/sys/net/if_vlan.c Thu Dec 31 20:44:38 2009 (r201351)
@@ -582,7 +582,7 @@ vlan_clone_match_ethertag(struct if_clon
{
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_clon
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;
More information about the svn-src-all
mailing list