WPS: Determine the OpCode based on message type attribute (UPnP)
This allows WSC_ACK and WSC_NACK to be processed correctly in the AP when operating as an Enrollee with an ER over UPnP transport.
This commit is contained in:
parent
f6d23cfd9e
commit
82b857ec0b
1 changed files with 11 additions and 0 deletions
|
@ -1190,6 +1190,17 @@ enum wps_process_res wps_enrollee_process_msg(struct wps_data *wps,
|
||||||
"op_code=%d)",
|
"op_code=%d)",
|
||||||
(unsigned long) wpabuf_len(msg), op_code);
|
(unsigned long) wpabuf_len(msg), op_code);
|
||||||
|
|
||||||
|
if (op_code == WSC_UPnP) {
|
||||||
|
/* Determine the OpCode based on message type attribute */
|
||||||
|
struct wps_parse_attr attr;
|
||||||
|
if (wps_parse_msg(msg, &attr) == 0 && attr.msg_type) {
|
||||||
|
if (*attr.msg_type == WPS_WSC_ACK)
|
||||||
|
op_code = WSC_ACK;
|
||||||
|
else if (*attr.msg_type == WPS_WSC_NACK)
|
||||||
|
op_code = WSC_NACK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
switch (op_code) {
|
switch (op_code) {
|
||||||
case WSC_MSG:
|
case WSC_MSG:
|
||||||
case WSC_UPnP:
|
case WSC_UPnP:
|
||||||
|
|
Loading…
Reference in a new issue