enum type_of_number ton;
enum numbering_plan_identifier npi;
int dialing_number_len; /**< Dialing Number length */
- char dialing_number[SAT_DIALING_NUMBER_LEN_MAX]; /**< Dialing Number*/
+ char dialing_number[SAT_DIALING_NUMBER_LEN_MAX + 1]; /**< Dialing Number*/
};
/*
*/
struct tel_sat_subaddress{
int subaddress_len;
- char subaddress[SAT_SUB_ADDR_LEN_MAX];
+ char subaddress[SAT_SUB_ADDR_LEN_MAX + 1];
};
/*
*/
struct tel_sat_ccp{
int data_len;
- char data[SAT_CCP_DATA_LEN_MAX];
+ char data[SAT_CCP_DATA_LEN_MAX + 1];
};
/*
struct tel_sat_sms_tpdu{
enum sms_tpdu_type tpdu_type;
int data_len;
- char data[SAT_SMS_TPDU_SMS_DATA_LEN_MAX];
+ char data[SAT_SMS_TPDU_SMS_DATA_LEN_MAX + 1];
};
/*
enum type_of_number ton;
enum numbering_plan_identifier npi;
unsigned char string_len; /**< SS string length */
- char ss_string[SAT_SS_STRING_LEN_MAX]; /**< SS stringr*/
+ char ss_string[SAT_SS_STRING_LEN_MAX + 1]; /**< SS stringr*/
};
/*
int is_digit_only;
struct data_coding_scheme dcs;
int string_length;
- char string[SAT_TEXT_STRING_LEN_MAX+1];
+ char string[SAT_TEXT_STRING_LEN_MAX + 1];
};
/*
struct tel_sat_ussd_string{
struct data_coding_scheme dsc;
unsigned char string_len; /**< USSD string length */
- char ussd_string[SAT_USSD_STRING_LEN_MAX]; /**< USSD stringr*/
+ char ussd_string[SAT_USSD_STRING_LEN_MAX + 1]; /**< USSD stringr*/
};
/*
enum tel_sim_img_coding_scheme ics;
unsigned short icon_data_len;
unsigned short clut_data_len;
- char icon_file[SAT_IMG_DATA_FILE_PATH_LEN_MAX];
- char clut_file[SAT_IMG_DATA_FILE_PATH_LEN_MAX];
+ char icon_file[SAT_IMG_DATA_FILE_PATH_LEN_MAX + 1];
+ char clut_file[SAT_IMG_DATA_FILE_PATH_LEN_MAX + 1];
};
struct tel_sat_icon_identifier{
*/
struct tel_sat_dtmf_string{
int dtmf_length;
- char dtmf_string[SAT_DTMF_STRING_LEN_MAX];
+ char dtmf_string[SAT_DTMF_STRING_LEN_MAX + 1];
};
/*
*/
struct tel_sat_url{
int url_length;
- char url[SAT_URL_LEN_MAX];
+ char url[SAT_URL_LEN_MAX + 1];
};
/*
*/
struct tel_sat_provisioning_file_ref{
int file_path_length;
- char file_path[SAT_PROVISIONING_FILE_PATH_LEN_MAX];
+ char file_path[SAT_PROVISIONING_FILE_PATH_LEN_MAX + 1];
};
*/
struct tel_sat_channel_data{
unsigned char data_string_len; /**< channel data string length */
- char data_string[SAT_CHANNEL_DATA_STRING_LEN_MAX];
+ char data_string[SAT_CHANNEL_DATA_STRING_LEN_MAX + 1];
};
/*
struct tel_sat_other_address{
enum address_type address_type; /**< channel address type */
unsigned char address_len; /**< channel address length */
- char address[SAT_OTHER_ADDR_LEN_MAX]; /**< channel address */
+ char address[SAT_OTHER_ADDR_LEN_MAX + 1]; /**< channel address */
};
/*
struct tel_sat_application_identifier {
gboolean b_is_exist;
unsigned short length;
- unsigned char identifier[SAT_AID_LEN_MAX]; /* length is 16 byte, Refer TS 101.220 */
+ unsigned char identifier[SAT_AID_LEN_MAX + 1]; /* length is 16 byte, Refer TS 101.220 */
};
/*
struct tel_sat_remote_entity_address{
enum remote_entity_coding_type coding_type;
unsigned short length;
- unsigned char remote_entity_address[SAT_REMOTE_ENTITY_ADDR_LEN_MAX];
+ unsigned char remote_entity_address[SAT_REMOTE_ENTITY_ADDR_LEN_MAX + 1];
};
/*
*/
struct tel_sat_network_access_name{
unsigned short length;
- unsigned char network_access_name[SAT_NET_ACC_NAM_LEN_MAX];
+ unsigned char network_access_name[SAT_NET_ACC_NAM_LEN_MAX + 1];
};
/*
struct tel_sat_envelop_raw_data_tlv {
int data_len;
- unsigned char data[SAT_ENVELOPE_DATA_LEN_MAX];
+ unsigned char data[SAT_ENVELOPE_DATA_LEN_MAX + 1];
};
struct treq_sat_envelop_cmd_data{
%define major 0
%define minor 3
-%define patchlevel 30
+%define patchlevel 31
Name: libtcore
Version: %{major}.%{minor}.%{patchlevel}
continue;
pdp_o = list->data;
- if (!pdp_o)
- continue;
-
if (tcore_object_get_type(pdp_o) != CORE_OBJECT_TYPE_PS_CONTEXT)
continue;
-
if (tcore_context_get_role(pdp_o) == role)
return pdp_o;
}
_sat_decode_ton_npi(src_data[temp_index++], &address_obj->ton, &address_obj->npi);
str_ascii = tcore_util_convert_bcd2ascii((const char *)&src_data[temp_index], address_len - 1, SAT_DIALING_NUMBER_LEN_MAX);
if (str_ascii) {
- memcpy(address_obj->dialing_number, str_ascii, strlen(str_ascii));
- address_obj->dialing_number_len = strlen(str_ascii);
+ address_obj->dialing_number_len = (strlen(str_ascii) > SAT_DIALING_NUMBER_LEN_MAX) ? SAT_DIALING_NUMBER_LEN_MAX : strlen(str_ascii);
+ strncpy(address_obj->dialing_number, str_ascii, address_obj->dialing_number_len);
+ address_obj->dialing_number[address_obj->dialing_number_len] = 0x00;
g_free(str_ascii);
}
}
/* bIsComprehensionPartial = TRUE; */
sub_address_obj->subaddress_len = 0;
}
- } else
+ } else {
memcpy(sub_address_obj->subaddress, &src_data[temp_index], sub_address_obj->subaddress_len);
+ sub_address_obj->subaddress[sub_address_obj->subaddress_len] = 0x00;
+ }
*consumed_data_len = 1 + len_of_len + sub_address_len;
return TCORE_SAT_SUCCESS;
return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
else
sub_address_obj->subaddress_len = 0;
- } else
+ } else {
memcpy(sub_address_obj->subaddress, &src_data[temp_index], sub_address_obj->subaddress_len);
+ sub_address_obj->subaddress[sub_address_obj->subaddress_len] = 0x00;
+ }
dbg("[SAT] SAT PARSER - subAddressLen=%d", sub_address_obj->subaddress_len);
for (i = 0; i < sub_address_obj->subaddress_len; i++)
return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
else
ccp_obj->data_len = 0;
- } else
+ } else {
memcpy(ccp_obj->data, &src_data[temp_index], ccp_obj->data_len);
+ ccp_obj->data[ccp_obj->data_len] = 0x00;
+ }
dbg("[SAT] SAT PARSER - ccp len=%d", ccp_obj->data_len);
for (i = 0; i < ccp_obj->data_len; i++)
/* data */
memcpy(sms_tpdu_obj->data, &src_data[temp_index], sms_tpdu_obj->data_len);
+ sms_tpdu_obj->data[sms_tpdu_obj->data_len] = 0x00;
dbg("[SAT] SAT PARSER tpdu_len (%d)", sms_tpdu_obj->data_len);
*consumed_data_len = 1 + len_of_len + tpdu_len;
_sat_decode_dcs(src_data[temp_index++], &ussd_str_obj->dsc);
ussd_str_obj->string_len = ussd_len - 1;
memcpy(ussd_str_obj->ussd_string, &src_data[temp_index], ussd_str_obj->string_len);
+ ussd_str_obj->ussd_string[ussd_str_obj->string_len] = 0x00;
/* 1 is the length of Tag. */
*consumed_data_len = 1 + len_of_len + ussd_len;
if (dtmf_len > 0) {
str_ascii = tcore_util_convert_bcd2ascii((const char *)&src_data[temp_index], dtmf_len, SAT_DTMF_STRING_LEN_MAX);
if (str_ascii) {
- memcpy(dtmf_string_obj->dtmf_string, str_ascii, strlen(str_ascii));
- dtmf_string_obj->dtmf_length = strlen(str_ascii);
+ dtmf_string_obj->dtmf_length = (strlen(str_ascii) > SAT_DTMF_STRING_LEN_MAX) ? SAT_DTMF_STRING_LEN_MAX : strlen(str_ascii);
+ strncpy(dtmf_string_obj->dtmf_string, str_ascii, dtmf_string_obj->dtmf_length);
+ dtmf_string_obj->dtmf_string[dtmf_string_obj->dtmf_length] = 0x00;
g_free(str_ascii);
}
}
}
memcpy(url->url, &src_data[temp_index], url_len);
+ url->url[url_len] = 0x00;
dbg("[SAT] url(%s)", url->url);
*consumed_data_len = 1 + len_of_len + url_len;
/* data */
channel_data_obj->data_string_len = channel_data_len;
memcpy(channel_data_obj->data_string, &src_data[temp_index], channel_data_len);
+ channel_data_obj->data_string[channel_data_len] = 0x00;
*consumed_data_len = 1 + len_of_len + channel_data_len;
return TCORE_SAT_SUCCESS;
remote_address_obj->length = remote_data_len - 1;
memcpy(remote_address_obj->remote_entity_address, &src_data[temp_index], remote_address_obj->length);
+ remote_address_obj->remote_entity_address[remote_address_obj->length] = 0x00;
*consumed_data_len = 1 + len_of_len + remote_data_len;
return TCORE_SAT_SUCCESS;
#define SIM_FTYPE_DF 0x2
#define SIM_FTYPE_EF 0x4
+#define MAX_BUF_SIZE 255
+
struct private_object_data {
struct tcore_sim_operations *ops[TCORE_OPS_TYPE_MAX];
p_out->pcscf = calloc(1, len);
memcpy(p_out->pcscf, &p_in[3], len-1);
} else {
- unsigned char buf[255] = {0, };
+ unsigned char buf[MAX_BUF_SIZE + 1] = {0, };
unsigned short buf_len;
gboolean ret = FALSE;
return;
}
- *dest_len = strlen((const char *)target_tmp);
dbg("utf8 (%s), len(%d)", (const char *)target_tmp, strlen((const char *)target_tmp));
- memcpy(dest, target_tmp, strlen((const char *)target_tmp));
+ *dest_len = (strlen(target_tmp) >= MAX_BUF_SIZE) ? MAX_BUF_SIZE - 1 : strlen(target_tmp);
+ memcpy(dest, target_tmp, *dest_len);
dbg("final utf8 str (%s), length (%d)", dest, tmp_len);
g_free(raw_unicode);