summaryrefslogtreecommitdiffstats
path: root/libssh/socket.c
diff options
context:
space:
mode:
Diffstat (limited to 'libssh/socket.c')
-rw-r--r--libssh/socket.c40
1 files changed, 25 insertions, 15 deletions
diff --git a/libssh/socket.c b/libssh/socket.c
index 03797d6..0fe4ad5 100644
--- a/libssh/socket.c
+++ b/libssh/socket.c
@@ -88,22 +88,32 @@ void ssh_socket_init(void) {
* \internal
* \brief creates a new Socket object
*/
-struct socket *ssh_socket_new(SSH_SESSION *session){
- struct socket *s;
+struct socket *ssh_socket_new(SSH_SESSION *session) {
+ struct socket *s;
- s = malloc(sizeof(struct socket));
- if (s = NULL) {
- return NULL;
- }
- s->fd=-1;
- s->last_errno=-1;
- s->session=session;
- s->in_buffer=buffer_new();
- s->out_buffer=buffer_new();
- s->data_to_read=0;
- s->data_to_write=0;
- s->data_except=0;
- return s;
+ s = malloc(sizeof(struct socket));
+ if (s == NULL) {
+ return NULL;
+ }
+ s->fd = -1;
+ s->last_errno = -1;
+ s->session = session;
+ s->in_buffer = buffer_new();
+ if (s->in_buffer == NULL) {
+ SAFE_FREE(s);
+ return NULL;
+ }
+ s->out_buffer=buffer_new();
+ if (s->out_buffer == NULL) {
+ buffer_free(s->in_buffer);
+ SAFE_FREE(s);
+ return NULL;
+ }
+ s->data_to_read = 0;
+ s->data_to_write = 0;
+ s->data_except = 0;
+
+ return s;
}
/* \internal