WPS ER: Fix Op-Code for WSC_{ACK,NACK,Done}
When using UPnP transport, the Op-Code is not included, but the WPS frame processing will need this. Generate a matching Op-Code based on the message type.
This commit is contained in:
		
							parent
							
								
									ed835e539b
								
							
						
					
					
						commit
						7ec2e26ddf
					
				
					 1 changed files with 21 additions and 6 deletions
				
			
		|  | @ -847,13 +847,13 @@ static void wps_er_sta_send_msg(struct wps_er_sta *sta, struct wpabuf *msg) | |||
| } | ||||
| 
 | ||||
| 
 | ||||
| static void wps_er_sta_process(struct wps_er_sta *sta, struct wpabuf *msg) | ||||
| static void wps_er_sta_process(struct wps_er_sta *sta, struct wpabuf *msg, | ||||
| 			       enum wsc_op_code op_code) | ||||
| { | ||||
| 	enum wps_process_res res; | ||||
| 
 | ||||
| 	res = wps_process_msg(sta->wps, WSC_MSG, msg); | ||||
| 	res = wps_process_msg(sta->wps, op_code, msg); | ||||
| 	if (res == WPS_CONTINUE) { | ||||
| 		enum wsc_op_code op_code; | ||||
| 		struct wpabuf *next = wps_get_msg(sta->wps, &op_code); | ||||
| 		if (next) | ||||
| 			wps_er_sta_send_msg(sta, next); | ||||
|  | @ -877,7 +877,7 @@ static void wps_er_sta_start(struct wps_er_sta *sta, struct wpabuf *msg) | |||
| 	if (sta->wps == NULL) | ||||
| 		return; | ||||
| 
 | ||||
| 	wps_er_sta_process(sta, msg); | ||||
| 	wps_er_sta_process(sta, msg, WSC_MSG); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
|  | @ -902,8 +902,23 @@ static void wps_er_process_wlanevent_eap(struct wps_er_ap *ap, const u8 *addr, | |||
| 
 | ||||
| 	if (attr.msg_type && *attr.msg_type == WPS_M1) | ||||
| 		wps_er_sta_start(sta, msg); | ||||
| 	else if (sta->wps) | ||||
| 		wps_er_sta_process(sta, msg); | ||||
| 	else if (sta->wps) { | ||||
| 		enum wsc_op_code op_code = WSC_MSG; | ||||
| 		if (attr.msg_type) { | ||||
| 			switch (*attr.msg_type) { | ||||
| 			case WPS_WSC_ACK: | ||||
| 				op_code = WSC_ACK; | ||||
| 				break; | ||||
| 			case WPS_WSC_NACK: | ||||
| 				op_code = WSC_NACK; | ||||
| 				break; | ||||
| 			case WPS_WSC_DONE: | ||||
| 				op_code = WSC_Done; | ||||
| 				break; | ||||
| 			} | ||||
| 		} | ||||
| 		wps_er_sta_process(sta, msg, op_code); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Jouni Malinen
						Jouni Malinen