diff options
Diffstat (limited to 'libnl_2')
-rw-r--r-- | libnl_2/attr.c | 9 | ||||
-rw-r--r-- | libnl_2/socket.c | 1 |
2 files changed, 10 insertions, 0 deletions
diff --git a/libnl_2/attr.c b/libnl_2/attr.c index 9467668..d416350 100644 --- a/libnl_2/attr.c +++ b/libnl_2/attr.c @@ -87,8 +87,17 @@ struct nlattr *nla_nest_start(struct nl_msg *msg, int attrtype) /* Finalize nesting of attributes. */ int nla_nest_end(struct nl_msg *msg, struct nlattr *start) { + struct nlattr *container; + + /* Adjust nested attribute container size */ + container = (unsigned char *) start - sizeof(struct nlattr); + container->nla_len = (unsigned char *) \ + nlmsg_tail(nlmsg_hdr(msg)) - (unsigned char *)container; + + /* Fix attribute size */ start->nla_len = (unsigned char *) \ nlmsg_tail(nlmsg_hdr(msg)) - (unsigned char *)start; + return 0; } diff --git a/libnl_2/socket.c b/libnl_2/socket.c index 3bcf210..ce54f19 100644 --- a/libnl_2/socket.c +++ b/libnl_2/socket.c @@ -91,6 +91,7 @@ struct nl_sock *nl_socket_alloc_cb(struct nl_cb *cb) void nl_socket_free(struct nl_sock *sk) { nl_cb_put(sk->s_cb); + close(sk->s_fd); free(sk); } |