tipc: Ignore neighbor discovery messages containing invalid address
Adds a check to ensure that TIPC ignores an incoming neighbor discovery message that specifies an invalid media address as its source. The check ensures that the source address is a valid, non-broadcast address that could legally be used by a neighboring link endpoint. Signed-off-by: Allan Stephens <allan.stephens@windriver.com> Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
This commit is contained in:
parent
3d749a6a26
commit
d6d4577ae4
|
@ -130,12 +130,15 @@ void tipc_disc_recv_msg(struct sk_buff *buf, struct tipc_bearer *b_ptr)
|
||||||
u32 type = msg_type(msg);
|
u32 type = msg_type(msg);
|
||||||
int link_fully_up;
|
int link_fully_up;
|
||||||
|
|
||||||
|
media_addr.broadcast = 1;
|
||||||
b_ptr->media->msg2addr(&media_addr, msg_media_addr(msg));
|
b_ptr->media->msg2addr(&media_addr, msg_media_addr(msg));
|
||||||
buf_discard(buf);
|
buf_discard(buf);
|
||||||
|
|
||||||
/* Validate discovery message from requesting node */
|
/* Validate discovery message from requesting node */
|
||||||
if (net_id != tipc_net_id)
|
if (net_id != tipc_net_id)
|
||||||
return;
|
return;
|
||||||
|
if (media_addr.broadcast)
|
||||||
|
return;
|
||||||
if (!tipc_addr_domain_valid(dest))
|
if (!tipc_addr_domain_valid(dest))
|
||||||
return;
|
return;
|
||||||
if (!tipc_addr_node_valid(orig))
|
if (!tipc_addr_node_valid(orig))
|
||||||
|
|
Loading…
Reference in New Issue