mirror of
https://git.libssh.org/projects/libssh.git
synced 2026-02-09 09:54:25 +09:00
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:
@@ -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 */
|
||||||
|
|||||||
Reference in New Issue
Block a user