1
1
cosmetic changes in buffer.c
added debugging enter_functions() in sftp.c


git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@185 7dcaeef0-15fb-0310-b436-a5af3365683c
Этот коммит содержится в:
Aris Adamantiadis 2008-11-01 22:28:39 +00:00
родитель 3b25cbf134
Коммит 0e8cf3b082
3 изменённых файлов: 28 добавлений и 17 удалений

Просмотреть файл

@ -31,7 +31,7 @@ PROJECT_NAME = libssh
# This could be handy for archiving the generated documentation or # This could be handy for archiving the generated documentation or
# if some version control system is used. # if some version control system is used.
PROJECT_NUMBER = 0.2-svn PROJECT_NUMBER = 0.2.1-svn
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
# base path where the generated documentation will be put. # base path where the generated documentation will be put.

Просмотреть файл

@ -37,7 +37,7 @@ BUFFER *buffer_new(){
BUFFER *buffer=malloc(sizeof(BUFFER)); BUFFER *buffer=malloc(sizeof(BUFFER));
memset(buffer,0,sizeof(BUFFER)); memset(buffer,0,sizeof(BUFFER));
return buffer; return buffer;
} }
/** \brief desallocate a buffer /** \brief desallocate a buffer
* \param buffer buffer to free * \param buffer buffer to free
@ -50,7 +50,7 @@ void buffer_free(BUFFER *buffer){
} }
memset(buffer,'x',sizeof (*buffer)); memset(buffer,'x',sizeof (*buffer));
free(buffer); free(buffer);
} }
static void realloc_buffer(BUFFER *buffer,int needed){ static void realloc_buffer(BUFFER *buffer,int needed){
int smallest=1; int smallest=1;
@ -88,12 +88,12 @@ void buffer_add_data(BUFFER *buffer,const void *data,int len){
realloc_buffer(buffer,buffer->used+len); realloc_buffer(buffer,buffer->used+len);
memcpy(buffer->data+buffer->used,data,len); memcpy(buffer->data+buffer->used,data,len);
buffer->used+=len; buffer->used+=len;
} }
void buffer_add_ssh_string(BUFFER *buffer,STRING *string){ void buffer_add_ssh_string(BUFFER *buffer,STRING *string){
u32 len=ntohl(string->size); u32 len=ntohl(string->size);
buffer_add_data(buffer,string,len+sizeof(u32)); buffer_add_data(buffer,string,len+sizeof(u32));
} }
void buffer_add_u32(BUFFER *buffer,u32 data){ void buffer_add_u32(BUFFER *buffer,u32 data){
buffer_add_data(buffer,&data,sizeof(data)); buffer_add_data(buffer,&data,sizeof(data));

Просмотреть файл

@ -179,21 +179,29 @@ SFTP_PACKET *sftp_packet_read(SFTP_SESSION *sftp){
return packet; return packet;
} }
static SFTP_MESSAGE *sftp_message_new(){ static SFTP_MESSAGE *sftp_message_new(SFTP_SESSION *sftp){
sftp_enter_function();
SFTP_MESSAGE *msg=malloc(sizeof(SFTP_MESSAGE)); SFTP_MESSAGE *msg=malloc(sizeof(SFTP_MESSAGE));
memset(msg,0,sizeof(*msg)); memset(msg,0,sizeof(*msg));
msg->payload=buffer_new(); msg->payload=buffer_new();
msg->sftp=sftp;
sftp_leave_function();
return msg; return msg;
} }
static void sftp_message_free(SFTP_MESSAGE *msg){ static void sftp_message_free(SFTP_MESSAGE *msg){
SFTP_SESSION *sftp=msg->sftp;
sftp_enter_function();
if(msg->payload) if(msg->payload)
buffer_free(msg->payload); buffer_free(msg->payload);
free(msg); free(msg);
sftp_leave_function();
} }
SFTP_MESSAGE *sftp_get_message(SFTP_PACKET *packet){ SFTP_MESSAGE *sftp_get_message(SFTP_PACKET *packet){
SFTP_MESSAGE *msg=sftp_message_new(); SFTP_SESSION *sftp=packet->sftp;
SFTP_MESSAGE *msg=sftp_message_new(sftp);
sftp_enter_function();
msg->sftp=packet->sftp; msg->sftp=packet->sftp;
msg->packet_type=packet->type; msg->packet_type=packet->type;
if((packet->type!=SSH_FXP_STATUS)&&(packet->type!=SSH_FXP_HANDLE) && if((packet->type!=SSH_FXP_STATUS)&&(packet->type!=SSH_FXP_HANDLE) &&
@ -201,15 +209,18 @@ SFTP_MESSAGE *sftp_get_message(SFTP_PACKET *packet){
&& (packet->type != SSH_FXP_NAME)){ && (packet->type != SSH_FXP_NAME)){
ssh_set_error(packet->sftp->session,SSH_FATAL,"get_message : unknown packet type %d\n",packet->type); ssh_set_error(packet->sftp->session,SSH_FATAL,"get_message : unknown packet type %d\n",packet->type);
sftp_message_free(msg); sftp_message_free(msg);
sftp_leave_function();
return NULL; return NULL;
} }
if(buffer_get_u32(packet->payload,&msg->id)!=sizeof(u32)){ if(buffer_get_u32(packet->payload,&msg->id)!=sizeof(u32)){
ssh_set_error(packet->sftp->session,SSH_FATAL,"invalid packet %d : no ID",packet->type); ssh_set_error(packet->sftp->session,SSH_FATAL,"invalid packet %d : no ID",packet->type);
sftp_message_free(msg); sftp_message_free(msg);
sftp_leave_function();
return NULL; return NULL;
} }
ssh_say(2,"packet with id %d type %d\n",msg->id,msg->packet_type); ssh_say(2,"packet with id %d type %d\n",msg->id,msg->packet_type);
buffer_add_data(msg->payload,buffer_get_rest(packet->payload),buffer_get_rest_len(packet->payload)); buffer_add_data(msg->payload,buffer_get_rest(packet->payload),buffer_get_rest_len(packet->payload));
sftp_leave_function();
return msg; return msg;
} }