WPS: Fix UNSUBSCRIBE error returns if NT or CALLBACK header is used
authorJouni Malinen <j@w1.fi>
Sat, 22 Feb 2014 16:57:41 +0000 (18:57 +0200)
committerJouni Malinen <j@w1.fi>
Sat, 22 Feb 2014 16:58:33 +0000 (18:58 +0200)
Signed-off-by: Jouni Malinen <j@w1.fi>
src/wps/wps_upnp_web.c

index 31963ff..2a3b636 100644 (file)
@@ -1171,7 +1171,6 @@ static void web_connection_parse_unsubscribe(struct upnp_wps_device_sm *sm,
                        .....
                }
 #endif
-               /* SID is only for renewal */
                match = "SID:";
                match_len = os_strlen(match);
                if (os_strncasecmp(h, match, match_len) == 0) {
@@ -1194,6 +1193,20 @@ static void web_connection_parse_unsubscribe(struct upnp_wps_device_sm *sm,
                        got_uuid = 1;
                        continue;
                }
+
+               match = "NT:";
+               match_len = os_strlen(match);
+               if (os_strncasecmp(h, match, match_len) == 0) {
+                       ret = HTTP_BAD_REQUEST;
+                       goto send_msg;
+               }
+
+               match = "CALLBACK:";
+               match_len = os_strlen(match);
+               if (os_strncasecmp(h, match, match_len) == 0) {
+                       ret = HTTP_BAD_REQUEST;
+                       goto send_msg;
+               }
        }
 
        if (got_uuid) {