added parse_bare,parse_safer

This commit is contained in:
wangyu 2017-07-26 23:55:42 +08:00 committed by wangyu
parent 1695879605
commit dec07e3c19

@ -1840,29 +1840,36 @@ int send_bare(const packet_info_t &info,const char* data,int len)
send_raw(info,send_data_buf2,new_len);
return 0;
}
int recv_bare(packet_info_t &info,char* & data,int & len)
int parse_bare(const char *input,int input_len,char* & data,int & len) //allow overlap
{
static char recv_data_buf[buf_len];
if(recv_raw(info,data,len)<0)
{
//printf("recv_raw_fail in recv bare\n");
return -1;
}
if(len==0) //dont decrpyt zero length packet;
{
return 0;
}
if(my_decrypt(data,recv_data_buf,len,key)!=0)
if(my_decrypt(input,recv_data_buf,input_len,key)!=0)
{
mylog(log_debug,"decrypt_fail in recv bare\n");
return -1;
}
len=input_len;
data=recv_data_buf+sizeof(iv_t);
len-=sizeof(iv_t);
return 0;
}
int recv_bare(packet_info_t &info,char* & data,int & len)
{
if(recv_raw(info,data,len)<0)
{
//printf("recv_raw_fail in recv bare\n");
return -1;
}
parse_bare(data,len,data,len);
return 0;
}
int numbers_to_char(id_t id1,id_t id2,id_t id3,char * &data,int len)
{
@ -1954,17 +1961,11 @@ int send_data_safer(packet_info_t &info,const char* data,int len,uint32_t conv_n
return 0;
}
int recv_safer(packet_info_t &info,char* &data,int &len)
int parse_safer(const char * input,int input_len,char* &data,int &len)//allow overlap
{
char * recv_data;int recv_len;
static char recv_data_buf[buf_len];
if(recv_raw(info,recv_data,recv_len)!=0) return -1;
//printf("1111111111111111\n");
if(my_decrypt(recv_data,recv_data_buf,recv_len,key2)!=0)
if(my_decrypt(input,recv_data_buf,input_len,key2)!=0)
{
//printf("decrypt fail\n");
return -1;
@ -1995,7 +1996,7 @@ int recv_safer(packet_info_t &info,char* &data,int &len)
//printf("recv _len %d\n ",recv_len);
data=recv_data_buf+sizeof(anti_replay_seq_t)+sizeof(id_t)*2;
len=recv_len-(sizeof(anti_replay_seq_t)+sizeof(id_t)*2 );
len=input_len-(sizeof(anti_replay_seq_t)+sizeof(id_t)*2 );
if(len<0)
@ -2006,6 +2007,16 @@ int recv_safer(packet_info_t &info,char* &data,int &len)
return 0;
}
int recv_safer(packet_info_t &info,char* &data,int &len)
{
char * recv_data;int recv_len;
static char recv_data_buf[buf_len];
if(recv_raw(info,recv_data,recv_len)!=0) return -1;
return parse_safer(recv_data,recv_len,data,len);
}
/*
int send_bare_deprecated(const packet_info_t &info,const char* data,int len)