diff options
author | etxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7> | 2011-12-04 15:21:22 +0000 |
---|---|---|
committer | etxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7> | 2011-12-04 15:21:22 +0000 |
commit | e6d620f49258ffaf760e7c5fc8e09ae193ae2712 (patch) | |
tree | 653b891651ef2c848996df94a733480996f2bf0d /epan | |
parent | cb037cdc463fd5f36fd329e0c6763cd0bfe98068 (diff) |
From Vincent Helfre.
The offset in "Cell Selection Indicator after Release of all TCH and SDCCH" was not correct because the length was element was decoded twice. So I removed the second decoding of the length.
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@40088 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'epan')
-rw-r--r-- | epan/dissectors/packet-gsm_a_rr.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/epan/dissectors/packet-gsm_a_rr.c b/epan/dissectors/packet-gsm_a_rr.c index 008ccb4b8d..56d3d9cdce 100644 --- a/epan/dissectors/packet-gsm_a_rr.c +++ b/epan/dissectors/packet-gsm_a_rr.c @@ -1226,6 +1226,13 @@ de_rr_utran_freq_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, g guint8 value; curr_offset = offset; + /* < UTRAN Freq List >::= + * < LENGTH OF UTRAN FREQ LIST : bit (8) > -- length following in octets + * { 1 < FDD_ARFCN > : bit (14) } ** 0 -- FDD frequencies + * { 1 < TDD_ARFCN > : bit (14) } ** 0 -- TDD frequencies + * <spare bit>**; + * Spare bits in the end of the field are used to fill the last octet. + */ proto_tree_add_item(tree, hf_gsm_a_rr_utran_freq_list_length, tvb, curr_offset, 1, ENC_BIG_ENDIAN); bit_offset = curr_offset << 3; value = tvb_get_bits8(tvb,bit_offset,1); @@ -1263,17 +1270,15 @@ convert_n_to_q[32] = { 0, 9, 17, 25, 32, 39, 46, 53, 59, 65, 71, 77, 83, 106, 111, 116, 121, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; static guint16 -de_rr_cell_select_indic(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_) +de_rr_cell_select_indic(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_) { proto_tree *subtree, *subtree2; proto_item *item, *item2; guint32 curr_offset; gint bit_offset, bit_offset_sav, idx, xdd_cell_info, wsize, nwi, jwi, w[64], i, iused, xdd_indic0; - guint8 value, length; + guint8 value; curr_offset = offset; - length = tvb_get_guint8(tvb, curr_offset); - curr_offset += 1; bit_offset = curr_offset << 3; value = tvb_get_bits8(tvb,bit_offset,3); bit_offset += 3; @@ -1477,7 +1482,7 @@ de_rr_cell_select_indic(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, break; } - curr_offset += length; + curr_offset += len; return (curr_offset - offset); } |