unsigned char data[MAX_GSM_DIALED_DIGITS_NUMBER+4];
- if (num_len > MAX_GSM_DIALED_DIGITS_NUMBER)
- num_len = MAX_GSM_DIALED_DIGITS_NUMBER;
+ if (num_len >= MAX_GSM_DIALED_DIGITS_NUMBER)
+ num_len = MAX_GSM_DIALED_DIGITS_NUMBER - 1;
data[0] = call_id;
data[1] = call_type;
memset(&data[4], 0, MAX_GSM_DIALED_DIGITS_NUMBER);
memcpy(&data[4], number, num_len);
+ data[4+num_len] = '\0';
LXT_MESSAGE packet;
TAPIMessageInit(&packet);
{
int num_len = 0, ret = 0, tmp = 0;
char number[MAX_GSM_DIALED_DIGITS_NUMBER];
- char *p, data[8 + MAX_GSM_DIALED_DIGITS_NUMBER];
+ char *p, data[MAX_GSM_DIALED_DIGITS_NUMBER*2];
unsigned char ss_present_indi ;
unsigned char ss_call_type ;
unsigned char ss_no_cli_cause ;
else
{
tmp = (int)p[3];
- if(tmp < 0 || tmp > MAX_GSM_DIALED_DIGITS_NUMBER){
+ if(tmp < 0){
TRACE(MSGL_VGSM_INFO, "ERROR!! Invalid value of packet.data.\n");
+ callback_callist();
return -1;
+ } else if ( tmp >= MAX_GSM_DIALED_DIGITS_NUMBER){
+ TRACE(MSGL_VGSM_INFO, "The number is too long. It will be cut.\n");
+ num_len = MAX_GSM_DIALED_DIGITS_NUMBER - 1;
+ } else {
+ num_len = tmp;
}
- num_len = tmp;
memcpy(number, &p[7], num_len);
+ number[num_len] = '\0';
log_msg(MSGL_VGSM_INFO," call num len %d \n", num_len);
ss_present_indi = 0;
ss_no_cli_cause = 0;
for(i=0; i<resp_entry[0].count; i++) {
TRACE(MSGL_VGSM_INFO,"i : %d, type : %d\n", i, resp_entry[i].type);
if(resp_entry[i].type == 4 && resp_entry[i].ss_mode == 3) { // 'All incoming calls' has set
- TRACE(MSGL_VGSM_INFO, "no call. Incoming Call Barring is set \n");
+ TRACE(MSGL_VGSM_INFO, "Incoming Call Barring is set \n");
return -1;
}
}