automake build system
[mech_eap.orig] / src / wps / wps_er_ssdp.c
index 83879db..abcb91d 100644 (file)
@@ -41,6 +41,9 @@ static void wps_er_ssdp_rx(int sd, void *eloop_ctx, void *sock_ctx)
        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));
@@ -96,7 +99,12 @@ static void wps_er_ssdp_rx(int sd, void *eloop_ctx, void *sock_ctx)
                                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;
+                               }
                        }
                }
        }
@@ -157,16 +165,25 @@ void wps_er_send_ssdp_msearch(struct wps_er *er)
 
 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) ||