mirror of
https://git.libssh.org/projects/libssh.git
synced 2026-02-09 09:54:25 +09:00
Clean memory on failure paths
Thanks oss-fuzz:
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=28490
Signed-off-by: Jakub Jelen <jjelen@redhat.com>
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit 95a4651d86)
This commit is contained in:
1
src/dh.c
1
src/dh.c
@@ -361,6 +361,7 @@ SSH_PACKET_CALLBACK(ssh_packet_client_dh_reply){
|
|||||||
rc = ssh_dh_keypair_set_keys(crypto->dh_ctx, DH_SERVER_KEYPAIR,
|
rc = ssh_dh_keypair_set_keys(crypto->dh_ctx, DH_SERVER_KEYPAIR,
|
||||||
NULL, server_pubkey);
|
NULL, server_pubkey);
|
||||||
if (rc != SSH_OK) {
|
if (rc != SSH_OK) {
|
||||||
|
SSH_STRING_FREE(pubkey_blob);
|
||||||
bignum_safe_free(server_pubkey);
|
bignum_safe_free(server_pubkey);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -129,6 +129,8 @@ SSH_PACKET_CALLBACK(ssh_packet_newkeys){
|
|||||||
}
|
}
|
||||||
|
|
||||||
rc = ssh_pki_import_signature_blob(sig_blob, server_key, &sig);
|
rc = ssh_pki_import_signature_blob(sig_blob, server_key, &sig);
|
||||||
|
ssh_string_burn(sig_blob);
|
||||||
|
SSH_STRING_FREE(sig_blob);
|
||||||
if (rc != SSH_OK) {
|
if (rc != SSH_OK) {
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
@@ -152,9 +154,7 @@ SSH_PACKET_CALLBACK(ssh_packet_newkeys){
|
|||||||
server_key,
|
server_key,
|
||||||
session->next_crypto->secret_hash,
|
session->next_crypto->secret_hash,
|
||||||
session->next_crypto->digest_len);
|
session->next_crypto->digest_len);
|
||||||
ssh_string_burn(sig_blob);
|
SSH_SIGNATURE_FREE(sig);
|
||||||
SSH_STRING_FREE(sig_blob);
|
|
||||||
ssh_signature_free(sig);
|
|
||||||
if (rc == SSH_ERROR) {
|
if (rc == SSH_ERROR) {
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
@@ -170,6 +170,9 @@ SSH_PACKET_CALLBACK(ssh_packet_newkeys){
|
|||||||
session->ssh_connection_callback(session);
|
session->ssh_connection_callback(session);
|
||||||
return SSH_PACKET_USED;
|
return SSH_PACKET_USED;
|
||||||
error:
|
error:
|
||||||
|
SSH_SIGNATURE_FREE(sig);
|
||||||
|
ssh_string_burn(sig_blob);
|
||||||
|
SSH_STRING_FREE(sig_blob);
|
||||||
session->session_state = SSH_SESSION_STATE_ERROR;
|
session->session_state = SSH_SESSION_STATE_ERROR;
|
||||||
return SSH_PACKET_USED;
|
return SSH_PACKET_USED;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user