svn commit: r219184 - head/usr.sbin/rtadvd

Bjoern A. Zeeb bz at FreeBSD.org
Wed Mar 2 17:13:07 UTC 2011


Author: bz
Date: Wed Mar  2 17:13:07 2011
New Revision: 219184
URL: http://svn.freebsd.org/changeset/base/219184

Log:
  Prevent crashes from a race when (cloned) interfaces go away.
  
  PR:		bin/152143
  Submitted by:	Przemyslaw Frasunek (przemyslaw frasunek.com)
  Tested by:	Przemyslaw Frasunek (przemyslaw frasunek.com)
  MFC after:	1 week

Modified:
  head/usr.sbin/rtadvd/rtadvd.c

Modified: head/usr.sbin/rtadvd/rtadvd.c
==============================================================================
--- head/usr.sbin/rtadvd/rtadvd.c	Wed Mar  2 16:16:09 2011	(r219183)
+++ head/usr.sbin/rtadvd/rtadvd.c	Wed Mar  2 17:13:07 2011	(r219184)
@@ -667,14 +667,16 @@ rtadvd_input()
 	}
 
 	/*
-	 * If we happen to receive data on an interface which is now down,
-	 * just discard the data.
+	 * If we happen to receive data on an interface which is now gone
+	 * or down, just discard the data.
 	 */
-	if ((iflist[pi->ipi6_ifindex]->ifm_flags & IFF_UP) == 0) {
+	if (iflist[pi->ipi6_ifindex] == NULL ||
+	    (iflist[pi->ipi6_ifindex]->ifm_flags & IFF_UP) == 0) {
 		syslog(LOG_INFO,
 		       "<%s> received data on a disabled interface (%s)",
 		       __func__,
-		       if_indextoname(pi->ipi6_ifindex, ifnamebuf));
+		       (iflist[pi->ipi6_ifindex] == NULL) ? "[gone]" :
+			    if_indextoname(pi->ipi6_ifindex, ifnamebuf));
 		return;
 	}
 


More information about the svn-src-head mailing list