diff --git a/epan/dissectors/packet-gsm_a_rr.c b/epan/dissectors/packet-gsm_a_rr.c index c70a18758b..6f61e14a1c 100644 --- a/epan/dissectors/packet-gsm_a_rr.c +++ b/epan/dissectors/packet-gsm_a_rr.c @@ -1470,10 +1470,13 @@ static void display_channel_list(guint8 *list, tvbuff_t *tvb, proto_tree *tree, * that we don't handle, * or a malformed PDU. * - * len: total length of buffer * bit_offset: bit offset in TVB of first bit to be examined + * octet_len: total length of buffer + * pattern: padding pattern (usually 0x2b or 0x00) */ -static void gsm_rr_csn_padding_bits(proto_tree* tree, tvbuff_t* tvb, guint16 bit_offset, guint8 octet_len) +static void gsm_rr_padding_bits(proto_tree* tree, tvbuff_t* tvb, + guint16 bit_offset, guint8 octet_len, + const guint8 pattern) { guint i; gboolean non_padding_found = FALSE; @@ -1483,7 +1486,7 @@ static void gsm_rr_csn_padding_bits(proto_tree* tree, tvbuff_t* tvb, guint16 bit { /* there is spare room, check the first padding octet */ guint8 bit_mask = 0xFF >> (bit_offset & 0x07); - if ((tvb_get_guint8(tvb, octet_offset) & bit_mask) != (PADDING_BYTE & bit_mask)) + if ((tvb_get_guint8(tvb, octet_offset) & bit_mask) != (pattern & bit_mask)) { non_padding_found = TRUE; } @@ -1491,7 +1494,7 @@ static void gsm_rr_csn_padding_bits(proto_tree* tree, tvbuff_t* tvb, guint16 bit { for (i=octet_offset+1; (i -- (no randomization) */ - gsm_rr_csn_padding_bits(subtree, tvb, bit_offset, tvb_len); + gsm_rr_padding_bits(subtree, tvb, bit_offset, tvb_len, PADDING_BYTE); } return tvb_len - offset; } @@ -8478,7 +8481,7 @@ de_rr_si13_rest_oct(tvbuff_t *tvb, proto_tree *subtree, packet_info *pinfo _U_, } } } - gsm_rr_csn_padding_bits(subtree, tvb, bit_offset, tvb_len); + gsm_rr_padding_bits(subtree, tvb, bit_offset, tvb_len, PADDING_BYTE); return tvb_len - offset; } @@ -8527,7 +8530,7 @@ de_rr_si21_rest_oct(tvbuff_t *tvb, proto_tree *subtree, packet_info *pinfo _U_, proto_item_set_len(item2, (bit_offset >> 3) - (bit_offset_sav >> 3) + 1); } - gsm_rr_csn_padding_bits(subtree, tvb, bit_offset, tvb_len); + gsm_rr_padding_bits(subtree, tvb, bit_offset, tvb_len, PADDING_BYTE); return tvb_len - offset; } @@ -11306,7 +11309,7 @@ sacch_rr_meas_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guin } } } - gsm_rr_csn_padding_bits(tree, tvb, bit_offset, tvb_len); + gsm_rr_padding_bits(tree, tvb, bit_offset, tvb_len, PADDING_BYTE); } static guint32 @@ -11507,7 +11510,7 @@ sacch_rr_enh_meas_report(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_ proto_item_set_len(item, (bit_offset>>3) - (bit_offset_sav>>3)+1); } } - gsm_rr_csn_padding_bits(tree, tvb, bit_offset, tvb_len); + gsm_rr_padding_bits(tree, tvb, bit_offset, tvb_len, PADDING_BYTE); } /*