[PATCH 6/7] netlink: Add sealed flag to l_netlink_message

Denis Kenzior <[email protected]> Fri, 26 Jul 2024 11:12:18 -0500
Newsgroups dev.linux.lists.ell
Message-ID <[email protected]>
If the sealed flag is set, the message can no longer be modified.  This
is useful when netlink message ownership is taken over by l_netlink_send
to prevent the message from being modified once it has been queued.
---
 ell/netlink-private.h | 1 +
 ell/netlink.c         | 3 +++
 2 files changed, 4 insertions(+)

diff --git a/ell/netlink-private.h b/ell/netlink-private.h
index b114f62f6bf3..f7119f6218e9 100644
--- a/ell/netlink-private.h
+++ b/ell/netlink-private.h
@@ -40,6 +40,7 @@ struct l_netlink_message {
 	};
 	uint32_t nest_offset[4];
 	uint8_t nest_level;
+	bool sealed : 1;
 };
 
 bool netlink_parse_ext_ack_error(const struct nlmsghdr *nlmsg,
diff --git a/ell/netlink.c b/ell/netlink.c
index 58dfd9779875..b6d5fb1fd36d 100644
--- a/ell/netlink.c
+++ b/ell/netlink.c
@@ -685,6 +685,9 @@ static int message_grow(struct l_netlink_message *message, uint32_t needed)
 {
 	uint32_t grow_to;
 
+	if (message->sealed)
+		return -EPERM;
+
 	if (message->size - message->hdr->nlmsg_len >= needed)
 		return 0;
 
-- 
2.45.2