summaryrefslogtreecommitdiffhomepage
path: root/lib
diff options
context:
space:
mode:
authorJo-Philipp Wich <jo@mein.io>2022-06-08 10:58:01 +0200
committerJo-Philipp Wich <jo@mein.io>2022-06-08 10:58:01 +0200
commit230e595312b7b0f48ad7129f908d9b337d63e8b6 (patch)
tree2866ee2cc117e8ea9777bae3b16ae01cac962ddc /lib
parentb211ca0e420d8086d3fa0358413a6f8b44df1115 (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.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/rtnl.c b/lib/rtnl.c
index b6a3e38..d4cf8b3 100644
--- a/lib/rtnl.c
+++ b/lib/rtnl.c
@@ -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)