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-head mailing list