wpa_supplicant: Use relative time for TKIP Michael MIC failures
The MMIC failure code should use monotonic time to check whether 60 seconds have elapsed or not. For type-safety, use struct os_reltime for the timestamp variable, and also convert to using os_reltime_expired(). Signed-hostap: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
4e1eae1dff
commit
6473e5c842
2 changed files with 6 additions and 6 deletions
|
@ -2183,13 +2183,13 @@ wpa_supplicant_event_michael_mic_failure(struct wpa_supplicant *wpa_s,
|
||||||
union wpa_event_data *data)
|
union wpa_event_data *data)
|
||||||
{
|
{
|
||||||
int pairwise;
|
int pairwise;
|
||||||
struct os_time t;
|
struct os_reltime t;
|
||||||
|
|
||||||
wpa_msg(wpa_s, MSG_WARNING, "Michael MIC failure detected");
|
wpa_msg(wpa_s, MSG_WARNING, "Michael MIC failure detected");
|
||||||
pairwise = (data && data->michael_mic_failure.unicast);
|
pairwise = (data && data->michael_mic_failure.unicast);
|
||||||
os_get_time(&t);
|
os_get_reltime(&t);
|
||||||
if ((wpa_s->last_michael_mic_error &&
|
if ((wpa_s->last_michael_mic_error.sec &&
|
||||||
t.sec - wpa_s->last_michael_mic_error <= 60) ||
|
!os_reltime_expired(&t, &wpa_s->last_michael_mic_error, 60)) ||
|
||||||
wpa_s->pending_mic_error_report) {
|
wpa_s->pending_mic_error_report) {
|
||||||
if (wpa_s->pending_mic_error_report) {
|
if (wpa_s->pending_mic_error_report) {
|
||||||
/*
|
/*
|
||||||
|
@ -2267,7 +2267,7 @@ wpa_supplicant_event_michael_mic_failure(struct wpa_supplicant *wpa_s,
|
||||||
wpa_sm_key_request(wpa_s->wpa, 1, pairwise);
|
wpa_sm_key_request(wpa_s->wpa, 1, pairwise);
|
||||||
#endif /* CONFIG_DELAYED_MIC_ERROR_REPORT */
|
#endif /* CONFIG_DELAYED_MIC_ERROR_REPORT */
|
||||||
}
|
}
|
||||||
wpa_s->last_michael_mic_error = t.sec;
|
wpa_s->last_michael_mic_error = t;
|
||||||
wpa_s->mic_errors_seen++;
|
wpa_s->mic_errors_seen++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -344,7 +344,7 @@ struct wpa_supplicant {
|
||||||
char *confanother;
|
char *confanother;
|
||||||
struct wpa_config *conf;
|
struct wpa_config *conf;
|
||||||
int countermeasures;
|
int countermeasures;
|
||||||
os_time_t last_michael_mic_error;
|
struct os_reltime last_michael_mic_error;
|
||||||
u8 bssid[ETH_ALEN];
|
u8 bssid[ETH_ALEN];
|
||||||
u8 pending_bssid[ETH_ALEN]; /* If wpa_state == WPA_ASSOCIATING, this
|
u8 pending_bssid[ETH_ALEN]; /* If wpa_state == WPA_ASSOCIATING, this
|
||||||
* field contains the target BSSID. */
|
* field contains the target BSSID. */
|
||||||
|
|
Loading…
Reference in a new issue