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, | static int dpp_rx_gas_resp(struct dpp_connection *conn, const u8 *msg, | ||||||
| 			   size_t len) | 			   size_t len, bool comeback) | ||||||
| { | { | ||||||
| 	struct wpabuf *buf; | 	struct wpabuf *buf; | ||||||
| 	u8 dialog_token; | 	u8 dialog_token; | ||||||
| 	const u8 *pos, *end, *next, *adv_proto; | 	const u8 *pos, *end, *next, *adv_proto; | ||||||
| 	u16 status, slen, comeback_delay; | 	u16 status, slen, comeback_delay; | ||||||
| 
 | 
 | ||||||
| 	if (len < 5 + 2) | 	if (len < 5 + 2 + (comeback ? 1 : 0)) | ||||||
| 		return -1; | 		return -1; | ||||||
| 
 | 
 | ||||||
| 	wpa_printf(MSG_DEBUG, | 	wpa_printf(MSG_DEBUG, | ||||||
|  | @ -1278,6 +1278,8 @@ static int dpp_rx_gas_resp(struct dpp_connection *conn, const u8 *msg, | ||||||
| 		return -1; | 		return -1; | ||||||
| 	} | 	} | ||||||
| 	pos += 2; | 	pos += 2; | ||||||
|  | 	if (comeback) | ||||||
|  | 		pos++; /* ignore Fragment ID */ | ||||||
| 	comeback_delay = WPA_GET_LE16(pos); | 	comeback_delay = WPA_GET_LE16(pos); | ||||||
| 	pos += 2; | 	pos += 2; | ||||||
| 
 | 
 | ||||||
|  | @ -1441,8 +1443,10 @@ static void dpp_controller_rx(int sd, void *eloop_ctx, void *sock_ctx) | ||||||
| 			dpp_connection_remove(conn); | 			dpp_connection_remove(conn); | ||||||
| 		break; | 		break; | ||||||
| 	case WLAN_PA_GAS_INITIAL_RESP: | 	case WLAN_PA_GAS_INITIAL_RESP: | ||||||
|  | 	case WLAN_PA_GAS_COMEBACK_RESP: | ||||||
| 		if (dpp_rx_gas_resp(conn, pos + 1, | 		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); | 			dpp_connection_remove(conn); | ||||||
| 		break; | 		break; | ||||||
| 	case WLAN_PA_GAS_COMEBACK_REQ: | 	case WLAN_PA_GAS_COMEBACK_REQ: | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Jouni Malinen
						Jouni Malinen