aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-umts_fp.c
diff options
context:
space:
mode:
Diffstat (limited to 'epan/dissectors/packet-umts_fp.c')
-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);