Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 6 May 2018 20:32:47 +0000 (UTC)
From:      Matt Macy <mmacy@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r333308 - head/sys/net
Message-ID:  <201805062032.w46KWlCD088039@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mmacy
Date: Sun May  6 20:32:47 2018
New Revision: 333308
URL: https://svnweb.freebsd.org/changeset/base/333308

Log:
  The ifnet pointer (ifp) in rt_newaddrmsg can be valid without ifp->if_addr being set if
  if the ifnet is still live by way of a reference but
  in line for deletion. Check ifp->if_addr before dereferencing.
  
  Approved by:	sbruno

Modified:
  head/sys/net/rtsock.c

Modified: head/sys/net/rtsock.c
==============================================================================
--- head/sys/net/rtsock.c	Sun May  6 16:22:02 2018	(r333307)
+++ head/sys/net/rtsock.c	Sun May  6 20:32:47 2018	(r333308)
@@ -1411,7 +1411,10 @@ rt_newmaddrmsg(int cmd, struct ifmultiaddr *ifma)
 
 	bzero((caddr_t)&info, sizeof(info));
 	info.rti_info[RTAX_IFA] = ifma->ifma_addr;
-	info.rti_info[RTAX_IFP] = ifp ? ifp->if_addr->ifa_addr : NULL;
+	if (ifp && ifp->if_addr)
+		info.rti_info[RTAX_IFP] = ifp->if_addr->ifa_addr;
+	else
+		info.rti_info[RTAX_IFP] = NULL;
 	/*
 	 * If a link-layer address is present, present it as a ``gateway''
 	 * (similarly to how ARP entries, e.g., are presented).



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