diff mbox

[3/3] staging: r8712u: Fix case where ethtype was never obtained and always be checked against 0

Message ID 1397059980-11942-4-git-send-email-Larry.Finger@lwfinger.net
State Not Applicable, archived
Delegated to: David Miller
Headers show

Commit Message

Larry Finger April 9, 2014, 4:13 p.m. UTC
Zero-initializing ether_type masked that the ether type would never be
obtained for 8021x packets and the comparition against eapol_type
would always fail.

Reported-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Cc: Stable <stable@vger.kernel.org>
---
 drivers/staging/rtl8712/rtl871x_recv.c | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

Comments

Sergei Shtylyov April 9, 2014, 4:25 p.m. UTC | #1
On 04/09/2014 08:13 PM, Larry Finger wrote:

> Zero-initializing ether_type masked that the ether type would never be
> obtained for 8021x packets and the comparition against eapol_type
> would always fail.

> Reported-by: Jes Sorensen <Jes.Sorensen@redhat.com>
> Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
> Cc: Stable <stable@vger.kernel.org>
> ---
>   drivers/staging/rtl8712/rtl871x_recv.c | 15 +++++++--------
>   1 file changed, 7 insertions(+), 8 deletions(-)

> diff --git a/drivers/staging/rtl8712/rtl871x_recv.c b/drivers/staging/rtl8712/rtl871x_recv.c
> index 23ec684..d8d1a76 100644
> --- a/drivers/staging/rtl8712/rtl871x_recv.c
> +++ b/drivers/staging/rtl8712/rtl871x_recv.c
[...]
> @@ -262,16 +262,15 @@ union recv_frame *r8712_portctrl(struct _adapter *adapter,
>   	psta_addr = pfhdr->attrib.ta;
>   	psta = r8712_get_stainfo(pstapriv, psta_addr);
>   	auth_alg = adapter->securitypriv.AuthAlgrthm;
> -	if (auth_alg == 2) {
> +	if (auth_alg == dot11AuthAlgrthm_8021X) {
> +		/* get ether_type */
> +		ptr = ptr + pfhdr->attrib.hdrlen + LLC_HEADER_SIZE;

    Why not:

		ptr += pfhdr->attrib.hdrlen + LLC_HEADER_SIZE;

WBR, Sergei

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Larry Finger April 9, 2014, 5:45 p.m. UTC | #2
On 04/09/2014 11:25 AM, Sergei Shtylyov wrote:
> On 04/09/2014 08:13 PM, Larry Finger wrote:
>
>> Zero-initializing ether_type masked that the ether type would never be
>> obtained for 8021x packets and the comparition against eapol_type
>> would always fail.
>
>> Reported-by: Jes Sorensen <Jes.Sorensen@redhat.com>
>> Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
>> Cc: Stable <stable@vger.kernel.org>
>> ---
>>   drivers/staging/rtl8712/rtl871x_recv.c | 15 +++++++--------
>>   1 file changed, 7 insertions(+), 8 deletions(-)
>
>> diff --git a/drivers/staging/rtl8712/rtl871x_recv.c
>> b/drivers/staging/rtl8712/rtl871x_recv.c
>> index 23ec684..d8d1a76 100644
>> --- a/drivers/staging/rtl8712/rtl871x_recv.c
>> +++ b/drivers/staging/rtl8712/rtl871x_recv.c
> [...]
>> @@ -262,16 +262,15 @@ union recv_frame *r8712_portctrl(struct _adapter *adapter,
>>       psta_addr = pfhdr->attrib.ta;
>>       psta = r8712_get_stainfo(pstapriv, psta_addr);
>>       auth_alg = adapter->securitypriv.AuthAlgrthm;
>> -    if (auth_alg == 2) {
>> +    if (auth_alg == dot11AuthAlgrthm_8021X) {
>> +        /* get ether_type */
>> +        ptr = ptr + pfhdr->attrib.hdrlen + LLC_HEADER_SIZE;
>
>     Why not:
>
>          ptr += pfhdr->attrib.hdrlen + LLC_HEADER_SIZE;

My comment is the same as the one I sent for patch 2.

Larry


--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Greg Kroah-Hartman April 16, 2014, 6:46 p.m. UTC | #3
On Wed, Apr 09, 2014 at 11:13:00AM -0500, Larry Finger wrote:
> Zero-initializing ether_type masked that the ether type would never be
> obtained for 8021x packets and the comparition against eapol_type
> would always fail.
> 
> Reported-by: Jes Sorensen <Jes.Sorensen@redhat.com>
> Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
> Cc: Stable <stable@vger.kernel.org>
> ---
>  drivers/staging/rtl8712/rtl871x_recv.c | 15 +++++++--------
>  1 file changed, 7 insertions(+), 8 deletions(-)

This breaks the build :(
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/staging/rtl8712/rtl871x_recv.c b/drivers/staging/rtl8712/rtl871x_recv.c
index 23ec684..d8d1a76 100644
--- a/drivers/staging/rtl8712/rtl871x_recv.c
+++ b/drivers/staging/rtl8712/rtl871x_recv.c
@@ -254,7 +254,7 @@  union recv_frame *r8712_portctrl(struct _adapter *adapter,
 	struct sta_info *psta;
 	struct	sta_priv *pstapriv;
 	union recv_frame *prtnframe;
-	u16 ether_type = 0;
+	u16 ether_type;
 
 	pstapriv = &adapter->stapriv;
 	ptr = get_recvframe_data(precv_frame);
@@ -262,16 +262,15 @@  union recv_frame *r8712_portctrl(struct _adapter *adapter,
 	psta_addr = pfhdr->attrib.ta;
 	psta = r8712_get_stainfo(pstapriv, psta_addr);
 	auth_alg = adapter->securitypriv.AuthAlgrthm;
-	if (auth_alg == 2) {
+	if (auth_alg == dot11AuthAlgrthm_8021X) {
+		/* get ether_type */
+		ptr = ptr + pfhdr->attrib.hdrlen + LLC_HEADER_SIZE;
+		memcpy(&ether_type, ptr, 2);
+		ether_type = ntohs((unsigned short)ether_type);
+
 		if ((psta != NULL) && (psta->ieee8021x_blocked)) {
 			/* blocked
 			 * only accept EAPOL frame */
-			prtnframe = precv_frame;
-			/*get ether_type */
-			ptr = ptr + pfhdr->attrib.hdrlen +
-			      pfhdr->attrib.iv_len + LLC_HEADER_SIZE;
-			memcpy(&ether_type, ptr, 2);
-			ether_type = ntohs((unsigned short)ether_type);
 			if (ether_type == 0x888e)
 				prtnframe = precv_frame;
 			else {