[NETLINK]: Make use of NLA_STRING/NLA_NUL_STRING attribute validation
Converts existing NLA_STRING attributes to use the new validation features, saving a couple of temporary buffers. Signed-off-by: Thomas Graf <tgraf@suug.ch> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
a5531a5d85
commit
5176f91ea8
@@ -161,9 +161,6 @@ int fib_nl_newrule(struct sk_buff *skb, struct nlmsghdr* nlh, void *arg)
|
||||
if (err < 0)
|
||||
goto errout;
|
||||
|
||||
if (tb[FRA_IFNAME] && nla_len(tb[FRA_IFNAME]) > IFNAMSIZ)
|
||||
goto errout;
|
||||
|
||||
rule = kzalloc(ops->rule_size, GFP_KERNEL);
|
||||
if (rule == NULL) {
|
||||
err = -ENOMEM;
|
||||
@@ -177,10 +174,7 @@ int fib_nl_newrule(struct sk_buff *skb, struct nlmsghdr* nlh, void *arg)
|
||||
struct net_device *dev;
|
||||
|
||||
rule->ifindex = -1;
|
||||
if (nla_strlcpy(rule->ifname, tb[FRA_IFNAME],
|
||||
IFNAMSIZ) >= IFNAMSIZ)
|
||||
goto errout_free;
|
||||
|
||||
nla_strlcpy(rule->ifname, tb[FRA_IFNAME], IFNAMSIZ);
|
||||
dev = __dev_get_by_name(rule->ifname);
|
||||
if (dev)
|
||||
rule->ifindex = dev->ifindex;
|
||||
|
@@ -371,8 +371,8 @@ static int rtnl_dump_ifinfo(struct sk_buff *skb, struct netlink_callback *cb)
|
||||
}
|
||||
|
||||
static struct nla_policy ifla_policy[IFLA_MAX+1] __read_mostly = {
|
||||
[IFLA_IFNAME] = { .type = NLA_STRING },
|
||||
[IFLA_MAP] = { .minlen = sizeof(struct rtnl_link_ifmap) },
|
||||
[IFLA_IFNAME] = { .type = NLA_STRING, .len = IFNAMSIZ-1 },
|
||||
[IFLA_MAP] = { .len = sizeof(struct rtnl_link_ifmap) },
|
||||
[IFLA_MTU] = { .type = NLA_U32 },
|
||||
[IFLA_TXQLEN] = { .type = NLA_U32 },
|
||||
[IFLA_WEIGHT] = { .type = NLA_U32 },
|
||||
@@ -392,9 +392,8 @@ static int rtnl_setlink(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg)
|
||||
if (err < 0)
|
||||
goto errout;
|
||||
|
||||
if (tb[IFLA_IFNAME] &&
|
||||
nla_strlcpy(ifname, tb[IFLA_IFNAME], IFNAMSIZ) >= IFNAMSIZ)
|
||||
return -EINVAL;
|
||||
if (tb[IFLA_IFNAME])
|
||||
nla_strlcpy(ifname, tb[IFLA_IFNAME], IFNAMSIZ);
|
||||
|
||||
err = -EINVAL;
|
||||
ifm = nlmsg_data(nlh);
|
||||
|
Reference in New Issue
Block a user