From 7e867f5d66510cb70bfae7be2d4ec28351934f66 Mon Sep 17 00:00:00 2001 From: Ian Pilcher Date: Tue, 18 Oct 2022 11:45:28 -0500 Subject: libnftnl: Fix res_id byte order The res_id member of struct nfgenmsg is supposed to be in network byte order (big endian). Call htons() in __nftnl_nlmsg_build_hdr() to ensure that this is true on little endian systems. There is a kernel workaround that was introduced in 4.3 to address this issue: commit a9de9777d613500b089a7416f936bf3ae5f070d2 Author: Pablo Neira Ayuso Date: Fri Aug 28 21:01:43 2015 +0200 netfilter: nfnetlink: work around wrong endianess in res_id field And current oldest stable kernel branch in 4.9, merge this to fix the incorrect endianness from userspace. Signed-off-by: Ian Pilcher Signed-off-by: Pablo Neira Ayuso --- src/common.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/common.c b/src/common.c index 2d83c12..08572c3 100644 --- a/src/common.c +++ b/src/common.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -37,7 +38,7 @@ static struct nlmsghdr *__nftnl_nlmsg_build_hdr(char *buf, uint16_t type, nfh = mnl_nlmsg_put_extra_header(nlh, sizeof(struct nfgenmsg)); nfh->nfgen_family = family; nfh->version = NFNETLINK_V0; - nfh->res_id = res_id; + nfh->res_id = htons(res_id); return nlh; } -- cgit v1.2.3