Fixed bug #28506 (raw_bind should filter received packets)

This commit is contained in:
goldsimon 2010-01-10 13:45:24 +00:00
parent c483c13dc4
commit 8292cebfd9
2 changed files with 6 additions and 1 deletions

View File

@ -41,6 +41,9 @@ HISTORY
++ Bugfixes:
2010-01-10: Simon Goldschmidt
* raw.c: Fixed bug #28506 (raw_bind should filter received packets)
2010-01-10: Simon Goldschmidt
* tcp.h/.c: bug #28127 (remove call to tcp_output() from tcp_ack(_now)())

View File

@ -92,7 +92,9 @@ raw_input(struct pbuf *p, struct netif *inp)
/* loop through all raw pcbs until the packet is eaten by one */
/* this allows multiple pcbs to match against the packet by design */
while ((eaten == 0) && (pcb != NULL)) {
if (pcb->protocol == proto) {
if ((pcb->protocol == proto) &&
(ip_addr_isany(&pcb->local_ip)) ||
ip_addr_cmp(&(pcb->local_ip), &(iphdr->dest))) {
#if IP_SOF_BROADCAST_RECV
/* broadcast filter? */
if ((pcb->so_options & SOF_BROADCAST) || !ip_addr_isbroadcast(&(iphdr->dest), inp))