session_free: free more data to avoid memory leaks

This commit is contained in:
John Little 2010-07-01 19:56:06 +02:00 committed by Daniel Stenberg
parent c375e5e5ad
commit ef4c8718c2
2 changed files with 12 additions and 0 deletions

View File

@ -1133,6 +1133,9 @@ static int kexinit(LIBSSH2_SESSION * session)
} else {
data = session->kexinit_data;
data_len = session->kexinit_data_len;
/* zap the variables to ensure there is NOT a double free later */
session->kexinit_data = NULL;
session->kexinit_data_len = 0;
}
rc = _libssh2_transport_write(session, data, data_len);

View File

@ -836,6 +836,9 @@ session_free(LIBSSH2_SESSION *session)
LIBSSH2_FREE(session, session->hostkey_prefs);
}
if (session->local.kexinit) {
LIBSSH2_FREE(session, session->local.kexinit);
}
if (session->local.crypt_prefs) {
LIBSSH2_FREE(session, session->local.crypt_prefs);
}
@ -849,6 +852,9 @@ session_free(LIBSSH2_SESSION *session)
LIBSSH2_FREE(session, session->local.lang_prefs);
}
if (session->remote.kexinit) {
LIBSSH2_FREE(session, session->remote.kexinit);
}
if (session->remote.crypt_prefs) {
LIBSSH2_FREE(session, session->remote.crypt_prefs);
}
@ -865,6 +871,9 @@ session_free(LIBSSH2_SESSION *session)
/*
* Make sure all memory used in the state variables are free
*/
if (session->kexinit_data) {
LIBSSH2_FREE(session, session->kexinit_data);
}
if (session->startup_data) {
LIBSSH2_FREE(session, session->startup_data);
}