diff options
author | Pascal Quantin <pascal.quantin@gmail.com> | 2015-09-22 17:31:44 +0200 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2015-09-23 04:40:21 +0000 |
commit | afce5c1afb7294f799ff4330ec31982e720afd2a (patch) | |
tree | 2e35d5ff151a4ba9ffdec4193c1eb008d30297cb /epan | |
parent | cd7387d22b7cdc2b66e884d3dcb4c7234c104cef (diff) | |
download | wireshark-afce5c1afb7294f799ff4330ec31982e720afd2a.tar.gz |
GSM RLC/MAC: fix dissection of variable length bitmaps
Bug: 11534
Change-Id: I857134f21ab6a8a135eba6e784807f3f3734bf6c
Reviewed-on: https://code.wireshark.org/review/10607
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan')
-rw-r--r-- | epan/dissectors/packet-csn1.c | 2 | ||||
-rw-r--r-- | epan/dissectors/packet-csn1.h | 4 | ||||
-rw-r--r-- | epan/dissectors/packet-gsm_rlcmac.c | 17 |
3 files changed, 15 insertions, 8 deletions
diff --git a/epan/dissectors/packet-csn1.c b/epan/dissectors/packet-csn1.c index d5392c47fe..9f055ce24b 100644 --- a/epan/dissectors/packet-csn1.c +++ b/epan/dissectors/packet-csn1.c @@ -1215,7 +1215,7 @@ csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pDescr, t } else { - proto_tree_add_uint_format_value(tree, *(pDescr->hf_ptr), tvb, bit_offset>>3, ((bit_offset+no_of_bits-1)>>3)-(bit_offset>>3)+1, no_of_bits, "%u bits", + proto_tree_add_uint64_format_value(tree, *(pDescr->hf_ptr), tvb, bit_offset>>3, ((bit_offset+no_of_bits-1)>>3)-(bit_offset>>3)+1, no_of_bits, "%u bits", no_of_bits); } bit_offset += no_of_bits; diff --git a/epan/dissectors/packet-csn1.h b/epan/dissectors/packet-csn1.h index fe2741a24d..72f6e81f95 100644 --- a/epan/dissectors/packet-csn1.h +++ b/epan/dissectors/packet-csn1.h @@ -628,8 +628,8 @@ gint16 csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pD *- when unpacking the _ElementCountField will be set in runtime * - when packing _ElementCountField contains the size of bitmap */ -#define M_LEFT_VAR_BMP_1(_STRUCT, _MEMBER, _ElementCountField, _OFFSET)\ - {CSN_LEFT_ALIGNED_VAR_BMP_1, _OFFSET, {(void*)offsetof(_STRUCT, _ElementCountField)}, offsetof(_STRUCT, _MEMBER), FALSE, #_MEMBER, NULL, 0, NULL, NULL, NULL} +#define M_LEFT_VAR_BMP_1(_STRUCT, _MEMBER, _ElementCountField, _OFFSET, _HF_PTR)\ + {CSN_LEFT_ALIGNED_VAR_BMP_1, _OFFSET, {(void*)offsetof(_STRUCT, _ElementCountField)}, offsetof(_STRUCT, _MEMBER), FALSE, #_MEMBER, NULL, 0, _HF_PTR, NULL, NULL} /* todo: dissect padding bits looking for unexpected extensions */ #define M_PADDING_BITS(_STRUCT, _HF_PTR)\ diff --git a/epan/dissectors/packet-gsm_rlcmac.c b/epan/dissectors/packet-gsm_rlcmac.c index 3a8ff9ffde..c986ecce73 100644 --- a/epan/dissectors/packet-gsm_rlcmac.c +++ b/epan/dissectors/packet-gsm_rlcmac.c @@ -231,6 +231,7 @@ static int hf_egprs_acknack_crbb_length = -1; static int hf_egprs_acknack_crbb_exist = -1; static int hf_egprs_acknack_crbb_starting_color_code = -1; static int hf_egprs_acknack_crbb_bitmap = -1; +static int hf_egprs_acknack_urbb_bitmap = -1; static int hf_egprs_acknack_dissector = -1; static int hf_egprs_acknack = -1; @@ -1855,7 +1856,7 @@ CSN_DESCR_BEGIN (EGPRS_AckNack_Desc_t) M_UINT (EGPRS_AckNack_Desc_t, CRBB_STARTING_COLOR_CODE, 1, &hf_egprs_acknack_crbb_starting_color_code), M_LEFT_VAR_BMP (EGPRS_AckNack_Desc_t, CRBB, CRBB_LENGTH, 0, &hf_egprs_acknack_crbb_bitmap), - M_LEFT_VAR_BMP_1(EGPRS_AckNack_Desc_t, URBB, URBB_LENGTH, 0), + M_LEFT_VAR_BMP_1(EGPRS_AckNack_Desc_t, URBB, URBB_LENGTH, 0, &hf_egprs_acknack_urbb_bitmap), CSN_DESCR_END (EGPRS_AckNack_Desc_t) /* < EGPRS Ack/Nack Description IE > */ @@ -9143,8 +9144,14 @@ proto_register_gsm_rlcmac(void) } }, { &hf_egprs_acknack_crbb_bitmap, - { "CRBB_BITMP", "gsm_rlcmac.dl.crbb_bitmap", - FT_UINT8, BASE_DEC, NULL, 0x0, + { "CRBB_BITMAP", "gsm_rlcmac.dl.crbb_bitmap", + FT_UINT64, BASE_DEC, NULL, 0x0, + NULL, HFILL + } + }, + { &hf_egprs_acknack_urbb_bitmap, + { "URBB_BITMAP", "gsm_rlcmac.dl.urbb_bitmap", + FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL } }, @@ -9302,7 +9309,7 @@ proto_register_gsm_rlcmac(void) /* <IA Rest Octets> */ { &hf_usf_bitmap, { "USF_BITMAP", "gsm_rlcmac.dl.usf_bitmap", - FT_UINT8, BASE_DEC, NULL, 0x0, + FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL } }, @@ -9497,7 +9504,7 @@ proto_register_gsm_rlcmac(void) /* < SI 13 Rest Octets > */ { &hf_si_rest_bitmap, { "BITMAP", "gsm_rlcmac.si.rest_bitmap", - FT_UINT8, BASE_DEC, NULL, 0x0, + FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL } }, |