diff options
author | Andreas Schneider <mail@cynapses.org> | 2009-04-01 21:27:54 +0000 |
---|---|---|
committer | Andreas Schneider <mail@cynapses.org> | 2009-04-01 21:27:54 +0000 |
commit | 7b464d4e158e90ddfdd70b88694ba2a039f271b9 (patch) | |
tree | cd46ed48e4672c84dc8e1602a1f6a1c49c5a38e1 /libssh/session.c | |
parent | 891539af6cbdbdfabb8d37fb491f7f8cadf9823c (diff) | |
download | libssh-7b464d4e158e90ddfdd70b88694ba2a039f271b9.tar.gz libssh-7b464d4e158e90ddfdd70b88694ba2a039f271b9.tar.xz libssh-7b464d4e158e90ddfdd70b88694ba2a039f271b9.zip |
Improve ssh_new().
git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@331 7dcaeef0-15fb-0310-b436-a5af3365683c
Diffstat (limited to 'libssh/session.c')
-rw-r--r-- | libssh/session.c | 51 |
1 files changed, 34 insertions, 17 deletions
diff --git a/libssh/session.c b/libssh/session.c index 02eaf0b..f25be41 100644 --- a/libssh/session.c +++ b/libssh/session.c @@ -40,23 +40,40 @@ * \returns new ssh_session pointer */ SSH_SESSION *ssh_new(void) { - SSH_SESSION *session=malloc(sizeof (SSH_SESSION)); - memset(session,0,sizeof(SSH_SESSION)); - session->next_crypto=crypto_new(); - if (session->next_crypto == NULL) { - goto err; - } - session->maxchannel=FIRST_CHANNEL; - session->socket = ssh_socket_new(session); - if (session->socket == NULL) { - goto err; - } - session->alive=0; - session->auth_methods=0; - session->blocking=1; - session->log_indent=0; - session->out_buffer=buffer_new(); - session->in_buffer=buffer_new(); + SSH_SESSION *session; + session = malloc(sizeof (SSH_SESSION)); + if (session == NULL) { + return NULL; + } + + ZERO_STRUCTP(session); + + session->next_crypto = crypto_new(); + if (session->next_crypto == NULL) { + goto err; + } + + session->maxchannel = FIRST_CHANNEL; + session->socket = ssh_socket_new(session); + if (session->socket == NULL) { + goto err; + } + + session->alive = 0; + session->auth_methods = 0; + session->blocking = 1; + session->log_indent = 0; + + session->out_buffer = buffer_new(); + if (session->out_buffer == NULL) { + goto err; + } + + session->in_buffer=buffer_new(); + if (session->in_buffer == NULL) { + goto err; + } + #ifndef _WIN32 session->agent = agent_new(session); if (session->agent == NULL) { |