From 8fecf4d74c49823760857609bc7f95b7eed5500e Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Thu, 23 Apr 2009 07:13:25 +0000 Subject: Improve parse_handle_msg(). git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@588 7dcaeef0-15fb-0310-b436-a5af3365683c --- libssh/sftp.c | 45 +++++++++++++++++++++++++-------------------- 1 file changed, 25 insertions(+), 20 deletions(-) (limited to 'libssh') diff --git a/libssh/sftp.c b/libssh/sftp.c index 787cf743..5e5bfdcd 100644 --- a/libssh/sftp.c +++ b/libssh/sftp.c @@ -631,28 +631,33 @@ static void status_msg_free(STATUS_MESSAGE *status){ } static SFTP_FILE *parse_handle_msg(SFTP_MESSAGE *msg){ - SFTP_FILE *file; - if(msg->packet_type != SSH_FXP_HANDLE){ - ssh_set_error(msg->sftp->session,SSH_FATAL,"Not a ssh_fxp_handle message passed in !"); - return NULL; - } + SFTP_FILE *file; - file = malloc(sizeof(SFTP_FILE)); - if (file == NULL) { - return NULL; - } + if(msg->packet_type != SSH_FXP_HANDLE) { + ssh_set_error(msg->sftp->session, SSH_FATAL, + "Not a ssh_fxp_handle message passed in!"); + return NULL; + } - memset(file,0,sizeof(*file)); - file->sftp=msg->sftp; - file->handle=buffer_get_ssh_string(msg->payload); - file->offset=0; - file->eof=0; - if(!file->handle){ - ssh_set_error(msg->sftp->session,SSH_FATAL,"Invalid SSH_FXP_HANDLE message"); - free(file); - return NULL; - } - return file; + file = malloc(sizeof(SFTP_FILE)); + if (file == NULL) { + return NULL; + } + ZERO_STRUCTP(file); + + file->handle = buffer_get_ssh_string(msg->payload); + if (file->handle == NULL) { + ssh_set_error(msg->sftp->session, SSH_FATAL, + "Invalid SSH_FXP_HANDLE message"); + SAFE_FREE(file); + return NULL; + } + + file->sftp = msg->sftp; + file->offset = 0; + file->eof = 0; + + return file; } /* Open a directory */ -- cgit