aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAris Adamantiadis <aris@0xbadc0de.be>2011-09-23 22:27:46 +0200
committerAris Adamantiadis <aris@0xbadc0de.be>2011-09-23 22:27:46 +0200
commit046aa02f39947fff16dff6cfe6db6dcf53fb6d96 (patch)
tree765228347e3217fe5fc5f8bfb445151132508c9d /src
parent8a3b02f68dad8f5dd2f236e26d44dd67b3597be4 (diff)
downloadlibssh-046aa02f39947fff16dff6cfe6db6dcf53fb6d96.tar.gz
libssh-046aa02f39947fff16dff6cfe6db6dcf53fb6d96.tar.xz
libssh-046aa02f39947fff16dff6cfe6db6dcf53fb6d96.zip
Fix bugs found by clang
Diffstat (limited to 'src')
-rw-r--r--src/auth.c4
-rw-r--r--src/channels.c2
-rw-r--r--src/ecdh.c3
-rw-r--r--src/server.c2
4 files changed, 9 insertions, 2 deletions
diff --git a/src/auth.c b/src/auth.c
index 8ab80ee0..b4b17eb5 100644
--- a/src/auth.c
+++ b/src/auth.c
@@ -966,6 +966,10 @@ int ssh_userauth_agent(ssh_session session,
}
if (!session->agent_state){
session->agent_state = malloc(sizeof(struct ssh_agent_state_struct));
+ if (!session->agent_state){
+ ssh_set_error_oom(session);
+ return SSH_AUTH_ERROR;
+ }
ZERO_STRUCTP(session->agent_state);
session->agent_state->state=SSH_AGENT_STATE_NONE;
}
diff --git a/src/channels.c b/src/channels.c
index 9a4e938d..8879b0fe 100644
--- a/src/channels.c
+++ b/src/channels.c
@@ -1542,7 +1542,7 @@ static int channel_request(ssh_channel channel, const char *request,
}
pending:
rc = ssh_handle_packets_termination(session,SSH_TIMEOUT_USER, ssh_channel_request_termination, channel);
- if(session->session_state == SSH_SESSION_STATE_ERROR) {
+ if(session->session_state == SSH_SESSION_STATE_ERROR || rc == SSH_ERROR) {
channel->request_state = SSH_CHANNEL_REQ_STATE_ERROR;
}
/* we received something */
diff --git a/src/ecdh.c b/src/ecdh.c
index 706ad689..95834730 100644
--- a/src/ecdh.c
+++ b/src/ecdh.c
@@ -251,7 +251,8 @@ int ssh_server_ecdh_init(ssh_session session, ssh_buffer packet){
ssh_log(session,SSH_LOG_PROTOCOL, "SSH_MSG_KEXDH_REPLY sent");
rc = packet_send(session);
-
+ if (rc == SSH_ERROR)
+ goto error;
/* Send the MSG_NEWKEYS */
if (buffer_add_u8(session->out_buffer, SSH2_MSG_NEWKEYS) < 0) {
diff --git a/src/server.c b/src/server.c
index 5acbd4ae..054e435e 100644
--- a/src/server.c
+++ b/src/server.c
@@ -165,6 +165,8 @@ SSH_PACKET_CALLBACK(ssh_packet_kexdh_init){
default:
ssh_set_error(session,SSH_FATAL,"Wrong kex type in ssh_packet_kexdh_init");
}
+ if (rc == SSH_ERROR)
+ session->session_state = SSH_SESSION_STATE_ERROR;
error:
leave_function();
return SSH_PACKET_USED;