routed: Fix use after free.

For the multihomed case, ifp be used after being freed. NULL the value
after freeing it and avoid getting into the branch without reassigning
a new value.

CID:		272671
Obtained from:	NetBSD
MFC after:	2 weeks
This commit is contained in:
Pedro F. Giffuni 2016-05-14 23:07:26 +00:00
parent 54811dda50
commit 0b279f8c94

View File

@ -955,6 +955,7 @@ ifinit(void)
(intmax_t)now.tv_sec -
ifp->int_data.ts);
ifdel(ifp);
ifp = NULL;
}
continue;
}
@ -1151,7 +1152,7 @@ ifinit(void)
/* If we are multi-homed, optionally advertise a route to
* our main address.
*/
if (advertise_mhome
if ((advertise_mhome && ifp)
|| (tot_interfaces > 1
&& mhome
&& (ifp = ifwithaddr(myaddr, 0, 0)) != NULL