mirror of
https://git.libssh.org/projects/libssh.git
synced 2025-07-29 13:01:13 +03:00
sftp: fix format problems, style nit and building problems
Signed-off-by: tatataeki <shengzeyu19_98@163.com> Reviewed-by: Andreas Schneider <asn@cryptomilk.org> Reviewed-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com>
This commit is contained in:
@ -53,6 +53,7 @@ The goal is to show the API in action.
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
#include <inttypes.h>
|
||||||
|
|
||||||
|
|
||||||
#ifndef KEYS_FOLDER
|
#ifndef KEYS_FOLDER
|
||||||
@ -70,7 +71,7 @@ The goal is to show the API in action.
|
|||||||
|
|
||||||
#define MAX_HANDLE_NUM 10
|
#define MAX_HANDLE_NUM 10
|
||||||
#define MAX_ENTRIES_NUM_IN_PACKET 50
|
#define MAX_ENTRIES_NUM_IN_PACKET 50
|
||||||
#define MAX_LONG_NAME_LEN 150
|
#define MAX_LONG_NAME_LEN 350
|
||||||
|
|
||||||
#define SSH_SFTP_CALLBACK(name) \
|
#define SSH_SFTP_CALLBACK(name) \
|
||||||
static int name (sftp_client_message message)
|
static int name (sftp_client_message message)
|
||||||
@ -184,16 +185,16 @@ static int handle_close(int handle_ind) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int handle_close_by_pointer(struct sftp_handle* handle) {
|
static int handle_close_by_pointer(struct sftp_handle* handle) {
|
||||||
if(handle->type == NULL_HANDLE)
|
if (handle->type == NULL_HANDLE)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if(handle->fd > 0)
|
if (handle->fd > 0)
|
||||||
close(handle->fd);
|
close(handle->fd);
|
||||||
|
|
||||||
if(handle->dirp!=NULL)
|
if (handle->dirp!=NULL)
|
||||||
closedir(handle->dirp);
|
closedir(handle->dirp);
|
||||||
|
|
||||||
if(handle->name!=NULL){
|
if (handle->name!=NULL) {
|
||||||
free(handle->name);
|
free(handle->name);
|
||||||
handle->name = NULL;
|
handle->name = NULL;
|
||||||
}
|
}
|
||||||
@ -202,10 +203,10 @@ static int handle_close_by_pointer(struct sftp_handle* handle) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void free_handles(int handle_num) {
|
static void free_handles(int handle_num) {
|
||||||
|
int i;
|
||||||
for(int i = 0; i < handle_num; i++) {
|
for(i = 0; i < handle_num; i++) {
|
||||||
handle_close(i);
|
handle_close(i);
|
||||||
//reinit this handle
|
/* reinit this handle */
|
||||||
reinit_single_handle(&s_handle_table[i]);
|
reinit_single_handle(&s_handle_table[i]);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
@ -213,12 +214,13 @@ static void free_handles(int handle_num) {
|
|||||||
|
|
||||||
static int add_handle(int type, void *dirp, int fd, const char *name, void *session_id) {
|
static int add_handle(int type, void *dirp, int fd, const char *name, void *session_id) {
|
||||||
int ret = SSH_ERROR;
|
int ret = SSH_ERROR;
|
||||||
if(dirp == NULL && fd < 0){
|
int i;
|
||||||
|
if (dirp == NULL && fd < 0) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(int i = 0; i<MAX_HANDLE_NUM; i++) {
|
for (i = 0; i < MAX_HANDLE_NUM; i++) {
|
||||||
if(s_handle_table[i].type == NULL_HANDLE){
|
if (s_handle_table[i].type == NULL_HANDLE) {
|
||||||
s_handle_table[i].type = type;
|
s_handle_table[i].type = type;
|
||||||
s_handle_table[i].session_id = session_id;
|
s_handle_table[i].session_id = session_id;
|
||||||
s_handle_table[i].fd = fd;
|
s_handle_table[i].fd = fd;
|
||||||
@ -230,8 +232,8 @@ static int add_handle(int type, void *dirp, int fd, const char *name, void *sess
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(ret==SSH_ERROR)
|
if (ret == SSH_ERROR)
|
||||||
printf("no other space for new handle\n");
|
printf("no other space for new handle\n");
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@ -240,7 +242,7 @@ static int add_handle(int type, void *dirp, int fd, const char *name, void *sess
|
|||||||
static char* get_handle_name(struct sftp_handle* handle) {
|
static char* get_handle_name(struct sftp_handle* handle) {
|
||||||
char *ret = NULL;
|
char *ret = NULL;
|
||||||
|
|
||||||
if(handle!=NULL&&handle->name!=NULL)
|
if (handle != NULL && handle->name != NULL)
|
||||||
ret = handle->name;
|
ret = handle->name;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@ -273,33 +275,23 @@ static int unix_errno_to_ssh_stat(int u_errno) {
|
|||||||
case ENOTDIR:
|
case ENOTDIR:
|
||||||
case EBADF:
|
case EBADF:
|
||||||
case ELOOP:
|
case ELOOP:
|
||||||
{
|
|
||||||
ret = SSH_FX_NO_SUCH_FILE;
|
ret = SSH_FX_NO_SUCH_FILE;
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
case EPERM:
|
case EPERM:
|
||||||
case EACCES:
|
case EACCES:
|
||||||
case EFAULT:
|
case EFAULT:
|
||||||
{
|
|
||||||
ret = SSH_FX_PERMISSION_DENIED;
|
ret = SSH_FX_PERMISSION_DENIED;
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
case ENAMETOOLONG:
|
case ENAMETOOLONG:
|
||||||
case EINVAL:
|
case EINVAL:
|
||||||
{
|
|
||||||
ret = SSH_FX_BAD_MESSAGE;
|
ret = SSH_FX_BAD_MESSAGE;
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
case ENOSYS:
|
case ENOSYS:
|
||||||
{
|
|
||||||
ret = SSH_FX_OP_UNSUPPORTED;
|
ret = SSH_FX_OP_UNSUPPORTED;
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
default:
|
default:
|
||||||
{
|
|
||||||
ret = SSH_FX_FAILURE;
|
ret = SSH_FX_FAILURE;
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@ -431,19 +423,24 @@ static int process_open(sftp_client_message client_msg) {
|
|||||||
int handle_ind = -1;
|
int handle_ind = -1;
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
if (( (msg_flag&(uint32_t)SSH_FXF_READ) == SSH_FXF_READ) &&
|
if (((msg_flag&(uint32_t)SSH_FXF_READ) == SSH_FXF_READ) &&
|
||||||
( (msg_flag&(uint32_t)SSH_FXF_WRITE) == SSH_FXF_WRITE)) {
|
((msg_flag&(uint32_t)SSH_FXF_WRITE) == SSH_FXF_WRITE)) {
|
||||||
file_flag = O_RDWR; //file must exist
|
file_flag = O_RDWR; //file must exist
|
||||||
if ((msg_flag & (uint32_t)SSH_FXF_CREAT) == SSH_FXF_CREAT)
|
if ((msg_flag & (uint32_t)SSH_FXF_CREAT) == SSH_FXF_CREAT)
|
||||||
file_flag |= O_CREAT;
|
file_flag |= O_CREAT;
|
||||||
} else if ( (msg_flag&(uint32_t)SSH_FXF_WRITE) == SSH_FXF_WRITE ){
|
} else if ((msg_flag & (uint32_t)SSH_FXF_WRITE) == SSH_FXF_WRITE) {
|
||||||
file_flag = O_WRONLY;
|
file_flag = O_WRONLY;
|
||||||
if ( (msg_flag&(uint32_t)SSH_FXF_APPEND) == SSH_FXF_APPEND )
|
if ((msg_flag & (uint32_t)SSH_FXF_APPEND) == SSH_FXF_APPEND)
|
||||||
file_flag |= O_APPEND;
|
file_flag |= O_APPEND;
|
||||||
if ( (msg_flag&(uint32_t)SSH_FXF_CREAT) == SSH_FXF_CREAT )
|
if ((msg_flag & (uint32_t)SSH_FXF_CREAT) == SSH_FXF_CREAT)
|
||||||
file_flag |= O_CREAT;
|
file_flag |= O_CREAT;
|
||||||
} else if ( (msg_flag&(uint32_t)SSH_FXF_READ) == SSH_FXF_READ ){
|
} else if ((msg_flag & (uint32_t)SSH_FXF_READ) == SSH_FXF_READ) {
|
||||||
file_flag = O_RDONLY;
|
file_flag = O_RDONLY;
|
||||||
|
} else {
|
||||||
|
printf("undefined message flag\n");
|
||||||
|
sftp_reply_status(client_msg, SSH_FX_FAILURE, "Flag error");
|
||||||
|
ret = SSH_ERROR;
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
fd = open(filename, file_flag, 0600);
|
fd = open(filename, file_flag, 0600);
|
||||||
@ -496,7 +493,7 @@ static int process_read(sftp_client_message client_msg) {
|
|||||||
rv = lseek(fd, client_msg->offset, SEEK_SET);
|
rv = lseek(fd, client_msg->offset, SEEK_SET);
|
||||||
if (rv == -1) {
|
if (rv == -1) {
|
||||||
sftp_reply_status(client_msg, SSH_FX_FAILURE, NULL);
|
sftp_reply_status(client_msg, SSH_FX_FAILURE, NULL);
|
||||||
printf("error seeking file fd: %d at offset: %ld\n", fd, client_msg->offset);
|
printf("error seeking file fd: %d at offset: %" PRIu64 "\n", fd, client_msg->offset);
|
||||||
ret = SSH_ERROR;
|
ret = SSH_ERROR;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -545,7 +542,7 @@ static int process_write(sftp_client_message client_msg) {
|
|||||||
rv = lseek(fd, client_msg->offset, SEEK_SET);
|
rv = lseek(fd, client_msg->offset, SEEK_SET);
|
||||||
if (rv == -1) {
|
if (rv == -1) {
|
||||||
sftp_reply_status(client_msg, SSH_FX_FAILURE, NULL);
|
sftp_reply_status(client_msg, SSH_FX_FAILURE, NULL);
|
||||||
printf("error seeking file at offset: %ld\n", client_msg->offset);
|
printf("error seeking file at offset: %" PRIu64 "\n", client_msg->offset);
|
||||||
}
|
}
|
||||||
writen = write(fd, msg_data, len);
|
writen = write(fd, msg_data, len);
|
||||||
if(writen == len) {
|
if(writen == len) {
|
||||||
|
@ -864,15 +864,6 @@ LIBSSH_API char *sftp_canonicalize_path(sftp_session sftp, const char *path);
|
|||||||
*/
|
*/
|
||||||
LIBSSH_API int sftp_server_version(sftp_session sftp);
|
LIBSSH_API int sftp_server_version(sftp_session sftp);
|
||||||
|
|
||||||
|
|
||||||
LIBSSH_API int sftp_decode_channel_data_to_packet(sftp_session sftp, void *data);
|
|
||||||
|
|
||||||
LIBSSH_API sftp_client_message sftp_get_client_message_from_packet(sftp_session sftp);
|
|
||||||
|
|
||||||
LIBSSH_API int sftp_process_init_packet(sftp_client_message client_msg);
|
|
||||||
|
|
||||||
LIBSSH_API int sftp_reply_statvfs(sftp_client_message msg, sftp_statvfs_t st);
|
|
||||||
|
|
||||||
#ifdef WITH_SERVER
|
#ifdef WITH_SERVER
|
||||||
/**
|
/**
|
||||||
* @brief Create a new sftp server session.
|
* @brief Create a new sftp server session.
|
||||||
@ -900,6 +891,50 @@ LIBSSH_API int sftp_server_init(sftp_session sftp);
|
|||||||
* @param sftp The sftp session handle to free.
|
* @param sftp The sftp session handle to free.
|
||||||
*/
|
*/
|
||||||
LIBSSH_API void sftp_server_free(sftp_session sftp);
|
LIBSSH_API void sftp_server_free(sftp_session sftp);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Decode the data from channel buffer into sftp read_packet.
|
||||||
|
*
|
||||||
|
* @param sftp The sftp session handle.
|
||||||
|
*
|
||||||
|
* @param data The pointer to the data buffer of channel.
|
||||||
|
*
|
||||||
|
* @return Length of data deocded.
|
||||||
|
*/
|
||||||
|
LIBSSH_API int sftp_decode_channel_data_to_packet(sftp_session sftp, void *data);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the client message from a sftp packet.
|
||||||
|
*
|
||||||
|
* @param sftp The sftp session handle.
|
||||||
|
*
|
||||||
|
* @return The pointer to the generated sftp client message.
|
||||||
|
*/
|
||||||
|
LIBSSH_API sftp_client_message sftp_get_client_message_from_packet(sftp_session sftp);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Handle the sftp_init request from client.
|
||||||
|
*
|
||||||
|
* @param client_msg The pointer to client message.
|
||||||
|
*
|
||||||
|
* @return 0 on success, < 0 on error with ssh and sftp error set.
|
||||||
|
*
|
||||||
|
* @see sftp_get_error()
|
||||||
|
*/
|
||||||
|
LIBSSH_API int sftp_process_init_packet(sftp_client_message client_msg);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Handle the statvfs request, return information the mounted file system.
|
||||||
|
*
|
||||||
|
* @param msg The sftp client message.
|
||||||
|
*
|
||||||
|
* @param st The statvfs state of target file.
|
||||||
|
*
|
||||||
|
* @return 0 on success, < 0 on error with ssh and sftp error set.
|
||||||
|
*
|
||||||
|
* @see sftp_get_error()
|
||||||
|
*/
|
||||||
|
LIBSSH_API int sftp_reply_statvfs(sftp_client_message msg, sftp_statvfs_t st);
|
||||||
#endif /* WITH_SERVER */
|
#endif /* WITH_SERVER */
|
||||||
|
|
||||||
/* sftpserver.c */
|
/* sftpserver.c */
|
||||||
|
@ -457,9 +457,5 @@ LIBSSH_4_9_0 # Released
|
|||||||
ssh_session_set_disconnect_message;
|
ssh_session_set_disconnect_message;
|
||||||
ssh_userauth_publickey_auto_get_current_identity;
|
ssh_userauth_publickey_auto_get_current_identity;
|
||||||
ssh_vlog;
|
ssh_vlog;
|
||||||
sftp_get_client_message_from_packet;
|
|
||||||
sftp_process_init_packet;
|
|
||||||
sftp_decode_channel_data_to_packet;
|
|
||||||
sftp_reply_statvfs;
|
|
||||||
} LIBSSH_4_8_1;
|
} LIBSSH_4_8_1;
|
||||||
|
|
||||||
|
12
src/sftp.c
12
src/sftp.c
@ -354,7 +354,8 @@ void sftp_server_free(sftp_session sftp)
|
|||||||
SAFE_FREE(sftp);
|
SAFE_FREE(sftp);
|
||||||
}
|
}
|
||||||
|
|
||||||
int sftp_process_init_packet(sftp_client_message client_msg) {
|
int sftp_process_init_packet(sftp_client_message client_msg)
|
||||||
|
{
|
||||||
int ret = SSH_OK;
|
int ret = SSH_OK;
|
||||||
sftp_session sftp = client_msg->sftp;
|
sftp_session sftp = client_msg->sftp;
|
||||||
ssh_session session = sftp->session;
|
ssh_session session = sftp->session;
|
||||||
@ -434,7 +435,8 @@ void sftp_free(sftp_session sftp)
|
|||||||
SAFE_FREE(sftp);
|
SAFE_FREE(sftp);
|
||||||
}
|
}
|
||||||
|
|
||||||
int sftp_decode_channel_data_to_packet(sftp_session sftp, void *data) {
|
int sftp_decode_channel_data_to_packet(sftp_session sftp, void *data)
|
||||||
|
{
|
||||||
sftp_packet packet = sftp->read_packet;
|
sftp_packet packet = sftp->read_packet;
|
||||||
int nread;
|
int nread;
|
||||||
int payload_len;
|
int payload_len;
|
||||||
@ -451,12 +453,12 @@ int sftp_decode_channel_data_to_packet(sftp_session sftp, void *data) {
|
|||||||
if(payload_len > MAX_PACKET_LEN || payload_len < 0)
|
if(payload_len > MAX_PACKET_LEN || payload_len < 0)
|
||||||
return SSH_ERROR;
|
return SSH_ERROR;
|
||||||
|
|
||||||
offset = sizeof(int)+sizeof(uint8_t);
|
offset = sizeof(int) + sizeof(uint8_t);
|
||||||
to_read = payload_len - sizeof(uint8_t);
|
to_read = payload_len - sizeof(uint8_t);
|
||||||
ssh_buffer_add_data(packet->payload, (void*)((uint8_t *)data + offset), payload_len-sizeof(uint8_t));
|
ssh_buffer_add_data(packet->payload, (void*)((uint8_t *)data + offset), payload_len - sizeof(uint8_t));
|
||||||
nread = ssh_buffer_get_len(packet->payload);
|
nread = ssh_buffer_get_len(packet->payload);
|
||||||
|
|
||||||
/* We should check if we copy the whole data */
|
/* We should check if we copied the whole data */
|
||||||
if(nread != to_read)
|
if(nread != to_read)
|
||||||
return SSH_ERROR;
|
return SSH_ERROR;
|
||||||
|
|
||||||
|
@ -249,7 +249,8 @@ sftp_client_message sftp_get_client_message(sftp_session sftp) {
|
|||||||
return msg;
|
return msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
sftp_client_message sftp_get_client_message_from_packet(sftp_session sftp) {
|
sftp_client_message sftp_get_client_message_from_packet(sftp_session sftp)
|
||||||
|
{
|
||||||
ssh_session session = sftp->session;
|
ssh_session session = sftp->session;
|
||||||
sftp_packet packet;
|
sftp_packet packet;
|
||||||
sftp_client_message msg;
|
sftp_client_message msg;
|
||||||
@ -291,8 +292,9 @@ sftp_client_message sftp_get_client_message_from_packet(sftp_session sftp) {
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(msg->type!=SSH_FXP_INIT)
|
if (msg->type!=SSH_FXP_INIT) {
|
||||||
ssh_buffer_get_u32(payload, &msg->id);
|
ssh_buffer_get_u32(payload, &msg->id);
|
||||||
|
}
|
||||||
|
|
||||||
switch(msg->type) {
|
switch(msg->type) {
|
||||||
case SSH_FXP_INIT:
|
case SSH_FXP_INIT:
|
||||||
@ -718,8 +720,8 @@ int sftp_reply_data(sftp_client_message msg, const void *data, int len) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* zeyu added */
|
int sftp_reply_statvfs(sftp_client_message msg, sftp_statvfs_t st)
|
||||||
int sftp_reply_statvfs(sftp_client_message msg, sftp_statvfs_t st) {
|
{
|
||||||
ssh_buffer out;
|
ssh_buffer out;
|
||||||
|
|
||||||
out = ssh_buffer_new();
|
out = ssh_buffer_new();
|
||||||
|
@ -71,7 +71,7 @@
|
|||||||
|
|
||||||
#define MAX_HANDLE_NUM 10
|
#define MAX_HANDLE_NUM 10
|
||||||
#define MAX_ENTRIES_NUM_IN_PACKET 50
|
#define MAX_ENTRIES_NUM_IN_PACKET 50
|
||||||
#define MAX_LONG_NAME_LEN 150
|
#define MAX_LONG_NAME_LEN 300
|
||||||
|
|
||||||
#define SSH_SFTP_CALLBACK(name) \
|
#define SSH_SFTP_CALLBACK(name) \
|
||||||
static int name (sftp_client_message message)
|
static int name (sftp_client_message message)
|
||||||
@ -266,41 +266,30 @@ static const char* ssh_str_error(int u_errno) {
|
|||||||
|
|
||||||
static int unix_errno_to_ssh_stat(int u_errno) {
|
static int unix_errno_to_ssh_stat(int u_errno) {
|
||||||
int ret = SSH_OK;
|
int ret = SSH_OK;
|
||||||
switch (u_errno)
|
switch (u_errno) {
|
||||||
{
|
|
||||||
case 0:
|
case 0:
|
||||||
break;
|
break;
|
||||||
case ENOENT:
|
case ENOENT:
|
||||||
case ENOTDIR:
|
case ENOTDIR:
|
||||||
case EBADF:
|
case EBADF:
|
||||||
case ELOOP:
|
case ELOOP:
|
||||||
{
|
|
||||||
ret = SSH_FX_NO_SUCH_FILE;
|
ret = SSH_FX_NO_SUCH_FILE;
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
case EPERM:
|
case EPERM:
|
||||||
case EACCES:
|
case EACCES:
|
||||||
case EFAULT:
|
case EFAULT:
|
||||||
{
|
|
||||||
ret = SSH_FX_PERMISSION_DENIED;
|
ret = SSH_FX_PERMISSION_DENIED;
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
case ENAMETOOLONG:
|
case ENAMETOOLONG:
|
||||||
case EINVAL:
|
case EINVAL:
|
||||||
{
|
|
||||||
ret = SSH_FX_BAD_MESSAGE;
|
ret = SSH_FX_BAD_MESSAGE;
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
case ENOSYS:
|
case ENOSYS:
|
||||||
{
|
|
||||||
ret = SSH_FX_OP_UNSUPPORTED;
|
ret = SSH_FX_OP_UNSUPPORTED;
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
default:
|
default:
|
||||||
{
|
|
||||||
ret = SSH_FX_FAILURE;
|
ret = SSH_FX_FAILURE;
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@ -437,13 +426,13 @@ static int process_open(sftp_client_message client_msg) {
|
|||||||
file_flag = O_RDWR; //file must exist
|
file_flag = O_RDWR; //file must exist
|
||||||
if ((msg_flag & (uint32_t)SSH_FXF_CREAT) == SSH_FXF_CREAT)
|
if ((msg_flag & (uint32_t)SSH_FXF_CREAT) == SSH_FXF_CREAT)
|
||||||
file_flag |= O_CREAT;
|
file_flag |= O_CREAT;
|
||||||
} else if ( (msg_flag&(uint32_t)SSH_FXF_WRITE) == SSH_FXF_WRITE ){
|
} else if ( (msg_flag&(uint32_t)SSH_FXF_WRITE) == SSH_FXF_WRITE ) {
|
||||||
file_flag = O_WRONLY;
|
file_flag = O_WRONLY;
|
||||||
if ( (msg_flag&(uint32_t)SSH_FXF_APPEND) == SSH_FXF_APPEND )
|
if ( (msg_flag&(uint32_t)SSH_FXF_APPEND) == SSH_FXF_APPEND )
|
||||||
file_flag |= O_APPEND;
|
file_flag |= O_APPEND;
|
||||||
if ( (msg_flag&(uint32_t)SSH_FXF_CREAT) == SSH_FXF_CREAT )
|
if ( (msg_flag&(uint32_t)SSH_FXF_CREAT) == SSH_FXF_CREAT )
|
||||||
file_flag |= O_CREAT;
|
file_flag |= O_CREAT;
|
||||||
} else if ( (msg_flag&(uint32_t)SSH_FXF_READ) == SSH_FXF_READ ){
|
} else {
|
||||||
file_flag = O_RDONLY;
|
file_flag = O_RDONLY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -123,18 +123,6 @@ static int setup_default_server(void **state)
|
|||||||
torture_write_file(ecdsa_hostkey,
|
torture_write_file(ecdsa_hostkey,
|
||||||
torture_get_testkey(SSH_KEYTYPE_ECDSA_P521, 0));
|
torture_get_testkey(SSH_KEYTYPE_ECDSA_P521, 0));
|
||||||
|
|
||||||
// sftp_server = getenv("TORTURE_SFTP_SERVER");
|
|
||||||
// if (sftp_server == NULL) {
|
|
||||||
// for (i = 0; i < sftp_sl_size; i++) {
|
|
||||||
// sftp_server = sftp_server_locations[i];
|
|
||||||
// rc = lstat(sftp_server, &sb);
|
|
||||||
// if (rc == 0) {
|
|
||||||
// break;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// assert_non_null(sftp_server);
|
|
||||||
|
|
||||||
/* Create default server state */
|
/* Create default server state */
|
||||||
ss = (struct server_state_st *)calloc(1, sizeof(struct server_state_st));
|
ss = (struct server_state_st *)calloc(1, sizeof(struct server_state_st));
|
||||||
assert_non_null(ss);
|
assert_non_null(ss);
|
||||||
@ -442,7 +430,7 @@ static void torture_server_test_sftp_function(void **state)
|
|||||||
assert_non_null(fichier);
|
assert_non_null(fichier);
|
||||||
|
|
||||||
to = sftp_open(sftp, "ssh-copy", O_WRONLY | O_CREAT, 0700);
|
to = sftp_open(sftp, "ssh-copy", O_WRONLY | O_CREAT, 0700);
|
||||||
assert_non_null(fichier);
|
assert_non_null(to);
|
||||||
|
|
||||||
read_len = sftp_read(fichier, data, 4096);
|
read_len = sftp_read(fichier, data, 4096);
|
||||||
write_len = sftp_write(to, data, read_len);
|
write_len = sftp_write(to, data, read_len);
|
||||||
|
Reference in New Issue
Block a user