Hi! On Sat, Aug 12, 2017 at 19:41:54 +0300, Lennert Buytenhek wrote: [...]
Notes: [...] * The netlink serialization code in bird 1.6 has a bug whereby if you try to serialize an attribute that is not a multiple of 4 bytes long (such as RTA_ENCAP_TYPE, which is needed for MPLS and has a payload of only 2 bytes) it will round up the size in the netlink header (which is wrong -- that field should reflect the length _without_ padding) but then send out a netlink message without the padding appended if this was the last attribute in the message (which is also wrong). Also, if you do try to serialize an attribute that is not a multiple of 4 bytes long, then between 1 and 3 bytes of uninitialized bird stack memory get leaked over netlink. (The netlink attributes that upstream bird cares about are all multiples of 4 bytes long, so this won't actually surface in current bird upstream.) [...]
I don't know much about netlink etc and haven't looked at the code, but from this summary, it sounds like this should be fixed/included in bird, to avoid surprises in the future, when people want to do more interesting stuff with netlink. That said: Would it make sense to extract that part and submit it alone? Cheers Christian -- www.cosmokey.com