Fix bug #55171: Binding UDP PCB with different IP type PCBs does not work

by additionally checking IP address type
This commit is contained in:
Dirk Ziegelmeier 2018-12-06 14:40:57 +01:00
parent 91037b4c28
commit 2ff0db9a9b

View File

@ -997,8 +997,10 @@ udp_bind(struct udp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port)
{
/* port matches that of PCB in list and REUSEADDR not set -> reject */
if ((ipcb->local_port == port) &&
(IP_GET_TYPE(&ipcb->local_ip) == IP_GET_TYPE(ipaddr)) &&
/* IP address matches or any IP used? */
(ip_addr_cmp(&ipcb->local_ip, ipaddr) || ip_addr_isany(ipaddr) ||
(ip_addr_cmp(&ipcb->local_ip, ipaddr) ||
ip_addr_isany(ipaddr) ||
ip_addr_isany(&ipcb->local_ip))) {
/* other PCB already binds to this local IP and port */
LWIP_DEBUGF(UDP_DEBUG,