From: Denis Kenzior Date: Thu, 11 Mar 2010 20:43:59 +0000 (-0600) Subject: Refactor: stk configuration capability parameters X-Git-Tag: 0.20~87 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=44476dac9e66267549337ab082bb41d6af069f18;p=platform%2Fupstream%2Fofono.git Refactor: stk configuration capability parameters --- diff --git a/src/stkutil.c b/src/stkutil.c index 136efd5..6cd539b 100644 --- a/src/stkutil.c +++ b/src/stkutil.c @@ -121,24 +121,26 @@ static gboolean parse_dataobj_subaddress(struct comprehension_tlv_iter *iter, } /* Defined in TS 102.223 Section 8.4 */ -static gboolean parse_dataobj_capability_configuration_parameters( - struct comprehension_tlv_iter *iter, void *user) +static gboolean parse_dataobj_ccp(struct comprehension_tlv_iter *iter, + void *user) { - struct stk_capability_configuration_parameters *ccp = user; + struct stk_ccp *ccp = user; const unsigned char *data; unsigned int len; if (comprehension_tlv_iter_get_tag(iter) != - STK_DATA_OBJECT_TYPE_CAPABILITY_CONFIGURATION_PARAMETERS) + STK_DATA_OBJECT_TYPE_CCP) return FALSE; len = comprehension_tlv_iter_get_length(iter); if (len < 1) return FALSE; + if (len > sizeof(ccp->ccp)) + return FALSE; + data = comprehension_tlv_iter_get_data(iter); - ccp->ccp_len = len; - ccp->ccp = g_malloc(len); + ccp->len = len; memcpy(ccp->ccp, data, len); return TRUE; @@ -483,8 +485,8 @@ static dataobj_handler handler_for_type(enum stk_data_object_type type) return parse_dataobj_alpha_id; case STK_DATA_OBJECT_TYPE_SUBADDRESS: return parse_dataobj_subaddress; - case STK_DATA_OBJECT_TYPE_CAPABILITY_CONFIGURATION_PARAMETERS: - return parse_dataobj_capability_configuration_parameters; + case STK_DATA_OBJECT_TYPE_CCP: + return parse_dataobj_ccp; case STK_DATA_OBJECT_TYPE_DURATION: return parse_dataobj_duration; case STK_DATA_OBJECT_TYPE_ITEM: diff --git a/src/stkutil.h b/src/stkutil.h index d225dd4..4b2c046 100644 --- a/src/stkutil.h +++ b/src/stkutil.h @@ -87,7 +87,7 @@ enum stk_data_object_type { STK_DATA_OBJECT_TYPE_DURATION = 0x04, STK_DATA_OBJECT_TYPE_ALPHA_ID = 0x05, STK_DATA_OBJECT_TYPE_ADDRESS = 0x06, - STK_DATA_OBJECT_TYPE_CAPABILITY_CONFIGURATION_PARAMETERS = 0x07, + STK_DATA_OBJECT_TYPE_CCP = 0x07, STK_DATA_OBJECT_TYPE_SUBADDRESS = 0x08, STK_DATA_OBJECT_TYPE_SS_STRING = 0x09, STK_DATA_OBJECT_TYPE_USSD_STRING = 0x0A, @@ -217,10 +217,20 @@ struct stk_subaddress { unsigned char *subaddr[23]; }; -/* Defined in TS 102.223 Section 8.4 */ -struct stk_capability_configuration_parameters { - unsigned int ccp_len; - unsigned char *ccp; +/* + * Defined in TS 102.223 Section 8.4 + * + * According to 24.008 Section 10.5.4.5 "The bearer capability is a type 4 + * information element with a minimum length of 3 octets and a maximum length + * of 16 octets." + * + * According to TS 31.102 Section 4.2.38 the CCP length is 15 bytes. + * + * The CCP structure is not decoded, but stored as is from the CTLV + */ +struct stk_ccp { + unsigned char len; + unsigned char ccp[16]; }; /*