Don't free ephemeral ECDH keys twice.

ecdh_compute_shared() was changed to immediately delete the ephemeral key after
the shared secret was computed.  Therefore, the pointer to the ecdh_t struct
should be zeroed so it won't be freed again when a struct sptps_t is freed.
This commit is contained in:
Guus Sliepen 2013-05-11 14:13:23 +02:00
parent fc119fb009
commit d03dc91e27

View file

@ -319,6 +319,7 @@ static bool receive_sig(sptps_t *s, const char *data, uint16_t len) {
char shared[ECDH_SHARED_SIZE]; char shared[ECDH_SHARED_SIZE];
if(!ecdh_compute_shared(s->ecdh, s->hiskex + 1 + 32, shared)) if(!ecdh_compute_shared(s->ecdh, s->hiskex + 1 + 32, shared))
return false; return false;
s->ecdh = NULL;
// Generate key material from shared secret. // Generate key material from shared secret.
if(!generate_key_material(s, shared, sizeof shared)) if(!generate_key_material(s, shared, sizeof shared))