Commit bbc13c5b 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

https://bugzilla.redhat.com/show_bug.cgi?id=1652210
(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)
(cherry picked from commit 74082646)
parent ba3f905c
......@@ -515,11 +515,13 @@ lldp_neighbor_new (sd_lldp_neighbor *neighbor_sd, GError **error)
l = data8[2];
if (len != 3 + l)
continue;
if (l > 32)
continue;
_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);
break;
}
default:
......
......@@ -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,
0x00,
0xfe, 0x05, 0x00, 0x80, 0xc2, 0x04, /* IEEE 802.1 - Protocol Identity */
0x00,
0x00, 0x00 /* End of LLDPDU */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment