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:
Johannes Berg 2013-11-25 21:56:07 +01:00 committed by Jouni Malinen
parent 100298e896
commit fe52c210cf
3 changed files with 12 additions and 6 deletions

View file

@ -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 */
}; };

View file

@ -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);

View file

@ -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