Correctly check buffer length in netlink_add_attribute()
This commit is contained in:
@@ -292,7 +292,7 @@ void netlink_add_attribute(struct nlmsghdr *hdr, int rta_type, chunk_t data,
|
||||
{
|
||||
struct rtattr *rta;
|
||||
|
||||
if (NLMSG_ALIGN(hdr->nlmsg_len) + RTA_ALIGN(data.len) > buflen)
|
||||
if (NLMSG_ALIGN(hdr->nlmsg_len) + RTA_LENGTH(data.len) > buflen)
|
||||
{
|
||||
DBG1(DBG_KNL, "unable to add attribute, buffer too small");
|
||||
return;
|
||||
|
||||
@@ -42,7 +42,8 @@ struct netlink_socket_t {
|
||||
* @param out received netlink message
|
||||
* @param out_len length of the received message
|
||||
*/
|
||||
status_t (*send)(netlink_socket_t *this, struct nlmsghdr *in, struct nlmsghdr **out, size_t *out_len);
|
||||
status_t (*send)(netlink_socket_t *this, struct nlmsghdr *in,
|
||||
struct nlmsghdr **out, size_t *out_len);
|
||||
|
||||
/**
|
||||
* Send a netlink message and wait for its acknowledge.
|
||||
@@ -67,11 +68,12 @@ netlink_socket_t *netlink_socket_create(int protocol);
|
||||
/**
|
||||
* Creates an rtattr and adds it to the given netlink message.
|
||||
*
|
||||
* @param hdr netlink message
|
||||
* @param rta_type type of the rtattr
|
||||
* @param data data to add to the rtattr
|
||||
* @param buflen length of the netlink message buffer
|
||||
* @param hdr netlink message
|
||||
* @param rta_type type of the rtattr
|
||||
* @param data data to add to the rtattr
|
||||
* @param buflen length of the netlink message buffer
|
||||
*/
|
||||
void netlink_add_attribute(struct nlmsghdr *hdr, int rta_type, chunk_t data, size_t buflen);
|
||||
void netlink_add_attribute(struct nlmsghdr *hdr, int rta_type, chunk_t data,
|
||||
size_t buflen);
|
||||
|
||||
#endif /* KERNEL_NETLINK_SHARED_H_ */
|
||||
|
||||
Reference in New Issue
Block a user