diff options
author | Andreas Schneider <asn@cryptomilk.org> | 2012-10-05 11:01:55 +0200 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2012-10-05 11:12:13 +0200 |
commit | fd2064d0b4cdafc35a3430e7528e32a6abf2d513 (patch) | |
tree | fed8e03b1993a612c8324f0939e83c8fad695e1b /src/messages.c | |
parent | 8567fc8d8cf31cce0e2bf98321b6acd4bb9b4cfb (diff) | |
download | libssh-fd2064d0b4cdafc35a3430e7528e32a6abf2d513.tar.gz libssh-fd2064d0b4cdafc35a3430e7528e32a6abf2d513.tar.xz libssh-fd2064d0b4cdafc35a3430e7528e32a6abf2d513.zip |
messages: Fix error path of ssh_packet_userauth_info_response.
This fixes a memory leak on error.
Diffstat (limited to 'src/messages.c')
-rw-r--r-- | src/messages.c | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/src/messages.c b/src/messages.c index c912053f..57ff5b12 100644 --- a/src/messages.c +++ b/src/messages.c @@ -716,8 +716,7 @@ SSH_PACKET_CALLBACK(ssh_packet_userauth_info_response){ if (session->kbdint == NULL) { ssh_set_error_oom(session); - leave_function(); - return SSH_PACKET_USED; + goto error; } } @@ -729,8 +728,8 @@ SSH_PACKET_CALLBACK(ssh_packet_userauth_info_response){ nanswers, nanswers); ssh_kbdint_free(session->kbdint); session->kbdint = NULL; - leave_function(); - return SSH_PACKET_USED; + + goto error; } if(nanswers != session->kbdint->nprompts) { @@ -745,8 +744,8 @@ SSH_PACKET_CALLBACK(ssh_packet_userauth_info_response){ ssh_set_error_oom(session); ssh_kbdint_free(session->kbdint); session->kbdint = NULL; - leave_function(); - return SSH_PACKET_USED; + + goto error; } memset(session->kbdint->answers, 0, nanswers * sizeof(char *)); @@ -757,8 +756,8 @@ SSH_PACKET_CALLBACK(ssh_packet_userauth_info_response){ session->kbdint->nanswers = i; ssh_kbdint_free(session->kbdint); session->kbdint = NULL; - leave_function(); - return SSH_PACKET_USED; + + goto error; } session->kbdint->answers[i] = ssh_string_to_char(tmp); ssh_string_free(tmp); @@ -767,23 +766,20 @@ SSH_PACKET_CALLBACK(ssh_packet_userauth_info_response){ session->kbdint->nanswers = i; ssh_kbdint_free(session->kbdint); session->kbdint = NULL; - leave_function(); - return SSH_PACKET_USED; + + goto error; } } - goto end; + ssh_message_queue(session,msg); + leave_function(); + return SSH_PACKET_USED; error: ssh_message_free(msg); leave_function(); return SSH_PACKET_USED; - -end: - ssh_message_queue(session,msg); - leave_function(); - return SSH_PACKET_USED; } #endif |