From 6af26981e727149e2e3fdfac85e2ef86b3828b11 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 26 Jul 2023 16:17:18 +0200 Subject: lib: accept NULL argument in nla_nest_cancel() for robustness Previously, a NULL argument would most likely also do thing, but it also hits undefined behavior. --- lib/attr.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/attr.c b/lib/attr.c index 1363afb..a8913d3 100644 --- a/lib/attr.c +++ b/lib/attr.c @@ -991,6 +991,15 @@ void nla_nest_cancel(struct nl_msg *msg, const struct nlattr *attr) { ssize_t len; + if (!attr) { + /* For robustness, allow a NULL attr to do nothing. NULL is also + * what nla_nest_start() when out of buffer space. + * + * Warning, before libnl-3.8, the function did not accept NULL! + * If you care, catch NULL yourself. */ + return; + } + len = (char *) nlmsg_tail(msg->nm_nlh) - (char *) attr; if (len < 0) BUG(); -- cgit v0.12