svn commit: r201541 - stable/7/sys/net

John Baldwin jhb at FreeBSD.org
Mon Jan 4 22:45:21 UTC 2010


Author: jhb
Date: Mon Jan  4 22:45:20 2010
New Revision: 201541
URL: http://svn.freebsd.org/changeset/base/201541

Log:
  MFC 201351:
  Use stricter checking to match possible vlan clones by not allowing extra
  garbage characters around or within the tag.

Modified:
  stable/7/sys/net/if_vlan.c
Directory Properties:
  stable/7/sys/   (props changed)
  stable/7/sys/cddl/contrib/opensolaris/   (props changed)
  stable/7/sys/contrib/dev/acpica/   (props changed)
  stable/7/sys/contrib/pf/   (props changed)

Modified: stable/7/sys/net/if_vlan.c
==============================================================================
--- stable/7/sys/net/if_vlan.c	Mon Jan  4 22:44:48 2010	(r201540)
+++ stable/7/sys/net/if_vlan.c	Mon Jan  4 22:45:20 2010	(r201541)
@@ -573,7 +573,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();
@@ -583,13 +583,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-stable-7 mailing list