diff options
author | Matt Johnston <matt@ucc.asn.au> | 2015-01-04 23:10:59 +0800 |
---|---|---|
committer | Matt Johnston <matt@ucc.asn.au> | 2015-01-04 23:10:59 +0800 |
commit | b24984deb36300de38e2191d58ce368422c68183 (patch) | |
tree | ed29cd0d7e614636d23c2f768d8b50bae4fcfe4b /common-kex.c | |
parent | eabd9f5e609e5e184e4c28c1c0c4879c9476e4ae (diff) |
clear hash state memory after use
Diffstat (limited to 'common-kex.c')
-rw-r--r-- | common-kex.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/common-kex.c b/common-kex.c index f5119d2..65746a2 100644 --- a/common-kex.c +++ b/common-kex.c @@ -303,7 +303,7 @@ static void hashkeys(unsigned char *out, unsigned int outlen, hash_desc->done(&hs2, tmpout); memcpy(&out[offset], tmpout, MIN(outlen - offset, hash_desc->hashsize)); } - + m_burn(&hs2, sizeof(hash_state)); } /* Generate the actual encryption/integrity keys, using the results of the @@ -403,6 +403,7 @@ static void gen_new_keys() { m_burn(C2S_key, sizeof(C2S_key)); m_burn(S2C_IV, sizeof(S2C_IV)); m_burn(S2C_key, sizeof(S2C_key)); + m_burn(&hs, sizeof(hash_state)); TRACE(("leave gen_new_keys")) } @@ -798,6 +799,7 @@ static void finish_kexhashbuf(void) { buf_burn(ses.kexhashbuf); buf_free(ses.kexhashbuf); + m_burn(&hs, sizeof(hash_state)); ses.kexhashbuf = NULL; /* first time around, we set the session_id to H */ @@ -805,7 +807,6 @@ static void finish_kexhashbuf(void) { /* create the session_id, this never needs freeing */ ses.session_id = buf_newcopy(ses.hash); } - } /* read the other side's algo list. buf_match_algo is a callback to match |