staging: rtl8188eu: Do not byteswap half initialized variable
authorJes Sorensen <Jes.Sorensen@redhat.com>
Mon, 19 May 2014 08:08:19 +0000 (10:08 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 23 May 2014 16:50:54 +0000 (01:50 +0900)
Copying 16 bits into an uninitialized 32 bit stack variable and then
byteswapping it can provide 'interesting' results.

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/rtl8188eu/core/rtw_mlme_ext.c

index e854732478b89db929862215d15b70751f1308e3..f5b49f351a6ade13a909a34b3b2f243040feb6ff 100644 (file)
@@ -6551,7 +6551,6 @@ u8 collect_bss_info(struct adapter *padapter, struct recv_frame *precv_frame, st
        struct registry_priv    *pregistrypriv = &padapter->registrypriv;
        struct mlme_ext_priv    *pmlmeext = &padapter->mlmeextpriv;
        struct mlme_ext_info    *pmlmeinfo = &(pmlmeext->mlmext_info);
-       __le32 le32_tmp;
 
        len = packet_len - sizeof(struct rtw_ieee80211_hdr_3addr);
 
@@ -6665,8 +6664,8 @@ u8 collect_bss_info(struct adapter *padapter, struct recv_frame *precv_frame, st
                return _SUCCESS;
        }
 
-       memcpy(&le32_tmp, rtw_get_beacon_interval_from_ie(bssid->IEs), 2);
-       bssid->Configuration.BeaconPeriod = le32_to_cpu(le32_tmp);
+       bssid->Configuration.BeaconPeriod =
+               get_unaligned_le16(rtw_get_beacon_interval_from_ie(bssid->IEs));
 
        val16 = rtw_get_capability((struct wlan_bssid_ex *)bssid);