|
17 | 17 | #include <asm/unaligned.h>
|
18 | 18 | #include <net/mac80211.h>
|
19 | 19 | #include <crypto/aes.h>
|
| 20 | +#include <crypto/algapi.h> |
20 | 21 |
|
21 | 22 | #include "ieee80211_i.h"
|
22 | 23 | #include "michael.h"
|
@@ -153,7 +154,7 @@ ieee80211_rx_h_michael_mic_verify(struct ieee80211_rx_data *rx)
|
153 | 154 | data_len = skb->len - hdrlen - MICHAEL_MIC_LEN;
|
154 | 155 | key = &rx->key->conf.key[NL80211_TKIP_DATA_OFFSET_RX_MIC_KEY];
|
155 | 156 | michael_mic(key, hdr, data, data_len, mic);
|
156 |
| - if (memcmp(mic, data + data_len, MICHAEL_MIC_LEN) != 0) |
| 157 | + if (crypto_memneq(mic, data + data_len, MICHAEL_MIC_LEN)) |
157 | 158 | goto mic_fail;
|
158 | 159 |
|
159 | 160 | /* remove Michael MIC from payload */
|
@@ -1048,7 +1049,7 @@ ieee80211_crypto_aes_cmac_decrypt(struct ieee80211_rx_data *rx)
|
1048 | 1049 | bip_aad(skb, aad);
|
1049 | 1050 | ieee80211_aes_cmac(key->u.aes_cmac.tfm, aad,
|
1050 | 1051 | skb->data + 24, skb->len - 24, mic);
|
1051 |
| - if (memcmp(mic, mmie->mic, sizeof(mmie->mic)) != 0) { |
| 1052 | + if (crypto_memneq(mic, mmie->mic, sizeof(mmie->mic))) { |
1052 | 1053 | key->u.aes_cmac.icverrors++;
|
1053 | 1054 | return RX_DROP_UNUSABLE;
|
1054 | 1055 | }
|
@@ -1098,7 +1099,7 @@ ieee80211_crypto_aes_cmac_256_decrypt(struct ieee80211_rx_data *rx)
|
1098 | 1099 | bip_aad(skb, aad);
|
1099 | 1100 | ieee80211_aes_cmac_256(key->u.aes_cmac.tfm, aad,
|
1100 | 1101 | skb->data + 24, skb->len - 24, mic);
|
1101 |
| - if (memcmp(mic, mmie->mic, sizeof(mmie->mic)) != 0) { |
| 1102 | + if (crypto_memneq(mic, mmie->mic, sizeof(mmie->mic))) { |
1102 | 1103 | key->u.aes_cmac.icverrors++;
|
1103 | 1104 | return RX_DROP_UNUSABLE;
|
1104 | 1105 | }
|
@@ -1202,7 +1203,7 @@ ieee80211_crypto_aes_gmac_decrypt(struct ieee80211_rx_data *rx)
|
1202 | 1203 | if (ieee80211_aes_gmac(key->u.aes_gmac.tfm, aad, nonce,
|
1203 | 1204 | skb->data + 24, skb->len - 24,
|
1204 | 1205 | mic) < 0 ||
|
1205 |
| - memcmp(mic, mmie->mic, sizeof(mmie->mic)) != 0) { |
| 1206 | + crypto_memneq(mic, mmie->mic, sizeof(mmie->mic))) { |
1206 | 1207 | key->u.aes_gmac.icverrors++;
|
1207 | 1208 | return RX_DROP_UNUSABLE;
|
1208 | 1209 | }
|
|
0 commit comments