if (nread <= 0)
return;
buf[nread] = '\0';
+ if (er->filter_addr.s_addr &&
+ er->filter_addr.s_addr != addr.sin_addr.s_addr)
+ return;
wpa_printf(MSG_DEBUG, "WPS ER: Received SSDP from %s",
inet_ntoa(addr.sin_addr));
pos2 += 5;
while (*pos2 == ' ')
pos2++;
- uuid_str2bin(pos2, uuid);
+ if (uuid_str2bin(pos2, uuid) < 0) {
+ wpa_printf(MSG_DEBUG, "WPS ER: "
+ "Invalid UUID in USN: %s",
+ pos2);
+ return;
+ }
}
}
}
int wps_er_ssdp_init(struct wps_er *er)
{
- if (add_ssdp_network(er->ifname))
+ if (add_ssdp_network(er->ifname)) {
+ wpa_printf(MSG_INFO, "WPS ER: Failed to add routing entry for "
+ "SSDP");
return -1;
+ }
er->multicast_sd = ssdp_open_multicast_sock(er->ip_addr);
- if (er->multicast_sd < 0)
+ if (er->multicast_sd < 0) {
+ wpa_printf(MSG_INFO, "WPS ER: Failed to open multicast socket "
+ "for SSDP");
return -1;
+ }
er->ssdp_sd = ssdp_listener_open();
- if (er->ssdp_sd < 0)
+ if (er->ssdp_sd < 0) {
+ wpa_printf(MSG_INFO, "WPS ER: Failed to open SSDP listener "
+ "socket");
return -1;
+ }
if (eloop_register_sock(er->multicast_sd, EVENT_TYPE_READ,
wps_er_ssdp_rx, er, NULL) ||