CVSROOT: /cvs
Module name: src
Changes by: [email protected] 2019/09/04 10:11:58
Modified files:
sys/netinet6 : ip6_mroute.c
Log message:
Fix a route use after free in IPv6 multicast route. Move the
mrt6_mcast6_del() out of the rtable_walk(). This avoids recursion
to prevent stack overflow. Also it allows freeing the route outside
of the walk. Now mrt6_mcast_del() frees the route only when it is
deleted from the routing table. If that fails, it must not be
freed. After the route is returned by mf6c_find(), it is reference
counted. Then we need a rtfree(), but not in the other case.
Name mrt6_mcast_add() and mrt6_mcast_del() consistently.
Move rt_timer_remove_all() into mrt6_mcast_del().
Reported-by: [email protected]
OK mpi@