# HG changeset patch # User Matt Johnston # Date 1420384259 -28800 # Node ID ed85797bbc85301263c54210ec570f6585c6507d # Parent 9bf46570868ff160fc4ce939cb35e0ccd9c053d1 clear hash state memory after use diff -r 9bf46570868f -r ed85797bbc85 common-kex.c --- a/common-kex.c Sun Jan 04 22:32:38 2015 +0800 +++ b/common-kex.c Sun Jan 04 23:10:59 2015 +0800 @@ -303,7 +303,7 @@ 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 @@ 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 @@ 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 @@ /* 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