aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsswsdev <sswsdev@gmail.com>2017-05-22 17:57:58 +0300
committerAnders Broman <a.broman58@gmail.com>2017-05-22 17:54:38 +0000
commit8bc9f9ad5615c86f80ea319b77cd40ea893286ce (patch)
treeaa0d7a103829f8ef2779d62e856d9b3d87891868
parentdd914364c7b93faf2bf3992a076908cb624f5cfb (diff)
UMTS FP: Fixed heuristic FACH dissector
Dissector was not adding the correct TB size & TB count to the conversation info for the longer RACH variant (52 bytes long) Change-Id: Iace894929684af3e0eb9804cbc57cdc169f136a9 Reviewed-on: https://code.wireshark.org/review/21736 Reviewed-by: Michael Mann <mmann78@netscape.net> Petri-Dish: Michael Mann <mmann78@netscape.net> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Anders Broman <a.broman58@gmail.com>
-rw-r--r--epan/dissectors/packet-umts_fp.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/epan/dissectors/packet-umts_fp.c b/epan/dissectors/packet-umts_fp.c
index 73feb97dc6..baf8127e94 100644
--- a/epan/dissectors/packet-umts_fp.c
+++ b/epan/dissectors/packet-umts_fp.c
@@ -4284,7 +4284,7 @@ heur_dissect_fp_rach(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *
}
}
- /* Expecting specific lengths: all rach frames are 28 bytes long */
+ /* Expecting specific lengths: rach frames are either 28 or 52 bytes long */
/* This is the common Transport Formats of RACH ( See 3GPP TR 25.944 / 4.1.2.1 ) */
length = tvb_reported_length(tvb);
if (length != 28 && length != 52) {
@@ -4305,7 +4305,10 @@ heur_dissect_fp_rach(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *
}
tfi = tvb_get_guint8(tvb, 2) & 0x1f;
- if (tfi != 0x00) {
+ if (length == 28 && tfi != 0x00) {
+ return FALSE;
+ }
+ if (length == 52 && tfi != 0x01) {
return FALSE;
}
@@ -4338,12 +4341,9 @@ heur_dissect_fp_rach(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *
umts_fp_conversation_info->num_dch_in_flow = 1;
umts_fp_conversation_info->fp_dch_channel_info[0].num_ul_chans = 0;
umts_fp_conversation_info->fp_dch_channel_info[0].ul_chan_num_tbs[0] = 1;
- if (length == 28) {
- umts_fp_conversation_info->fp_dch_channel_info[0].ul_chan_tf_size[0] = 168;
- }
- else { /* length is 52 */
- umts_fp_conversation_info->fp_dch_channel_info[0].ul_chan_tf_size[0] = 360;
- }
+ umts_fp_conversation_info->fp_dch_channel_info[0].ul_chan_num_tbs[1] = 1;
+ umts_fp_conversation_info->fp_dch_channel_info[0].ul_chan_tf_size[0] = 168;
+ umts_fp_conversation_info->fp_dch_channel_info[0].ul_chan_tf_size[1] = 360;
/* Adding the 'channel specific info' for RACH */
fp_rach_channel_info = wmem_new0(wmem_file_scope(), fp_rach_channel_info_t);