Use monotonic clock for last_sae_token_key_update
Just the usual, with a new function os_reltime_initialized() thrown in that checks whether time has ever been retrieved (time can't be completely zero). Signed-hostap: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
100298e896
commit
fe52c210cf
3 changed files with 12 additions and 6 deletions
|
@ -241,7 +241,7 @@ struct hostapd_data {
|
||||||
#ifdef CONFIG_SAE
|
#ifdef CONFIG_SAE
|
||||||
/** Key used for generating SAE anti-clogging tokens */
|
/** Key used for generating SAE anti-clogging tokens */
|
||||||
u8 sae_token_key[8];
|
u8 sae_token_key[8];
|
||||||
os_time_t last_sae_token_key_update;
|
struct os_reltime last_sae_token_key_update;
|
||||||
#endif /* CONFIG_SAE */
|
#endif /* CONFIG_SAE */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -411,17 +411,17 @@ static struct wpabuf * auth_build_token_req(struct hostapd_data *hapd,
|
||||||
{
|
{
|
||||||
struct wpabuf *buf;
|
struct wpabuf *buf;
|
||||||
u8 *token;
|
u8 *token;
|
||||||
struct os_time t;
|
struct os_reltime now;
|
||||||
|
|
||||||
os_get_time(&t);
|
os_get_reltime(&now);
|
||||||
if (hapd->last_sae_token_key_update == 0 ||
|
if (!os_reltime_initialized(&hapd->last_sae_token_key_update) ||
|
||||||
t.sec > hapd->last_sae_token_key_update + 60) {
|
os_reltime_expired(&now, &hapd->last_sae_token_key_update, 60)) {
|
||||||
if (random_get_bytes(hapd->sae_token_key,
|
if (random_get_bytes(hapd->sae_token_key,
|
||||||
sizeof(hapd->sae_token_key)) < 0)
|
sizeof(hapd->sae_token_key)) < 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
wpa_hexdump(MSG_DEBUG, "SAE: Updated token key",
|
wpa_hexdump(MSG_DEBUG, "SAE: Updated token key",
|
||||||
hapd->sae_token_key, sizeof(hapd->sae_token_key));
|
hapd->sae_token_key, sizeof(hapd->sae_token_key));
|
||||||
hapd->last_sae_token_key_update = t.sec;
|
hapd->last_sae_token_key_update = now;
|
||||||
}
|
}
|
||||||
|
|
||||||
buf = wpabuf_alloc(SHA256_MAC_LEN);
|
buf = wpabuf_alloc(SHA256_MAC_LEN);
|
||||||
|
|
|
@ -108,6 +108,12 @@ static inline int os_reltime_expired(struct os_reltime *now,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static inline int os_reltime_initialized(struct os_reltime *t)
|
||||||
|
{
|
||||||
|
return t->sec != 0 || t->usec != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* os_mktime - Convert broken-down time into seconds since 1970-01-01
|
* os_mktime - Convert broken-down time into seconds since 1970-01-01
|
||||||
* @year: Four digit year
|
* @year: Four digit year
|
||||||
|
|
Loading…
Reference in a new issue