version 1.112, 2018/06/01 03:33:53 |
version 1.113, 2019/01/01 23:10:53 |
|
|
int does_write; /* if nonzero, banned for readonly mode */ |
int does_write; /* if nonzero, banned for readonly mode */ |
}; |
}; |
|
|
struct sftp_handler handlers[] = { |
static const struct sftp_handler handlers[] = { |
/* NB. SSH2_FXP_OPEN does the readonly check in the handler itself */ |
/* NB. SSH2_FXP_OPEN does the readonly check in the handler itself */ |
{ "open", NULL, SSH2_FXP_OPEN, process_open, 0 }, |
{ "open", NULL, SSH2_FXP_OPEN, process_open, 0 }, |
{ "close", NULL, SSH2_FXP_CLOSE, process_close, 0 }, |
{ "close", NULL, SSH2_FXP_CLOSE, process_close, 0 }, |
|
|
}; |
}; |
|
|
/* SSH2_FXP_EXTENDED submessages */ |
/* SSH2_FXP_EXTENDED submessages */ |
struct sftp_handler extended_handlers[] = { |
static const struct sftp_handler extended_handlers[] = { |
{ "posix-rename", "posix-rename@openssh.com", 0, |
{ "posix-rename", "posix-rename@openssh.com", 0, |
process_extended_posix_rename, 1 }, |
process_extended_posix_rename, 1 }, |
{ "statvfs", "statvfs@openssh.com", 0, process_extended_statvfs, 0 }, |
{ "statvfs", "statvfs@openssh.com", 0, process_extended_statvfs, 0 }, |
|
|
}; |
}; |
|
|
static int |
static int |
request_permitted(struct sftp_handler *h) |
request_permitted(const struct sftp_handler *h) |
{ |
{ |
char *result; |
char *result; |
|
|
|
|
HANDLE_FILE |
HANDLE_FILE |
}; |
}; |
|
|
Handle *handles = NULL; |
static Handle *handles = NULL; |
u_int num_handles = 0; |
static u_int num_handles = 0; |
int first_unused_handle = -1; |
static int first_unused_handle = -1; |
|
|
static void handle_unused(int i) |
static void handle_unused(int i) |
{ |
{ |