|
@@ -3898,6 +3898,9 @@ static int rtnl_stats_get(struct sk_buff *skb, struct nlmsghdr *nlh)
|
|
|
u32 filter_mask;
|
|
|
int err;
|
|
|
|
|
|
+ if (nlmsg_len(nlh) < sizeof(*ifsm))
|
|
|
+ return -EINVAL;
|
|
|
+
|
|
|
ifsm = nlmsg_data(nlh);
|
|
|
if (ifsm->ifindex > 0)
|
|
|
dev = __dev_get_by_index(net, ifsm->ifindex);
|
|
@@ -3947,6 +3950,9 @@ static int rtnl_stats_dump(struct sk_buff *skb, struct netlink_callback *cb)
|
|
|
|
|
|
cb->seq = net->dev_base_seq;
|
|
|
|
|
|
+ if (nlmsg_len(cb->nlh) < sizeof(*ifsm))
|
|
|
+ return -EINVAL;
|
|
|
+
|
|
|
ifsm = nlmsg_data(cb->nlh);
|
|
|
filter_mask = ifsm->filter_mask;
|
|
|
if (!filter_mask)
|