Fixed replacing existing reauthentication data

This commit is contained in:
Martin Willi
2009-11-12 10:34:01 +01:00
parent 2dbac2ab9c
commit 0107f5b687
@@ -124,26 +124,26 @@ static identification_t *gen_reauth(private_eap_simaka_reauth_provider_t *this,
identification_t *permanent; identification_t *permanent;
data = this->reauth->get(this->reauth, id); data = this->reauth->get(this->reauth, id);
id = id->clone(id);
if (data) if (data)
{ /* update existing entry */ { /* update existing entry */
permanent = this->permanent->remove(this->permanent, data->id); permanent = this->permanent->remove(this->permanent, data->id);
if (permanent) if (permanent)
{ {
permanent->destroy(permanent); data->id->destroy(data->id);
data->id = gen_identity(this);
this->permanent->put(this->permanent, data->id, permanent);
} }
data->id->destroy(data->id);
} }
else else
{ /* generate new entry */ { /* generate new entry */
data = malloc_thing(reauth_data_t); data = malloc_thing(reauth_data_t);
data->counter = 0; data->counter = 0;
data->id = gen_identity(this);
id = id->clone(id);
this->reauth->put(this->reauth, id, data); this->reauth->put(this->reauth, id, data);
this->permanent->put(this->permanent, data->id, id);
} }
memcpy(data->mk, mk, HASH_SIZE_SHA1); memcpy(data->mk, mk, HASH_SIZE_SHA1);
data->id = gen_identity(this);
this->permanent->put(this->permanent, data->id, id);
return data->id->clone(data->id); return data->id->clone(data->id);
} }