diff options
author | Jakub Jelen <jjelen@redhat.com> | 2021-01-07 15:54:00 +0100 |
---|---|---|
committer | Jakub Jelen <jjelen@redhat.com> | 2021-01-12 12:46:25 +0100 |
commit | 95a4651d86c5a937d0fa17030a0db0308dc4a690 (patch) | |
tree | 82ba155b2136baf4de823006b697ff00e68417ce /src/packet_cb.c | |
parent | 832abe7f4ab6f905b15926393952ef8134c18c81 (diff) | |
download | libssh-95a4651d86c5a937d0fa17030a0db0308dc4a690.tar.gz libssh-95a4651d86c5a937d0fa17030a0db0308dc4a690.tar.xz libssh-95a4651d86c5a937d0fa17030a0db0308dc4a690.zip |
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>
Diffstat (limited to 'src/packet_cb.c')
-rw-r--r-- | src/packet_cb.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/packet_cb.c b/src/packet_cb.c index 4e692915..39575b17 100644 --- a/src/packet_cb.c +++ b/src/packet_cb.c @@ -129,6 +129,8 @@ SSH_PACKET_CALLBACK(ssh_packet_newkeys){ } 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) { goto error; } @@ -152,9 +154,7 @@ SSH_PACKET_CALLBACK(ssh_packet_newkeys){ server_key, session->next_crypto->secret_hash, session->next_crypto->digest_len); - ssh_string_burn(sig_blob); - SSH_STRING_FREE(sig_blob); - ssh_signature_free(sig); + SSH_SIGNATURE_FREE(sig); if (rc == SSH_ERROR) { goto error; } @@ -170,6 +170,9 @@ SSH_PACKET_CALLBACK(ssh_packet_newkeys){ session->ssh_connection_callback(session); return SSH_PACKET_USED; error: + SSH_SIGNATURE_FREE(sig); + ssh_string_burn(sig_blob); + SSH_STRING_FREE(sig_blob); session->session_state = SSH_SESSION_STATE_ERROR; return SSH_PACKET_USED; } |