Improve parse_handle_msg().

git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@588 7dcaeef0-15fb-0310-b436-a5af3365683c
This commit is contained in:
Andreas Schneider
2009-04-23 07:13:25 +00:00
parent b5bda67235
commit 8fecf4d74c

View File

@@ -631,28 +631,33 @@ static void status_msg_free(STATUS_MESSAGE *status){
} }
static SFTP_FILE *parse_handle_msg(SFTP_MESSAGE *msg){ static SFTP_FILE *parse_handle_msg(SFTP_MESSAGE *msg){
SFTP_FILE *file; 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;
}
file = malloc(sizeof(SFTP_FILE)); if(msg->packet_type != SSH_FXP_HANDLE) {
if (file == NULL) { ssh_set_error(msg->sftp->session, SSH_FATAL,
return NULL; "Not a ssh_fxp_handle message passed in!");
} return NULL;
}
memset(file,0,sizeof(*file)); file = malloc(sizeof(SFTP_FILE));
file->sftp=msg->sftp; if (file == NULL) {
file->handle=buffer_get_ssh_string(msg->payload); return NULL;
file->offset=0; }
file->eof=0; ZERO_STRUCTP(file);
if(!file->handle){
ssh_set_error(msg->sftp->session,SSH_FATAL,"Invalid SSH_FXP_HANDLE message"); file->handle = buffer_get_ssh_string(msg->payload);
free(file); if (file->handle == NULL) {
return NULL; ssh_set_error(msg->sftp->session, SSH_FATAL,
} "Invalid SSH_FXP_HANDLE message");
return file; SAFE_FREE(file);
return NULL;
}
file->sftp = msg->sftp;
file->offset = 0;
file->eof = 0;
return file;
} }
/* Open a directory */ /* Open a directory */