aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-lte-rrc.c
diff options
context:
space:
mode:
authorPascal Quantin <pascal.quantin@gmail.com>2016-02-10 14:14:30 +0100
committerPascal Quantin <pascal.quantin@gmail.com>2016-02-10 20:21:30 +0000
commitdae11790e72d56e15136ff0b5902cd7577d6add4 (patch)
tree507e5284c672e296713951176a1537160c3d99cd /epan/dissectors/packet-lte-rrc.c
parentfe2656b40745a525c86779c5458fa5b87d19b1e6 (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 'epan/dissectors/packet-lte-rrc.c')
-rw-r--r--epan/dissectors/packet-lte-rrc.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/epan/dissectors/packet-lte-rrc.c b/epan/dissectors/packet-lte-rrc.c
index 1c2f17128b..eada2718d6 100644
--- a/epan/dissectors/packet-lte-rrc.c
+++ b/epan/dissectors/packet-lte-rrc.c
@@ -32113,16 +32113,15 @@ dissect_lte_rrc_T_warningMessageSegmentNumber(tvbuff_t *tvb _U_, int offset _U_,
static int
dissect_lte_rrc_T_warningMessageSegment(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
tvbuff_t *warning_msg_seg_tvb = NULL;
- gpointer p_dcs;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
NO_BOUND, NO_BOUND, FALSE, &warning_msg_seg_tvb);
- 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(&lte_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),
@@ -32131,7 +32130,8 @@ dissect_lte_rrc_T_warningMessageSegment(tvbuff_t *tvb _U_, int offset _U_, asn1_
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, &lte_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));
}
}
@@ -32264,16 +32264,15 @@ dissect_lte_rrc_T_warningMessageSegmentNumber_r9(tvbuff_t *tvb _U_, int offset _
static int
dissect_lte_rrc_T_warningMessageSegment_r9(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
tvbuff_t *warning_msg_seg_tvb = NULL;
- gpointer p_dcs;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
NO_BOUND, NO_BOUND, FALSE, &warning_msg_seg_tvb);
- 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(&lte_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),
@@ -32282,7 +32281,8 @@ dissect_lte_rrc_T_warningMessageSegment_r9(tvbuff_t *tvb _U_, int offset _U_, as
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, &lte_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));
}
}