Patchwork Re: Re: [PATCH] Use P2P_IE_VENDOR_TYPE instead of combination of OUI_WFA and P2P_OUI_TYPE

login
register
mail settings
Submitter Rahul Jain
Date March 3, 2014, 3:14 a.m.
Message ID <EB.FD.10103.C73F3135@epcpsbgx1.samsung.com>
Download mbox | patch
Permalink /patch/325666/
State Accepted
Headers show

Comments

Rahul Jain - March 3, 2014, 3:14 a.m.
hi Juoni,

Please find my patch.

From d274748eb2928c7967b0bc204510b239aa71ce31 Mon Sep 17 00:00:00 2001
From: Rahul Jain <rahul.jain@samsung.com>

Date: Wed, 26 Feb 2014 11:48:07 +0530
Subject: [PATCH] Use P2P_IE_VENDOR_TYPE instead of combination of OUI_WFA and
  P2P_OUI_TYPE


Signed-off-by: Rahul Jain <rahul.jain@samsung.com>

---
 src/ap/ctrl_iface_ap.c |    5 ++---
 src/ap/p2p_hostapd.c   |    5 ++---
 src/p2p/p2p.c          |   23 ++++++++---------------
 src/p2p/p2p_build.c    |    9 +++------
 src/p2p/p2p_sd.c       |   45 ++++++++++++---------------------------------
 5 files changed, 27 insertions(+), 60 deletions(-)

-- 
1.7.9.5


Thanks
-Rahul

------- Original Message -------
Sender : Jouni Malinen
Date : Feb 26, 2014 16:43 (GMT+05:30)
Title : Re: [PATCH] Use P2P_IE_VENDOR_TYPE instead of combination of OUI_WFA and P2P_OUI_TYPE

On Wed, Feb 26, 2014 at 06:22:23AM +0000, Rahul Jain wrote:
> I have modified all files under hostap.git which ever is using OUI_WFA and P2P_OUI_TYPE combination with P2P_IE_VENDOR_TYPE.


Thanks

> I am not able to modify ieee802_11_common.c file as ieee802_11_parse_vendor_specific() will require lot of changes.


OK

> Patch for review


