diff options
author | Tobias Brunner <tobias@strongswan.org> | 2015-07-16 11:43:44 +0200 |
---|---|---|
committer | Tobias Brunner <tobias@strongswan.org> | 2015-08-04 14:15:18 +0200 |
commit | a6896b61496448d4e27e47d3979ea0031ca4bf9d (patch) | |
tree | 44fcc2367a4f4a2357540fc1a58850220df4ac74 | |
parent | a7f381ef000eb4f7687f64e967d66089085d3821 (diff) | |
download | strongswan-a6896b61496448d4e27e47d3979ea0031ca4bf9d.tar.bz2 strongswan-a6896b61496448d4e27e47d3979ea0031ca4bf9d.tar.xz |
kernel-netlink: Actually verify if the netlink message exceeds the buffer size
It might equal it and that's fine. With MSG_TRUNC we get the actual
message size and can only report an error if we haven't received the
complete message.
-rw-r--r-- | src/libhydra/plugins/kernel_netlink/kernel_netlink_shared.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/libhydra/plugins/kernel_netlink/kernel_netlink_shared.c b/src/libhydra/plugins/kernel_netlink/kernel_netlink_shared.c index b0e3103d3..238de82b3 100644 --- a/src/libhydra/plugins/kernel_netlink/kernel_netlink_shared.c +++ b/src/libhydra/plugins/kernel_netlink/kernel_netlink_shared.c @@ -185,8 +185,8 @@ static ssize_t read_msg(private_netlink_socket_t *this, return -1; } } - len = recv(this->socket, buf, buflen, block ? 0 : MSG_DONTWAIT); - if (len == buflen) + len = recv(this->socket, buf, buflen, MSG_TRUNC|(block ? 0 : MSG_DONTWAIT)); + if (len > buflen) { DBG1(DBG_KNL, "netlink response exceeds buffer size"); return 0; |