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 {
|
} else {
|
||||||
data = session->kexinit_data;
|
data = session->kexinit_data;
|
||||||
data_len = session->kexinit_data_len;
|
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);
|
rc = _libssh2_transport_write(session, data, data_len);
|
||||||
|
@ -836,6 +836,9 @@ session_free(LIBSSH2_SESSION *session)
|
|||||||
LIBSSH2_FREE(session, session->hostkey_prefs);
|
LIBSSH2_FREE(session, session->hostkey_prefs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (session->local.kexinit) {
|
||||||
|
LIBSSH2_FREE(session, session->local.kexinit);
|
||||||
|
}
|
||||||
if (session->local.crypt_prefs) {
|
if (session->local.crypt_prefs) {
|
||||||
LIBSSH2_FREE(session, 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);
|
LIBSSH2_FREE(session, session->local.lang_prefs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (session->remote.kexinit) {
|
||||||
|
LIBSSH2_FREE(session, session->remote.kexinit);
|
||||||
|
}
|
||||||
if (session->remote.crypt_prefs) {
|
if (session->remote.crypt_prefs) {
|
||||||
LIBSSH2_FREE(session, 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
|
* 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) {
|
if (session->startup_data) {
|
||||||
LIBSSH2_FREE(session, session->startup_data);
|
LIBSSH2_FREE(session, session->startup_data);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user