> @@ -250,9 +250,8 @@ static int p2p_manager_disconnect(struct hostapd_data *hapd, u16 stype,

> - WPA_PUT_BE24(pos, OUI_WFA);

> - pos += 3;

> - *pos++ = P2P_OUI_TYPE;

> + WPA_PUT_BE32(pos, P2P_IE_VENDOR_TYPE);

> + pos += 4;


This is whitespace damaged (tabs converted to a single space). Could
please send a version that could be applied cleanly? If needed, include
a copy of the patch as an attachment, but in general, using a mailer
that is able to sends whitespace cleanly would be most convenient.

-- 
Jouni Malinen                                            PGP id EFC895FA



Thanks
-Rahul Jain


Thanks
-Rahul Jain
Jouni Malinen - March 5, 2014, 10:47 p.m.
On Mon, Mar 03, 2014 at 03:14:04AM +0000, Rahul Jain wrote:
> Subject: [PATCH] Use P2P_IE_VENDOR_TYPE instead of combination of OUI_WFA and
>   P2P_OUI_TYPE

Thanks, applied. Though, with this bounds checking fixed:

> diff --git a/src/p2p/p2p.c b/src/p2p/p2p.c
> @@ -1662,18 +1662,15 @@ static void p2p_rx_action_public(struct p2p_data *p2p, const u8 *da,
>  		len--;
>  		if (len < 3)
>  			return;
> -		if (WPA_GET_BE24(data) != OUI_WFA)
> +		if (WPA_GET_BE32(data) != P2P_IE_VENDOR_TYPE)


That len < 3 needs to be len < 4 with the new design.

>  		if (len < 1)
>  			return;

While this one can be removed.

Patch

diff --git a/src/ap/ctrl_iface_ap.c b/src/ap/ctrl_iface_ap.c

index 8c0cbab..c27cf3b 100644

--- a/src/ap/ctrl_iface_ap.c

+++ b/src/ap/ctrl_iface_ap.c

@@ -250,9 +250,8 @@  static int p2p_manager_disconnect(struct hostapd_data *hapd, u16 stype,

 
 	*pos++ = WLAN_EID_VENDOR_SPECIFIC;
 	*pos++ = 4 + 3 + 1;
-	WPA_PUT_BE24(pos, OUI_WFA);

-	pos += 3;

-	*pos++ = P2P_OUI_TYPE;

+	WPA_PUT_BE32(pos, P2P_IE_VENDOR_TYPE);

+	pos += 4;

 
 	*pos++ = P2P_ATTR_MINOR_REASON_CODE;
 	WPA_PUT_LE16(pos, 1);
diff --git a/src/ap/p2p_hostapd.c b/src/ap/p2p_hostapd.c

index 795d313..9be640c 100644

--- a/src/ap/p2p_hostapd.c

+++ b/src/ap/p2p_hostapd.c

@@ -96,9 +96,8 @@  u8 * hostapd_eid_p2p_manage(struct hostapd_data *hapd, u8 *eid)

 	u8 bitmap;
 	*eid++ = WLAN_EID_VENDOR_SPECIFIC;
 	*eid++ = 4 + 3 + 1;
-	WPA_PUT_BE24(eid, OUI_WFA);

-	eid += 3;

-	*eid++ = P2P_OUI_TYPE;

+	WPA_PUT_BE32(eid, P2P_IE_VENDOR_TYPE);

+	eid += 4;

 
 	*eid++ = P2P_ATTR_MANAGEABILITY;
 	WPA_PUT_LE16(eid, 1);
diff --git a/src/p2p/p2p.c b/src/p2p/p2p.c

index 6f3cd68..e6518ee 100644

--- a/src/p2p/p2p.c

+++ b/src/p2p/p2p.c

@@ -1662,18 +1662,15 @@  static void p2p_rx_action_public(struct p2p_data *p2p, const u8 *da,

 		len--;
 		if (len < 3)
 			return;
-		if (WPA_GET_BE24(data) != OUI_WFA)

+		if (WPA_GET_BE32(data) != P2P_IE_VENDOR_TYPE)

 			return;
 
-		data += 3;

-		len -= 3;

+		data += 4;

+		len -= 4;

 		if (len < 1)
 			return;
 
-		if (*data != P2P_OUI_TYPE)

-			return;

-

-		p2p_rx_p2p_action(p2p, sa, data + 1, len - 1, freq);

+		p2p_rx_p2p_action(p2p, sa, data, len, freq);

 		break;
 	case WLAN_PA_GAS_INITIAL_REQ:
 		p2p_rx_gas_initial_req(p2p, sa, data + 1, len - 1, freq);
@@ -1706,15 +1703,10 @@  void p2p_rx_action(struct p2p_data *p2p, const u8 *da, const u8 *sa,

 	if (len < 4)
 		return;
 
-	if (WPA_GET_BE24(data) != OUI_WFA)

+	if (WPA_GET_BE32(data) != P2P_IE_VENDOR_TYPE)

 		return;
-	data += 3;

-	len -= 3;

-

-	if (*data != P2P_OUI_TYPE)

-		return;

-	data++;

-	len--;

+	data += 4;

+	len -= 4;

 
 	/* P2P action frame */
 	p2p_dbg(p2p, "RX P2P Action from " MACSTR, MAC2STR(sa));
@@ -1722,6 +1714,7 @@  void p2p_rx_action(struct p2p_data *p2p, const u8 *da, const u8 *sa,

 
 	if (len < 1)
 		return;
+

 	switch (data[0]) {
 	case P2P_NOA:
 		p2p_dbg(p2p, "Received P2P Action - Notice of Absence");
diff --git a/src/p2p/p2p_build.c b/src/p2p/p2p_build.c

index 664fade..e9b683d 100644

--- a/src/p2p/p2p_build.c

+++ b/src/p2p/p2p_build.c

@@ -17,8 +17,7 @@ 

 void p2p_buf_add_action_hdr(struct wpabuf *buf, u8 subtype, u8 dialog_token)
 {
 	wpabuf_put_u8(buf, WLAN_ACTION_VENDOR_SPECIFIC);
-	wpabuf_put_be24(buf, OUI_WFA);

-	wpabuf_put_u8(buf, P2P_OUI_TYPE);

+	wpabuf_put_be32(buf, P2P_IE_VENDOR_TYPE);

 
 	wpabuf_put_u8(buf, subtype); /* OUI Subtype */
 	wpabuf_put_u8(buf, dialog_token);
@@ -31,8 +30,7 @@  void p2p_buf_add_public_action_hdr(struct wpabuf *buf, u8 subtype,

 {
 	wpabuf_put_u8(buf, WLAN_ACTION_PUBLIC);
 	wpabuf_put_u8(buf, WLAN_PA_VENDOR_SPECIFIC);
-	wpabuf_put_be24(buf, OUI_WFA);

-	wpabuf_put_u8(buf, P2P_OUI_TYPE);

+	wpabuf_put_be32(buf, P2P_IE_VENDOR_TYPE);

 
 	wpabuf_put_u8(buf, subtype); /* OUI Subtype */
 	wpabuf_put_u8(buf, dialog_token);
@@ -47,8 +45,7 @@  u8 * p2p_buf_add_ie_hdr(struct wpabuf *buf)

 	/* P2P IE header */
 	wpabuf_put_u8(buf, WLAN_EID_VENDOR_SPECIFIC);
 	len = wpabuf_put(buf, 1); /* IE length to be filled */
-	wpabuf_put_be24(buf, OUI_WFA);

-	wpabuf_put_u8(buf, P2P_OUI_TYPE);

+	wpabuf_put_be32(buf, P2P_IE_VENDOR_TYPE);

 	wpa_printf(MSG_DEBUG, "P2P: * P2P IE header");
 	return len;
 }
diff --git a/src/p2p/p2p_sd.c b/src/p2p/p2p_sd.c

index 26b9c2d..497a1f3 100644

--- a/src/p2p/p2p_sd.c

+++ b/src/p2p/p2p_sd.c

@@ -171,8 +171,7 @@  static struct wpabuf * p2p_build_sd_query(u16 update_indic,

 
 	/* ANQP Query Request Frame */
 	len_pos = gas_anqp_add_element(buf, ANQP_VENDOR_SPECIFIC);
-	wpabuf_put_be24(buf, OUI_WFA);

-	wpabuf_put_u8(buf, P2P_OUI_TYPE);

+	wpabuf_put_be32(buf, P2P_IE_VENDOR_TYPE);

 	wpabuf_put_le16(buf, update_indic); /* Service Update Indicator */
 	wpabuf_put_buf(buf, tlvs);
 	gas_anqp_set_element_len(buf, len_pos);
@@ -218,8 +217,7 @@  static struct wpabuf * p2p_build_sd_response(u8 dialog_token, u16 status_code,

 	if (tlvs) {
 		/* ANQP Query Response Frame */
 		len_pos = gas_anqp_add_element(buf, ANQP_VENDOR_SPECIFIC);
-		wpabuf_put_be24(buf, OUI_WFA);

-		wpabuf_put_u8(buf, P2P_OUI_TYPE);

+		wpabuf_put_be32(buf, P2P_IE_VENDOR_TYPE);

 		 /* Service Update Indicator */
 		wpabuf_put_le16(buf, update_indic);
 		wpabuf_put_buf(buf, tlvs);
@@ -250,8 +248,7 @@  static struct wpabuf * p2p_build_gas_comeback_resp(u8 dialog_token,

 		/* ANQP Query Response Frame */
 		wpabuf_put_le16(buf, ANQP_VENDOR_SPECIFIC); /* Info ID */
 		wpabuf_put_le16(buf, 3 + 1 + 2 + total_len);
-		wpabuf_put_be24(buf, OUI_WFA);

-		wpabuf_put_u8(buf, P2P_OUI_TYPE);

+		wpabuf_put_be32(buf, P2P_IE_VENDOR_TYPE);

 		/* Service Update Indicator */
 		wpabuf_put_le16(buf, update_indic);
 	}
@@ -393,17 +390,11 @@  void p2p_rx_gas_initial_req(struct p2p_data *p2p, const u8 *sa,

 		return;
 	}
 
-	if (WPA_GET_BE24(pos) != OUI_WFA) {

-		p2p_dbg(p2p, "Unsupported ANQP OUI %06x", WPA_GET_BE24(pos));

+	if (WPA_GET_BE32(pos) != P2P_IE_VENDOR_TYPE) {

+		p2p_dbg(p2p, "Unsupported ANQP OUI %06x", WPA_GET_BE32(pos));

 		return;
 	}
-	pos += 3;

-

-	if (*pos != P2P_OUI_TYPE) {

-		p2p_dbg(p2p, "Unsupported ANQP vendor type %u", *pos);

-		return;

-	}

-	pos++;

+	pos += 4;

 
 	if (pos + 2 > end)
 		return;
@@ -571,17 +562,11 @@  void p2p_rx_gas_initial_resp(struct p2p_data *p2p, const u8 *sa,

 		return;
 	}
 
-	if (WPA_GET_BE24(pos) != OUI_WFA) {

-		p2p_dbg(p2p, "Unsupported ANQP OUI %06x", WPA_GET_BE24(pos));

-		return;

-	}

-	pos += 3;

-

-	if (*pos != P2P_OUI_TYPE) {

-		p2p_dbg(p2p, "Unsupported ANQP vendor type %u", *pos);

+	if (WPA_GET_BE32(pos) != P2P_IE_VENDOR_TYPE) {

+		p2p_dbg(p2p, "Unsupported ANQP OUI %06x", WPA_GET_BE32(pos));

 		return;
 	}
-	pos++;

+	pos += 4;

 
 	if (pos + 2 > end)
 		return;
@@ -795,17 +780,11 @@  void p2p_rx_gas_comeback_resp(struct p2p_data *p2p, const u8 *sa,

 	if (pos + 4 > end)
 		return;
 
-	if (WPA_GET_BE24(pos) != OUI_WFA) {

-		p2p_dbg(p2p, "Unsupported ANQP OUI %06x", WPA_GET_BE24(pos));

-		return;

-	}

-	pos += 3;

-

-	if (*pos != P2P_OUI_TYPE) {

-		p2p_dbg(p2p, "Unsupported ANQP vendor type %u", *pos);

+	if (WPA_GET_BE32(pos) != P2P_IE_VENDOR_TYPE) {

+		p2p_dbg(p2p, "Unsupported ANQP OUI %06x", WPA_GET_BE32(pos));

 		return;
 	}
-	pos++;

+	pos += 4;

 
 	if (pos + 2 > end)
 		return;