agent: Fix some memory leaks in error paths.

Found by Coverity.
This commit is contained in:
Andreas Schneider
2012-10-08 20:46:35 +02:00
parent f2c183b413
commit a6e7d1f255

View File

@@ -295,12 +295,14 @@ int ssh_agent_get_ident_count(struct ssh_session_struct *session) {
reply = ssh_buffer_new(); reply = ssh_buffer_new();
if (reply == NULL) { if (reply == NULL) {
ssh_buffer_free(request);
ssh_set_error(session, SSH_FATAL, "Not enough space"); ssh_set_error(session, SSH_FATAL, "Not enough space");
return -1; return -1;
} }
if (agent_talk(session, request, reply) < 0) { if (agent_talk(session, request, reply) < 0) {
ssh_buffer_free(request); ssh_buffer_free(request);
ssh_buffer_free(reply);
return 0; return 0;
} }
ssh_buffer_free(request); ssh_buffer_free(request);
@@ -440,6 +442,7 @@ ssh_string ssh_agent_sign_data(ssh_session session,
/* create request */ /* create request */
if (buffer_add_u8(request, SSH2_AGENTC_SIGN_REQUEST) < 0) { if (buffer_add_u8(request, SSH2_AGENTC_SIGN_REQUEST) < 0) {
ssh_buffer_free(request);
return NULL; return NULL;
} }
@@ -482,6 +485,7 @@ ssh_string ssh_agent_sign_data(ssh_session session,
/* send the request */ /* send the request */
if (agent_talk(session, request, reply) < 0) { if (agent_talk(session, request, reply) < 0) {
ssh_buffer_free(request); ssh_buffer_free(request);
ssh_buffer_free(reply);
return NULL; return NULL;
} }
ssh_buffer_free(request); ssh_buffer_free(request);