mirror of
https://github.com/lwip-tcpip/lwip.git
synced 2024-10-05 22:29:49 +00:00
fixed bug #39226: Validity of netif IPv6 address is not always checked
This commit is contained in:
parent
5812b22662
commit
12e3b52f4d
@ -342,7 +342,8 @@ mld6_joingroup(const ip6_addr_t *srcaddr, const ip6_addr_t *groupaddr)
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) {
|
for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) {
|
||||||
if (ip6_addr_cmp(srcaddr, netif_ip6_addr(netif, i))) {
|
if (!ip6_addr_isinvalid(netif_ip6_addr_state(netif, i)) &&
|
||||||
|
ip6_addr_cmp(srcaddr, netif_ip6_addr(netif, i))) {
|
||||||
match = 1;
|
match = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -409,7 +410,8 @@ mld6_leavegroup(const ip6_addr_t *srcaddr, const ip6_addr_t *groupaddr)
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) {
|
for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) {
|
||||||
if (ip6_addr_cmp(srcaddr, netif_ip6_addr(netif, i))) {
|
if (!ip6_addr_isinvalid(netif_ip6_addr_state(netif, i)) &&
|
||||||
|
ip6_addr_cmp(srcaddr, netif_ip6_addr(netif, i))) {
|
||||||
match = 1;
|
match = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -164,7 +164,8 @@ nd6_input(struct pbuf *p, struct netif *inp)
|
|||||||
#if LWIP_IPV6_DUP_DETECT_ATTEMPTS
|
#if LWIP_IPV6_DUP_DETECT_ATTEMPTS
|
||||||
/* If the target address matches this netif, it is a DAD response. */
|
/* If the target address matches this netif, it is a DAD response. */
|
||||||
for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) {
|
for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) {
|
||||||
if (ip6_addr_cmp(ip6_current_dest_addr(), netif_ip6_addr(inp, i))) {
|
if (!ip6_addr_isinvalid(netif_ip6_addr_state(inp, i)) &&
|
||||||
|
ip6_addr_cmp(ip6_current_dest_addr(), netif_ip6_addr(inp, i))) {
|
||||||
/* We are using a duplicate address. */
|
/* We are using a duplicate address. */
|
||||||
netif_ip6_addr_set_state(inp, i, IP6_ADDR_INVALID);
|
netif_ip6_addr_set_state(inp, i, IP6_ADDR_INVALID);
|
||||||
|
|
||||||
@ -292,7 +293,8 @@ nd6_input(struct pbuf *p, struct netif *inp)
|
|||||||
if (ip6_addr_isany(ip6_current_src_addr())) {
|
if (ip6_addr_isany(ip6_current_src_addr())) {
|
||||||
/* Sender is validating this address. */
|
/* Sender is validating this address. */
|
||||||
for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; ++i) {
|
for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; ++i) {
|
||||||
if (ip6_addr_cmp(&(ns_hdr->target_address), netif_ip6_addr(inp, i))) {
|
if (!ip6_addr_isinvalid(netif_ip6_addr_state(inp, i)) &&
|
||||||
|
ip6_addr_cmp(&(ns_hdr->target_address), netif_ip6_addr(inp, i))) {
|
||||||
/* Send a NA back so that the sender does not use this address. */
|
/* Send a NA back so that the sender does not use this address. */
|
||||||
nd6_send_na(inp, netif_ip6_addr(inp, i), ND6_FLAG_OVERRIDE | ND6_SEND_FLAG_ALLNODES_DEST);
|
nd6_send_na(inp, netif_ip6_addr(inp, i), ND6_FLAG_OVERRIDE | ND6_SEND_FLAG_ALLNODES_DEST);
|
||||||
if (ip6_addr_istentative(netif_ip6_addr_state(inp, i))) {
|
if (ip6_addr_istentative(netif_ip6_addr_state(inp, i))) {
|
||||||
|
@ -873,7 +873,8 @@ netif_get_ip6_addr_match(struct netif *netif, ip6_addr_t *ip6addr)
|
|||||||
{
|
{
|
||||||
s8_t i;
|
s8_t i;
|
||||||
for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) {
|
for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) {
|
||||||
if (ip6_addr_cmp(netif_ip6_addr(netif, i), ip6addr)) {
|
if (!ip6_addr_isinvalid(netif_ip6_addr_state(netif, i)) &&
|
||||||
|
ip6_addr_cmp(netif_ip6_addr(netif, i), ip6addr)) {
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user