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:
parent
fc119fb009
commit
d03dc91e27
1 changed files with 1 additions and 0 deletions
|
@ -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))
|
||||||
|
|
Loading…
Reference in a new issue