diff options
author | Pau Espin Pedrol <pespin@sysmocom.de> | 2018-12-05 20:19:53 +0100 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2018-12-06 11:21:57 +0000 |
commit | d89cdf76615807747ab21b8788b6a149157e2192 (patch) | |
tree | 382721c57a62afeb13dfa75f363219430edabed1 | |
parent | b455d8fceefb543ace0e2c5729607326417db7c8 (diff) |
packet-rsl: Fix parsing values of some IE in ip.access specific messages
Those IEs have specific dissect methods that expect offset to point to
the IE type, not to its value. Furthermore, those methods already add a
subtree, so no need to create it for them.
Related: https://osmocom.org/issues/3705
Change-Id: Ia63253b95678b799f59ed945d1381f4eb01be636
Reviewed-on: https://code.wireshark.org/review/30931
Petri-Dish: Anders Broman <a.broman58@gmail.com>
Tested-by: Petri Dish Buildbot
Reviewed-by: Anders Broman <a.broman58@gmail.com>
-rw-r--r-- | epan/dissectors/packet-rsl.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/epan/dissectors/packet-rsl.c b/epan/dissectors/packet-rsl.c index 18e81edeec..ac3e921f82 100644 --- a/epan/dissectors/packet-rsl.c +++ b/epan/dissectors/packet-rsl.c @@ -3447,20 +3447,25 @@ dissct_rsl_ipaccess_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int return tvb_reported_length(tvb); } - ti = proto_tree_add_item(tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN); - ie_tree = proto_item_add_subtree(ti, ett_ie_local_port); - offset += hlen; switch (tag) { case RSL_IE_CH_NO: - dissect_rsl_ie_ch_no(tvb, pinfo, ie_tree, offset, FALSE); + dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, FALSE); break; case RSL_IE_FRAME_NO: - dissect_rsl_ie_frame_no(tvb, pinfo, ie_tree, offset, FALSE); + dissect_rsl_ie_frame_no(tvb, pinfo, tree, offset, FALSE); break; case RSL_IE_MS_POW: - dissect_rsl_ie_ms_pow(tvb, pinfo, ie_tree, offset, FALSE); + dissect_rsl_ie_ms_pow(tvb, pinfo, tree, offset, FALSE); break; + default: + ti = proto_tree_add_item(tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN); + ie_tree = proto_item_add_subtree(ti, ett_ie_local_port); + } + + offset += hlen; + + switch (tag) { case RSL_IE_IPAC_REMOTE_IP: proto_tree_add_item(ie_tree, hf_rsl_remote_ip, tvb, offset, len, ENC_BIG_ENDIAN); |