fix wrong nlmsg_len

nlmsg_len is the length of message including header.

Signed-off-by: Shuai Zhang <zs.broccoli@gmail.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
This commit is contained in:
Shuai Zhang 2014-11-27 20:38:01 +08:00 committed by Stéphane Graber
parent a6ee12772a
commit b588716468

View File

@ -107,14 +107,14 @@ void nla_end_nested(struct nlmsg *nlmsg, struct rtattr *attr)
extern struct nlmsg *nlmsg_alloc(size_t size) extern struct nlmsg *nlmsg_alloc(size_t size)
{ {
struct nlmsg *nlmsg; struct nlmsg *nlmsg;
size_t len = NLMSG_ALIGN(size) + NLMSG_ALIGN(sizeof(struct nlmsghdr *)); size_t len = NLMSG_HDRLEN + NLMSG_ALIGN(size);
nlmsg = (struct nlmsg *)malloc(len); nlmsg = (struct nlmsg *)malloc(len);
if (!nlmsg) if (!nlmsg)
return NULL; return NULL;
memset(nlmsg, 0, len); memset(nlmsg, 0, len);
nlmsg->nlmsghdr.nlmsg_len = NLMSG_ALIGN(size); nlmsg->nlmsghdr.nlmsg_len = NLMSG_HDRLEN;
return nlmsg; return nlmsg;
} }