diff options
| -rw-r--r-- | net/tipc/netlink_compat.c | 7 | 
1 files changed, 6 insertions, 1 deletions
| diff --git a/net/tipc/netlink_compat.c b/net/tipc/netlink_compat.c index 5f8e53cca222..0bfd03d67fdd 100644 --- a/net/tipc/netlink_compat.c +++ b/net/tipc/netlink_compat.c @@ -771,7 +771,12 @@ static int tipc_nl_compat_link_set(struct tipc_nl_compat_cmd_doit *cmd,  	lc = (struct tipc_link_config *)TLV_DATA(msg->req); -	len = min_t(int, TLV_GET_DATA_LEN(msg->req), TIPC_MAX_LINK_NAME); +	len = TLV_GET_DATA_LEN(msg->req); +	len -= offsetof(struct tipc_link_config, name); +	if (len <= 0) +		return -EINVAL; + +	len = min_t(int, len, TIPC_MAX_LINK_NAME);  	if (!string_is_valid(lc->name, len))  		return -EINVAL; | 
