diff options
author | Jo-Philipp Wich <jo@mein.io> | 2022-06-08 10:58:01 +0200 |
---|---|---|
committer | Jo-Philipp Wich <jo@mein.io> | 2022-06-08 10:58:01 +0200 |
commit | 230e595312b7b0f48ad7129f908d9b337d63e8b6 (patch) | |
tree | 2866ee2cc117e8ea9777bae3b16ae01cac962ddc /lib | |
parent | b211ca0e420d8086d3fa0358413a6f8b44df1115 (diff) |
rtnl: fix segmentation fault on parsing linkinfo RTA without data
Some link types, such as veth, yield an IFLA_LINKINFO nla without an
embedded IFLA_INFO_DATA / INFLA_INFO_SLAVE_DATA nla which causes the
nla converter to dereference a NULL nla pointer.
Properly deal with such cases and check for the existence of the
child nla before attempting to parse it.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/rtnl.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -1890,8 +1890,9 @@ uc_nl_convert_rta_linkinfo_data(uc_value_t *obj, size_t attr, struct nl_msg *msg } } - if (nattrs > 0) { - attr = (attr == IFLA_INFO_KIND) ? IFLA_INFO_DATA : IFLA_INFO_SLAVE_DATA; + attr = (attr == IFLA_INFO_KIND) ? IFLA_INFO_DATA : IFLA_INFO_SLAVE_DATA; + + if (nattrs > 0 && tb[attr]) { rv = uc_nl_convert_attrs(msg, nla_data(tb[attr]), nla_len(tb[attr]), 0, attrs, nattrs, vm, obj); if (!rv) |