Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 2 Mar 2011 17:13:07 +0000 (UTC)
From:      "Bjoern A. Zeeb" <bz@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r219184 - head/usr.sbin/rtadvd
Message-ID:  <201103021713.p22HD7fq025317@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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;
 	}
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201103021713.p22HD7fq025317>