diff options
author | Sven Eckelmann <sven@open-mesh.com> | 2014-09-30 16:39:37 +0200 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2014-11-08 00:20:07 +0000 |
commit | 48885cc1bcbfdf909918d0927df34fee57e13f39 (patch) | |
tree | 0e6848e84618abde41940f0225d8b4522baa8ca9 | |
parent | 3428e809ddb2d5f673a539516711f61a36eb0ffc (diff) | |
download | wireshark-48885cc1bcbfdf909918d0927df34fee57e13f39.tar.gz |
batadv: Add missing padding to batadv_unicast_4addr_v14
The already frozen packet format of batman-adv for Linux 3.5 was rejected by
David S. Miller. The 4addr format v14 was therefore changed after the freeze
and published in his final form in Linux 3.8.
Change-Id: I519476c4c6d62b403e197fae6a853d9bbe61f9bc
Signed-off-by: Sven Eckelmann <sven@open-mesh.com>
Signed-off-by: Simon Wunderlich <simon@open-mesh.com>
Reviewed-on: https://code.wireshark.org/review/5174
Reviewed-by: Michael Mann <mmann78@netscape.net>
-rw-r--r-- | epan/dissectors/packet-batadv.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/epan/dissectors/packet-batadv.c b/epan/dissectors/packet-batadv.c index 4cd32d5d89..43515e0707 100644 --- a/epan/dissectors/packet-batadv.c +++ b/epan/dissectors/packet-batadv.c @@ -214,8 +214,9 @@ struct unicast_4addr_packet_v14 { address dest; address src; guint8 subtype; + guint8 reserved; }; -#define UNICAST_4ADDR_PACKET_V14_SIZE 17 +#define UNICAST_4ADDR_PACKET_V14_SIZE 18 struct unicast_frag_packet_v12 { guint8 packet_type; @@ -2152,6 +2153,7 @@ static void dissect_batadv_unicast_4addr_v14(tvbuff_t *tvb, packet_info *pinfo, src_addr = tvb_get_ptr(tvb, 10, 6); SET_ADDRESS(&unicast_4addr_packeth->src, AT_ETHER, 6, src_addr); unicast_4addr_packeth->subtype = tvb_get_guint8(tvb, 16); + unicast_4addr_packeth->reserved = tvb_get_guint8(tvb, 17); /* Set info column */ col_add_fstr(pinfo->cinfo, COL_INFO, "%s", @@ -2194,6 +2196,9 @@ static void dissect_batadv_unicast_4addr_v14(tvbuff_t *tvb, packet_info *pinfo, proto_tree_add_item(batadv_unicast_4addr_tree, hf_batadv_unicast_4addr_subtype, tvb, offset, 1, ENC_BIG_ENDIAN); offset += 1; + /* Skip 1 byte of padding. */ + offset += 1; + SET_ADDRESS(&pinfo->dl_dst, AT_ETHER, 6, dest_addr); SET_ADDRESS(&pinfo->dst, AT_ETHER, 6, dest_addr); SET_ADDRESS(&pinfo->dl_src, AT_ETHER, 6, src_addr); |