aboutsummaryrefslogtreecommitdiff
path: root/src/packet_cb.c
diff options
context:
space:
mode:
authorJakub Jelen <jjelen@redhat.com>2021-01-07 15:54:00 +0100
committerJakub Jelen <jjelen@redhat.com>2021-01-12 12:46:25 +0100
commit95a4651d86c5a937d0fa17030a0db0308dc4a690 (patch)
tree82ba155b2136baf4de823006b697ff00e68417ce /src/packet_cb.c
parent832abe7f4ab6f905b15926393952ef8134c18c81 (diff)
downloadlibssh-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.c9
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;
}