session_free: free more data to avoid memory leaks
This commit is contained in:
parent
c375e5e5ad
commit
ef4c8718c2
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user