P2P: Fix 32-bit compiler warnings on service discovery reference
Convert core wpa_supplicant code to use u64 instead of void * for the P2P service discovery reference. Use uintptr_t in type casts in p2p_supplicant.c to handle the conversion without warnings. Note: This needs to be revisited for 128-bit CPU where sizeof(void *) could be larger than sizeof(u64). Signed-hostap: Jouni Malinen <j@w1.fi>
This commit is contained in:
		
							parent
							
								
									5aff6fc697
								
							
						
					
					
						commit
						7165c5dc1f
					
				
					 4 changed files with 26 additions and 26 deletions
				
			
		|  | @ -2610,8 +2610,7 @@ static int p2p_ctrl_serv_disc_req(struct wpa_supplicant *wpa_s, char *cmd, | ||||||
| 		if (*pos != ' ') | 		if (*pos != ' ') | ||||||
| 			return -1; | 			return -1; | ||||||
| 		pos++; | 		pos++; | ||||||
| 		ref = (unsigned long) wpas_p2p_sd_request_upnp(wpa_s, dst, | 		ref = wpas_p2p_sd_request_upnp(wpa_s, dst, version, pos); | ||||||
| 							       version, pos); |  | ||||||
| 	} else { | 	} else { | ||||||
| 		len = os_strlen(pos); | 		len = os_strlen(pos); | ||||||
| 		if (len & 1) | 		if (len & 1) | ||||||
|  | @ -2625,9 +2624,11 @@ static int p2p_ctrl_serv_disc_req(struct wpa_supplicant *wpa_s, char *cmd, | ||||||
| 			return -1; | 			return -1; | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		ref = (unsigned long) wpas_p2p_sd_request(wpa_s, dst, tlvs); | 		ref = wpas_p2p_sd_request(wpa_s, dst, tlvs); | ||||||
| 		wpabuf_free(tlvs); | 		wpabuf_free(tlvs); | ||||||
| 	} | 	} | ||||||
|  | 	if (ref == 0) | ||||||
|  | 		return -1; | ||||||
| 	res = os_snprintf(buf, buflen, "%llx", (long long unsigned) ref); | 	res = os_snprintf(buf, buflen, "%llx", (long long unsigned) ref); | ||||||
| 	if (res < 0 || (unsigned) res >= buflen) | 	if (res < 0 || (unsigned) res >= buflen) | ||||||
| 		return -1; | 		return -1; | ||||||
|  | @ -2643,7 +2644,7 @@ static int p2p_ctrl_serv_disc_cancel_req(struct wpa_supplicant *wpa_s, | ||||||
| 	if (sscanf(cmd, "%llx", &val) != 1) | 	if (sscanf(cmd, "%llx", &val) != 1) | ||||||
| 		return -1; | 		return -1; | ||||||
| 	req = val; | 	req = val; | ||||||
| 	return wpas_p2p_sd_cancel_request(wpa_s, (void *) (unsigned long) req); | 	return wpas_p2p_sd_cancel_request(wpa_s, req); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -2020,13 +2020,11 @@ DBusMessage * wpas_dbus_handler_p2p_service_sd_req( | ||||||
| 		if (version <= 0 || service == NULL) | 		if (version <= 0 || service == NULL) | ||||||
| 			goto error; | 			goto error; | ||||||
| 
 | 
 | ||||||
| 		ref = (unsigned long) wpas_p2p_sd_request_upnp(wpa_s, addr, | 		ref = wpas_p2p_sd_request_upnp(wpa_s, addr, version, service); | ||||||
| 							       version, |  | ||||||
| 							       service); |  | ||||||
| 	} else { | 	} else { | ||||||
| 		if (tlv == NULL) | 		if (tlv == NULL) | ||||||
| 			goto error; | 			goto error; | ||||||
| 		ref = (unsigned long)wpas_p2p_sd_request(wpa_s, addr, tlv); | 		ref = wpas_p2p_sd_request(wpa_s, addr, tlv); | ||||||
| 		wpabuf_free(tlv); | 		wpabuf_free(tlv); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | @ -2127,7 +2125,7 @@ DBusMessage * wpas_dbus_handler_p2p_service_sd_cancel_req( | ||||||
| 	if (req == 0) | 	if (req == 0) | ||||||
| 		goto error; | 		goto error; | ||||||
| 
 | 
 | ||||||
| 	if (!wpas_p2p_sd_cancel_request(wpa_s, (void *)(unsigned long) req)) | 	if (!wpas_p2p_sd_cancel_request(wpa_s, req)) | ||||||
| 		goto error; | 		goto error; | ||||||
| 
 | 
 | ||||||
| 	return NULL; | 	return NULL; | ||||||
|  |  | ||||||
|  | @ -1490,26 +1490,26 @@ void wpas_sd_response(void *ctx, const u8 *sa, u16 update_indic, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| void * wpas_p2p_sd_request(struct wpa_supplicant *wpa_s, const u8 *dst, | u64 wpas_p2p_sd_request(struct wpa_supplicant *wpa_s, const u8 *dst, | ||||||
| 			const struct wpabuf *tlvs) | 			const struct wpabuf *tlvs) | ||||||
| { | { | ||||||
| 	if (wpa_s->drv_flags & WPA_DRIVER_FLAGS_P2P_MGMT) | 	if (wpa_s->drv_flags & WPA_DRIVER_FLAGS_P2P_MGMT) | ||||||
| 		return (void *) wpa_drv_p2p_sd_request(wpa_s, dst, tlvs); | 		return wpa_drv_p2p_sd_request(wpa_s, dst, tlvs); | ||||||
| 	if (wpa_s->global->p2p_disabled || wpa_s->global->p2p == NULL) | 	if (wpa_s->global->p2p_disabled || wpa_s->global->p2p == NULL) | ||||||
| 		return NULL; | 		return 0; | ||||||
| 	return p2p_sd_request(wpa_s->global->p2p, dst, tlvs); | 	return (uintptr_t) p2p_sd_request(wpa_s->global->p2p, dst, tlvs); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| void * wpas_p2p_sd_request_upnp(struct wpa_supplicant *wpa_s, const u8 *dst, | u64 wpas_p2p_sd_request_upnp(struct wpa_supplicant *wpa_s, const u8 *dst, | ||||||
| 			     u8 version, const char *query) | 			     u8 version, const char *query) | ||||||
| { | { | ||||||
| 	struct wpabuf *tlvs; | 	struct wpabuf *tlvs; | ||||||
| 	void *ret; | 	u64 ret; | ||||||
| 
 | 
 | ||||||
| 	tlvs = wpabuf_alloc(2 + 1 + 1 + 1 + os_strlen(query)); | 	tlvs = wpabuf_alloc(2 + 1 + 1 + 1 + os_strlen(query)); | ||||||
| 	if (tlvs == NULL) | 	if (tlvs == NULL) | ||||||
| 		return NULL; | 		return 0; | ||||||
| 	wpabuf_put_le16(tlvs, 1 + 1 + 1 + os_strlen(query)); | 	wpabuf_put_le16(tlvs, 1 + 1 + 1 + os_strlen(query)); | ||||||
| 	wpabuf_put_u8(tlvs, P2P_SERV_UPNP); /* Service Protocol Type */ | 	wpabuf_put_u8(tlvs, P2P_SERV_UPNP); /* Service Protocol Type */ | ||||||
| 	wpabuf_put_u8(tlvs, 1); /* Service Transaction ID */ | 	wpabuf_put_u8(tlvs, 1); /* Service Transaction ID */ | ||||||
|  | @ -1521,13 +1521,14 @@ void * wpas_p2p_sd_request_upnp(struct wpa_supplicant *wpa_s, const u8 *dst, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| int wpas_p2p_sd_cancel_request(struct wpa_supplicant *wpa_s, void *req) | int wpas_p2p_sd_cancel_request(struct wpa_supplicant *wpa_s, u64 req) | ||||||
| { | { | ||||||
| 	if (wpa_s->drv_flags & WPA_DRIVER_FLAGS_P2P_MGMT) | 	if (wpa_s->drv_flags & WPA_DRIVER_FLAGS_P2P_MGMT) | ||||||
| 		return wpa_drv_p2p_sd_cancel_request(wpa_s, (u64) req); | 		return wpa_drv_p2p_sd_cancel_request(wpa_s, req); | ||||||
| 	if (wpa_s->global->p2p_disabled || wpa_s->global->p2p == NULL) | 	if (wpa_s->global->p2p_disabled || wpa_s->global->p2p == NULL) | ||||||
| 		return -1; | 		return -1; | ||||||
| 	return p2p_sd_cancel_request(wpa_s->global->p2p, req); | 	return p2p_sd_cancel_request(wpa_s->global->p2p, | ||||||
|  | 				     (void *) (uintptr_t) req); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -80,11 +80,11 @@ void wpas_sd_request(void *ctx, int freq, const u8 *sa, u8 dialog_token, | ||||||
| 		     u16 update_indic, const u8 *tlvs, size_t tlvs_len); | 		     u16 update_indic, const u8 *tlvs, size_t tlvs_len); | ||||||
| void wpas_sd_response(void *ctx, const u8 *sa, u16 update_indic, | void wpas_sd_response(void *ctx, const u8 *sa, u16 update_indic, | ||||||
| 		      const u8 *tlvs, size_t tlvs_len); | 		      const u8 *tlvs, size_t tlvs_len); | ||||||
| void * wpas_p2p_sd_request(struct wpa_supplicant *wpa_s, const u8 *dst, | u64 wpas_p2p_sd_request(struct wpa_supplicant *wpa_s, const u8 *dst, | ||||||
| 			const struct wpabuf *tlvs); | 			const struct wpabuf *tlvs); | ||||||
| void * wpas_p2p_sd_request_upnp(struct wpa_supplicant *wpa_s, const u8 *dst, | u64 wpas_p2p_sd_request_upnp(struct wpa_supplicant *wpa_s, const u8 *dst, | ||||||
| 			     u8 version, const char *query); | 			     u8 version, const char *query); | ||||||
| int wpas_p2p_sd_cancel_request(struct wpa_supplicant *wpa_s, void *req); | int wpas_p2p_sd_cancel_request(struct wpa_supplicant *wpa_s, u64 req); | ||||||
| void wpas_p2p_sd_response(struct wpa_supplicant *wpa_s, int freq, | void wpas_p2p_sd_response(struct wpa_supplicant *wpa_s, int freq, | ||||||
| 			  const u8 *dst, u8 dialog_token, | 			  const u8 *dst, u8 dialog_token, | ||||||
| 			  const struct wpabuf *resp_tlvs); | 			  const struct wpabuf *resp_tlvs); | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Jouni Malinen
						Jouni Malinen