diff options
Diffstat (limited to 'libssh/src/client.c')
-rw-r--r-- | libssh/src/client.c | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/libssh/src/client.c b/libssh/src/client.c index dad988ed..1fb963d7 100644 --- a/libssh/src/client.c +++ b/libssh/src/client.c @@ -105,14 +105,18 @@ static int callback_receive_banner(const void *data, size_t len, void *user) { ssh_pcap_context_write(session->pcap_ctx,SSH_PCAP_DIR_IN,buffer,i+1,i+1); } #endif - if(buffer[i]=='\r') - buffer[i]='\0'; - if(buffer[i]=='\n'){ - buffer[i]='\0'; - str=strdup(buffer); - /* number of bytes read */ - ret=i+1; - session->serverbanner=str; + if(buffer[i]=='\r') { + buffer[i]='\0'; + } + if (buffer[i]=='\n') { + buffer[i] = '\0'; + str = strdup(buffer); + if (str == NULL) { + return SSH_ERROR; + } + /* number of bytes read */ + ret = i + 1; + session->serverbanner = str; session->session_state=SSH_SESSION_STATE_BANNER_RECEIVED; SSH_LOG(SSH_LOG_PACKET,"Received banner: %s",str); session->ssh_connection_callback(session); @@ -529,7 +533,7 @@ pending: if (timeout == 0) { timeout = 10 * 1000; } - SSH_LOG(SSH_LOG_PACKET,"ssh_connect: Actual timeout : %d", timeout); + SSH_LOG(SSH_LOG_PACKET,"Actual timeout : %d", timeout); ret = ssh_handle_packets_termination(session, timeout, ssh_connect_termination, session); if (ret == SSH_ERROR || !ssh_connect_termination(session)) { ssh_set_error(session, SSH_FATAL, @@ -546,7 +550,7 @@ pending: session->session_state = SSH_SESSION_STATE_ERROR; } } - SSH_LOG(SSH_LOG_PACKET,"ssh_connect: Actual state : %d",session->session_state); + SSH_LOG(SSH_LOG_PACKET,"current state : %d",session->session_state); if(!ssh_is_blocking(session) && !ssh_connect_termination(session)){ return SSH_AGAIN; } |