diff options
author | Pascal Quantin <pascal.quantin@gmail.com> | 2016-05-31 16:09:03 +0200 |
---|---|---|
committer | Pascal Quantin <pascal.quantin@gmail.com> | 2016-05-31 19:44:56 +0000 |
commit | d77b8318e82c113b2f7852f950b9269b57e5da40 (patch) | |
tree | 2b2ad1442950d01107854fc40b173b715f0fce89 /epan/dissectors/asn1/lte-rrc | |
parent | 7f2de76c634ff01b3bfa24ca04549c62078ae3d4 (diff) |
LTE-RRC: fix dissection of GPRS container
Payload embedded in LTE message does not include the first byte identifying the message type.
Let's prepend a fake one before calling the gsm_rlcmac dissector
Change-Id: Ibcf9b52902474a556b55e9b0a076d09d341f868c
Reviewed-on: https://code.wireshark.org/review/15642
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
Diffstat (limited to 'epan/dissectors/asn1/lte-rrc')
-rw-r--r-- | epan/dissectors/asn1/lte-rrc/lte-rrc.cnf | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/epan/dissectors/asn1/lte-rrc/lte-rrc.cnf b/epan/dissectors/asn1/lte-rrc/lte-rrc.cnf index ce30978b1d..d06d1b29cc 100644 --- a/epan/dissectors/asn1/lte-rrc/lte-rrc.cnf +++ b/epan/dissectors/asn1/lte-rrc/lte-rrc.cnf @@ -384,7 +384,14 @@ MasterInformationBlock/schedulingInfoSIB1-BR-r13 TYPE=FT_UINT32 DISPLAY=BASE_DEC } } else { if (gsm_rlcmac_dl_handle) { - lte_rrc_call_dissector(gsm_rlcmac_dl_handle, target_rat_msg_cont_tvb, actx->pinfo, subtree); + tvbuff_t *gsm_rlcmac_dl_tvb = tvb_new_composite(); + guint8 *pd = (guint8 *) wmem_alloc(actx->pinfo->pool, 1); + pd[0] = 0x40; + tvb_composite_append(gsm_rlcmac_dl_tvb, tvb_new_real_data(pd, 1, 1)); + tvb_composite_append(gsm_rlcmac_dl_tvb, target_rat_msg_cont_tvb); + tvb_composite_finalize(gsm_rlcmac_dl_tvb); + add_new_data_source(actx->pinfo, gsm_rlcmac_dl_tvb, "GPRS DL control block"); + lte_rrc_call_dissector(gsm_rlcmac_dl_handle, gsm_rlcmac_dl_tvb, actx->pinfo, subtree); } } break; @@ -458,6 +465,13 @@ MasterInformationBlock/schedulingInfoSIB1-BR-r13 TYPE=FT_UINT32 DISPLAY=BASE_DEC case SI_OrPSI_GERAN_psi: /* PSI message */ if (gsm_rlcmac_dl_handle) { + tvbuff_t *gsm_rlcmac_dl_tvb = tvb_new_composite(); + guint8 *pd = (guint8 *) wmem_alloc(actx->pinfo->pool, 1); + pd[0] = 0x40; + tvb_composite_append(gsm_rlcmac_dl_tvb, tvb_new_real_data(pd, 1, 1)); + tvb_composite_append(gsm_rlcmac_dl_tvb, sys_info_list_tvb); + tvb_composite_finalize(gsm_rlcmac_dl_tvb); + add_new_data_source(actx->pinfo, gsm_rlcmac_dl_tvb, "GPRS DL control block"); lte_rrc_call_dissector(gsm_rlcmac_dl_handle, sys_info_list_tvb, actx->pinfo, subtree); } break; |