diff options
author | Oliver Stöneberg <oliverst@online.de> | 2013-10-18 14:57:33 +0200 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2013-10-18 14:57:33 +0200 |
commit | 4c300313c3e04b35b884b3bd33a7cff7a135ff65 (patch) | |
tree | 511995b23e50815d5fa9a54f027d6d3e6a8e1262 | |
parent | bec13a6ac02327f7d52aa6ef12a824eea780ddfb (diff) | |
download | libssh-4c300313c3e04b35b884b3bd33a7cff7a135ff65.tar.gz libssh-4c300313c3e04b35b884b3bd33a7cff7a135ff65.tar.xz libssh-4c300313c3e04b35b884b3bd33a7cff7a135ff65.zip |
client: Added a missing NULL pointer check.
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
-rw-r--r-- | src/client.c | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/src/client.c b/src/client.c index dad988ed..6d425d33 100644 --- a/src/client.c +++ b/src/client.c @@ -105,14 +105,19 @@ 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) { + leave_function(); + 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); |