diff options
author | Pascal Quantin <pascal.quantin@gmail.com> | 2016-02-10 14:14:30 +0100 |
---|---|---|
committer | Pascal Quantin <pascal.quantin@gmail.com> | 2016-02-10 20:21:30 +0000 |
commit | dae11790e72d56e15136ff0b5902cd7577d6add4 (patch) | |
tree | 507e5284c672e296713951176a1537160c3d99cd /asn1 | |
parent | fe2656b40745a525c86779c5458fa5b87d19b1e6 (diff) |
LTE RRC: fix defragmentation of ETWS / CMAS messages
Change-Id: I59d7e3dc3398973290746fc15a2dc9f24cfc03e3
Reviewed-on: https://code.wireshark.org/review/13884
Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
Diffstat (limited to 'asn1')
-rw-r--r-- | asn1/lte-rrc/lte-rrc.cnf | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/asn1/lte-rrc/lte-rrc.cnf b/asn1/lte-rrc/lte-rrc.cnf index 58be0362ba..116fb63807 100644 --- a/asn1/lte-rrc/lte-rrc.cnf +++ b/asn1/lte-rrc/lte-rrc.cnf @@ -706,14 +706,13 @@ SystemInformationBlockType11/messageIdentifier TYPE=FT_UINT16 DISPLAY=BASE_DEC|B #.FN_BODY SystemInformationBlockType11/warningMessageSegment VAL_PTR=&warning_msg_seg_tvb tvbuff_t *warning_msg_seg_tvb = NULL; - gpointer p_dcs; %(DEFAULT_BODY)s #.FN_FTR SystemInformationBlockType11/warningMessageSegment - p_dcs = g_hash_table_lookup(lte_rrc_etws_cmas_dcs_hash, GUINT_TO_POINTER((guint)private_data_get_message_identifier(actx))); - if (warning_msg_seg_tvb && p_dcs) { + if (warning_msg_seg_tvb) { proto_tree *subtree; tvbuff_t *frag_tvb; + gpointer p_dcs; fragment_head *frag_data = fragment_add_seq_check(<e_rrc_sib11_reassembly_table, warning_msg_seg_tvb, 0, actx->pinfo, private_data_get_message_identifier(actx), NULL, private_data_get_warning_message_segment_number(actx), @@ -722,7 +721,8 @@ SystemInformationBlockType11/messageIdentifier TYPE=FT_UINT16 DISPLAY=BASE_DEC|B subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_warningMessageSegment); frag_tvb = process_reassembled_data(warning_msg_seg_tvb, 0, actx->pinfo, "Reassembled SIB11 warning message", frag_data, <e_rrc_sib11_frag_items, NULL, subtree); - if (frag_tvb) { + p_dcs = g_hash_table_lookup(lte_rrc_etws_cmas_dcs_hash, GUINT_TO_POINTER((guint)private_data_get_message_identifier(actx))); + if (frag_tvb && p_dcs) { dissect_lte_rrc_warningMessageSegment(frag_tvb, subtree, actx->pinfo, GPOINTER_TO_UINT(p_dcs)); } } @@ -781,14 +781,13 @@ SystemInformationBlockType12-r9/messageIdentifier-r9 TYPE=FT_UINT16 DISPLAY=BASE #.FN_BODY SystemInformationBlockType12-r9/warningMessageSegment-r9 VAL_PTR=&warning_msg_seg_tvb tvbuff_t *warning_msg_seg_tvb = NULL; - gpointer p_dcs; %(DEFAULT_BODY)s #.FN_FTR SystemInformationBlockType12-r9/warningMessageSegment-r9 - p_dcs = g_hash_table_lookup(lte_rrc_etws_cmas_dcs_hash, GUINT_TO_POINTER((guint)private_data_get_message_identifier(actx))); - if (warning_msg_seg_tvb && p_dcs) { + if (warning_msg_seg_tvb) { proto_tree *subtree; tvbuff_t *frag_tvb; + gpointer p_dcs; fragment_head *frag_data = fragment_add_seq_check(<e_rrc_sib12_reassembly_table, warning_msg_seg_tvb, 0, actx->pinfo, private_data_get_message_identifier(actx), NULL, private_data_get_warning_message_segment_number(actx), @@ -797,7 +796,8 @@ SystemInformationBlockType12-r9/messageIdentifier-r9 TYPE=FT_UINT16 DISPLAY=BASE subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_warningMessageSegment); frag_tvb = process_reassembled_data(warning_msg_seg_tvb, 0, actx->pinfo, "Reassembled SIB12 warning message", frag_data, <e_rrc_sib12_frag_items, NULL, subtree); - if (frag_tvb) { + p_dcs = g_hash_table_lookup(lte_rrc_etws_cmas_dcs_hash, GUINT_TO_POINTER((guint)private_data_get_message_identifier(actx))); + if (frag_tvb && p_dcs) { dissect_lte_rrc_warningMessageSegment(frag_tvb, subtree, actx->pinfo, GPOINTER_TO_UINT(p_dcs)); } } |