diff options
-rw-r--r-- | sys/netinet6/nd6_nbr.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/sys/netinet6/nd6_nbr.c b/sys/netinet6/nd6_nbr.c index 90e7d19c8b3..beba12165ef 100644 --- a/sys/netinet6/nd6_nbr.c +++ b/sys/netinet6/nd6_nbr.c @@ -1,4 +1,4 @@ -/* $OpenBSD: nd6_nbr.c,v 1.62 2012/01/11 19:12:23 bluhm Exp $ */ +/* $OpenBSD: nd6_nbr.c,v 1.63 2012/05/16 09:48:38 mikeb Exp $ */ /* $KAME: nd6_nbr.c,v 1.61 2001/02/10 16:06:14 jinmei Exp $ */ /* @@ -605,6 +605,12 @@ nd6_na_input(struct mbuf *m, int off, int icmp6len) goto freeit; } + if (IN6_IS_ADDR_MULTICAST(&daddr6) && !ndopts.nd_opts_tgt_lladdr) { + nd6log((LOG_INFO, + "nd6_na_input: multicast adv without TLLA\n")); + goto bad; + } + if (ndopts.nd_opts_tgt_lladdr) { lladdr = (char *)(ndopts.nd_opts_tgt_lladdr + 1); lladdrlen = ndopts.nd_opts_tgt_lladdr->nd_opt_len << 3; |