mirror of https://gitee.com/openkylin/linux.git
mac80211: fix unaligned access in ieee80211_wep_encrypt_data
Signed-off-by: Ivan Kuten <ivan.kuten@promwad.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
b50563a685
commit
860c6e6a15
|
@ -17,6 +17,7 @@
|
||||||
#include <linux/err.h>
|
#include <linux/err.h>
|
||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
#include <linux/scatterlist.h>
|
#include <linux/scatterlist.h>
|
||||||
|
#include <asm/unaligned.h>
|
||||||
|
|
||||||
#include <net/mac80211.h>
|
#include <net/mac80211.h>
|
||||||
#include "ieee80211_i.h"
|
#include "ieee80211_i.h"
|
||||||
|
@ -125,10 +126,10 @@ void ieee80211_wep_encrypt_data(struct crypto_blkcipher *tfm, u8 *rc4key,
|
||||||
{
|
{
|
||||||
struct blkcipher_desc desc = { .tfm = tfm };
|
struct blkcipher_desc desc = { .tfm = tfm };
|
||||||
struct scatterlist sg;
|
struct scatterlist sg;
|
||||||
__le32 *icv;
|
__le32 icv;
|
||||||
|
|
||||||
icv = (__le32 *)(data + data_len);
|
icv = cpu_to_le32(~crc32_le(~0, data, data_len));
|
||||||
*icv = cpu_to_le32(~crc32_le(~0, data, data_len));
|
put_unaligned(icv, (__le32 *)(data + data_len));
|
||||||
|
|
||||||
crypto_blkcipher_setkey(tfm, rc4key, klen);
|
crypto_blkcipher_setkey(tfm, rc4key, klen);
|
||||||
sg_init_one(&sg, data, data_len + WEP_ICV_LEN);
|
sg_init_one(&sg, data, data_len + WEP_ICV_LEN);
|
||||||
|
|
Loading…
Reference in New Issue