From 8646e13bf3eff98286cfd432767cbb5964dbb29b Mon Sep 17 00:00:00 2001 From: Denis Kenzior Date: Tue, 30 Mar 2010 10:12:05 -0500 Subject: Refactor: Don't repeat tag checking ad naseum The tag checking can be done safely once inside the main parsing function, no need to repeat it in the individual object parsers. --- src/stkutil.c | 78 ++++------------------------------------------------------- 1 file changed, 5 insertions(+), 73 deletions(-) (limited to 'src/stkutil.c') diff --git a/src/stkutil.c b/src/stkutil.c index 81fb58ab..4be76ef4 100644 --- a/src/stkutil.c +++ b/src/stkutil.c @@ -76,10 +76,6 @@ static gboolean parse_dataobj_address(struct comprehension_tlv_iter *iter, unsigned int len; char *number; - if (comprehension_tlv_iter_get_tag(iter) != - STK_DATA_OBJECT_TYPE_ADDRESS) - return FALSE; - len = comprehension_tlv_iter_get_length(iter); if (len < 2) return FALSE; @@ -106,10 +102,6 @@ static gboolean parse_dataobj_alpha_id(struct comprehension_tlv_iter *iter, unsigned int len; char *utf8; - if (comprehension_tlv_iter_get_tag(iter) != - STK_DATA_OBJECT_TYPE_ALPHA_ID) - return FALSE; - len = comprehension_tlv_iter_get_length(iter); if (len < 1) return FALSE; @@ -133,10 +125,6 @@ static gboolean parse_dataobj_subaddress(struct comprehension_tlv_iter *iter, const unsigned char *data; unsigned int len; - if (comprehension_tlv_iter_get_tag(iter) != - STK_DATA_OBJECT_TYPE_SUBADDRESS) - return FALSE; - len = comprehension_tlv_iter_get_length(iter); if (len < 1) return FALSE; @@ -159,10 +147,6 @@ static gboolean parse_dataobj_ccp(struct comprehension_tlv_iter *iter, const unsigned char *data; unsigned int len; - if (comprehension_tlv_iter_get_tag(iter) != - STK_DATA_OBJECT_TYPE_CCP) - return FALSE; - len = comprehension_tlv_iter_get_length(iter); if (len < 1) return FALSE; @@ -184,10 +168,6 @@ static gboolean parse_dataobj_duration(struct comprehension_tlv_iter *iter, struct stk_duration *duration = user; const unsigned char *data; - if (comprehension_tlv_iter_get_tag(iter) != - STK_DATA_OBJECT_TYPE_DURATION) - return FALSE; - if (comprehension_tlv_iter_get_length(iter) != 2) return FALSE; @@ -214,10 +194,6 @@ static gboolean parse_dataobj_item(struct comprehension_tlv_iter *iter, unsigned int len; char *utf8; - if (comprehension_tlv_iter_get_tag(iter) != - STK_DATA_OBJECT_TYPE_ITEM) - return FALSE; - len = comprehension_tlv_iter_get_length(iter); if (len < 2) return FALSE; @@ -246,10 +222,6 @@ static gboolean parse_dataobj_item_id(struct comprehension_tlv_iter *iter, unsigned char *id = user; const unsigned char *data; - if (comprehension_tlv_iter_get_tag(iter) != - STK_DATA_OBJECT_TYPE_ITEM_ID) - return FALSE; - if (comprehension_tlv_iter_get_length(iter) != 1) return FALSE; @@ -266,10 +238,6 @@ static gboolean parse_dataobj_response_len(struct comprehension_tlv_iter *iter, struct stk_response_length *response_len = user; const unsigned char *data; - if (comprehension_tlv_iter_get_tag(iter) != - STK_DATA_OBJECT_TYPE_RESPONSE_LENGTH) - return FALSE; - if (comprehension_tlv_iter_get_length(iter) != 2) return FALSE; @@ -290,10 +258,6 @@ static gboolean parse_dataobj_result(struct comprehension_tlv_iter *iter, unsigned int len; unsigned char *additional; - if (comprehension_tlv_iter_get_tag(iter) != - STK_DATA_OBJECT_TYPE_RESULT) - return FALSE; - len = comprehension_tlv_iter_get_length(iter); if (len < 1) return FALSE; @@ -326,10 +290,6 @@ static gboolean parse_dataobj_gsm_sms_tpdu(struct comprehension_tlv_iter *iter, const unsigned char *data; unsigned int len; - if (comprehension_tlv_iter_get_tag(iter) != - STK_DATA_OBJECT_TYPE_GSM_SMS_TPDU) - return FALSE; - len = comprehension_tlv_iter_get_length(iter); if (len < 1 || len > 164) return FALSE; @@ -419,10 +379,6 @@ static gboolean parse_dataobj_tone(struct comprehension_tlv_iter *iter, unsigned char *tone = user; const unsigned char *data; - if (comprehension_tlv_iter_get_tag(iter) != - STK_DATA_OBJECT_TYPE_TONE) - return FALSE; - if (comprehension_tlv_iter_get_length(iter) != 1) return FALSE; @@ -445,10 +401,6 @@ static gboolean parse_dataobj_file_list(struct comprehension_tlv_iter *iter, struct stk_file *sf; unsigned char last_type; - if (comprehension_tlv_iter_get_tag(iter) != - STK_DATA_OBJECT_TYPE_FILE_LIST) - return FALSE; - len = comprehension_tlv_iter_get_length(iter); if (len < 5) return FALSE; @@ -544,10 +496,6 @@ static gboolean parse_dataobj_location_info(struct comprehension_tlv_iter *iter, const unsigned char *data; unsigned int len; - if (comprehension_tlv_iter_get_tag(iter) != - STK_DATA_OBJECT_TYPE_LOCATION_INFO) - return FALSE; - len = comprehension_tlv_iter_get_length(iter); if ((len != 5) && (len != 7) && (len != 9)) return FALSE; @@ -591,10 +539,6 @@ static gboolean parse_dataobj_imei(struct comprehension_tlv_iter *iter, unsigned int len; static const char digit_lut[] = "0123456789*#abc\0"; - if (comprehension_tlv_iter_get_tag(iter) != - STK_DATA_OBJECT_TYPE_IMEI) - return FALSE; - len = comprehension_tlv_iter_get_length(iter); if (len != 8) return FALSE; @@ -627,10 +571,6 @@ static gboolean parse_dataobj_network_measurement_results( const unsigned char *data; unsigned int len; - if (comprehension_tlv_iter_get_tag(iter) != - STK_DATA_OBJECT_TYPE_NETWORK_MEASUREMENT_RESULTS) - return FALSE; - len = comprehension_tlv_iter_get_length(iter); if (len != 0x10) return FALSE; @@ -650,10 +590,6 @@ static gboolean parse_dataobj_icon_id(struct comprehension_tlv_iter *iter, struct stk_icon_identifier *id = user; const unsigned char *data; - if (comprehension_tlv_iter_get_tag(iter) != - STK_DATA_OBJECT_TYPE_ICON_ID) - return FALSE; - if (comprehension_tlv_iter_get_length(iter) != 2) return FALSE; @@ -681,10 +617,6 @@ static gboolean parse_dataobj_text_attr(struct comprehension_tlv_iter *iter, const unsigned char *data; unsigned int len; - if (comprehension_tlv_iter_get_tag(iter) != - STK_DATA_OBJECT_TYPE_TEXT_ATTRIBUTE) - return FALSE; - len = comprehension_tlv_iter_get_length(iter); if (len > 127) @@ -705,10 +637,6 @@ static gboolean parse_dataobj_frame_id(struct comprehension_tlv_iter *iter, unsigned char *frame_id = user; const unsigned char *data; - if (comprehension_tlv_iter_get_tag(iter) != - STK_DATA_OBJECT_TYPE_FRAME_ID) - return FALSE; - if (comprehension_tlv_iter_get_length(iter) != 1) return FALSE; @@ -814,7 +742,11 @@ static gboolean parse_dataobj(struct comprehension_tlv_iter *iter, if (handler == NULL) continue; - ret = handler(iter, entry->data); + if (comprehension_tlv_iter_get_tag(iter) == entry->type) + ret = handler(iter, entry->data); + else + ret = FALSE; + entry->parsed = ret; if (ret && comprehension_tlv_iter_next(iter) == FALSE) -- cgit v1.2.3