summaryrefslogtreecommitdiff
path: root/epan
diff options
context:
space:
mode:
authorPascal Quantin <pascal.quantin@gmail.com>2015-09-22 17:31:44 +0200
committerAnders Broman <a.broman58@gmail.com>2015-09-23 04:40:21 +0000
commitafce5c1afb7294f799ff4330ec31982e720afd2a (patch)
tree2e35d5ff151a4ba9ffdec4193c1eb008d30297cb /epan
parentcd7387d22b7cdc2b66e884d3dcb4c7234c104cef (diff)
downloadwireshark-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.c2
-rw-r--r--epan/dissectors/packet-csn1.h4
-rw-r--r--epan/dissectors/packet-gsm_rlcmac.c17
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
}
},