DPP2: GAS comeback response processing for Enrollee over TCP
This is almost identical to processing of the GAS initial response. Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
This commit is contained in:
		
							parent
							
								
									18e013a93f
								
							
						
					
					
						commit
						11aa77e00f
					
				
					 1 changed files with 7 additions and 3 deletions
				
			
		|  | @ -1255,14 +1255,14 @@ static void dpp_tcp_gas_query_comeback(void *eloop_ctx, void *timeout_ctx) | |||
| 
 | ||||
| 
 | ||||
| static int dpp_rx_gas_resp(struct dpp_connection *conn, const u8 *msg, | ||||
| 			   size_t len) | ||||
| 			   size_t len, bool comeback) | ||||
| { | ||||
| 	struct wpabuf *buf; | ||||
| 	u8 dialog_token; | ||||
| 	const u8 *pos, *end, *next, *adv_proto; | ||||
| 	u16 status, slen, comeback_delay; | ||||
| 
 | ||||
| 	if (len < 5 + 2) | ||||
| 	if (len < 5 + 2 + (comeback ? 1 : 0)) | ||||
| 		return -1; | ||||
| 
 | ||||
| 	wpa_printf(MSG_DEBUG, | ||||
|  | @ -1278,6 +1278,8 @@ static int dpp_rx_gas_resp(struct dpp_connection *conn, const u8 *msg, | |||
| 		return -1; | ||||
| 	} | ||||
| 	pos += 2; | ||||
| 	if (comeback) | ||||
| 		pos++; /* ignore Fragment ID */ | ||||
| 	comeback_delay = WPA_GET_LE16(pos); | ||||
| 	pos += 2; | ||||
| 
 | ||||
|  | @ -1441,8 +1443,10 @@ static void dpp_controller_rx(int sd, void *eloop_ctx, void *sock_ctx) | |||
| 			dpp_connection_remove(conn); | ||||
| 		break; | ||||
| 	case WLAN_PA_GAS_INITIAL_RESP: | ||||
| 	case WLAN_PA_GAS_COMEBACK_RESP: | ||||
| 		if (dpp_rx_gas_resp(conn, pos + 1, | ||||
| 				    wpabuf_len(conn->msg) - 1) < 0) | ||||
| 				    wpabuf_len(conn->msg) - 1, | ||||
| 				    *pos == WLAN_PA_GAS_COMEBACK_RESP) < 0) | ||||
| 			dpp_connection_remove(conn); | ||||
| 		break; | ||||
| 	case WLAN_PA_GAS_COMEBACK_REQ: | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Jouni Malinen
						Jouni Malinen