]> git.ipfire.org Git - thirdparty/strongswan.git/blobdiff - src/libcharon/plugins/kernel_netlink/kernel_netlink_shared.c
kernel-netlink: Calculate length of Netlink messages correctly
[thirdparty/strongswan.git] / src / libcharon / plugins / kernel_netlink / kernel_netlink_shared.c
index 84d78eca2497d48741afd68344003bf5ed1a7231..4014d3cbe11d1cbaab3e6cb4fa2f105a8f1c92ec 100644 (file)
@@ -705,7 +705,7 @@ void netlink_add_attribute(struct nlmsghdr *hdr, int rta_type, chunk_t data,
        rta->rta_type = rta_type;
        rta->rta_len = RTA_LENGTH(data.len);
        memcpy(RTA_DATA(rta), data.ptr, data.len);
-       hdr->nlmsg_len = NLMSG_ALIGN(hdr->nlmsg_len) + rta->rta_len;
+       hdr->nlmsg_len = NLMSG_ALIGN(hdr->nlmsg_len) + RTA_ALIGN(rta->rta_len);
 }
 
 /**
@@ -724,7 +724,7 @@ void* netlink_reserve(struct nlmsghdr *hdr, int buflen, int type, int len)
        rta = ((void*)hdr) + NLMSG_ALIGN(hdr->nlmsg_len);
        rta->rta_type = type;
        rta->rta_len = RTA_LENGTH(len);
-       hdr->nlmsg_len = NLMSG_ALIGN(hdr->nlmsg_len) + rta->rta_len;
+       hdr->nlmsg_len = NLMSG_ALIGN(hdr->nlmsg_len) + RTA_ALIGN(rta->rta_len);
 
        return RTA_DATA(rta);
 }