Commit 74082646 authored by Beniamino Galvani's avatar Beniamino Galvani

lldp: fix parsing of vlan-name attribute

We used to read 3 bytes after the TLV, fix this.

Also, check that string length is at most 32 bytes as specified in
figure E.3 of IEEE 802.1AB-2009.

Fixes: 18133ea1
(cherry picked from commit e9097787)
(cherry picked from commit 05c27c3c)
(cherry picked from commit 6d4ad477)
(cherry picked from commit b97d38e5)
(cherry picked from commit 73b572e0)
(cherry picked from commit d8c41cd8)
parent 3712c518
......@@ -515,11 +515,13 @@ lldp_neighbor_new (sd_lldp_neighbor *neighbor_sd, GError **error)
l = data8[2];
if (len != 3 + l)
if (l > 32)
_lldp_attr_set_uint32 (neigh->attrs, LLDP_ATTR_ID_IEEE_802_1_VID,
_access_uint16 (&data8[0]));
_lldp_attr_set_str_ptr (neigh->attrs, LLDP_ATTR_ID_IEEE_802_1_VLAN_NAME,
&data8[3], len);
&data8[3], l);
......@@ -222,11 +222,10 @@ TEST_RECV_FRAME_DEFINE (_test_recv_data1_frame0,
0x01, 0xe8,
0xfe, 0x07, 0x00, 0x80, 0xc2, 0x02, /* IEEE 802.1 - Port and Protocol VLAN ID */
0x01, 0x00, 0x00,
0xfe, 0x17, 0x00, 0x80, 0xc2, 0x03, /* IEEE 802.1 - VLAN Name */
0x01, 0xe8, 0x10, 0x76, 0x32, 0x2d,
0xfe, 0x16, 0x00, 0x80, 0xc2, 0x03, /* IEEE 802.1 - VLAN Name */
0x01, 0xe8, 0x0f, 0x76, 0x32, 0x2d,
0x30, 0x34, 0x38, 0x38, 0x2d, 0x30,
0x33, 0x2d, 0x30, 0x35, 0x30, 0x35,
0xfe, 0x05, 0x00, 0x80, 0xc2, 0x04, /* IEEE 802.1 - Protocol Identity */
0x00, 0x00 /* End of LLDPDU */
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment