summaryrefslogtreecommitdiffstats
path: root/libssh/session.c
diff options
context:
space:
mode:
authorAndreas Schneider <mail@cynapses.org>2009-04-01 21:27:54 +0000
committerAndreas Schneider <mail@cynapses.org>2009-04-01 21:27:54 +0000
commit7b464d4e158e90ddfdd70b88694ba2a039f271b9 (patch)
treecd46ed48e4672c84dc8e1602a1f6a1c49c5a38e1 /libssh/session.c
parent891539af6cbdbdfabb8d37fb491f7f8cadf9823c (diff)
downloadlibssh-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.c51
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) {