diff options
Diffstat (limited to 'net/netlink')
-rw-r--r-- | net/netlink/genetlink.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/net/netlink/genetlink.c b/net/netlink/genetlink.c index d32599116c56..3ac942cdb677 100644 --- a/net/netlink/genetlink.c +++ b/net/netlink/genetlink.c | |||
@@ -455,7 +455,8 @@ static struct sk_buff *ctrl_build_msg(struct genl_family *family, u32 pid, | |||
455 | 455 | ||
456 | static struct nla_policy ctrl_policy[CTRL_ATTR_MAX+1] __read_mostly = { | 456 | static struct nla_policy ctrl_policy[CTRL_ATTR_MAX+1] __read_mostly = { |
457 | [CTRL_ATTR_FAMILY_ID] = { .type = NLA_U16 }, | 457 | [CTRL_ATTR_FAMILY_ID] = { .type = NLA_U16 }, |
458 | [CTRL_ATTR_FAMILY_NAME] = { .type = NLA_STRING }, | 458 | [CTRL_ATTR_FAMILY_NAME] = { .type = NLA_NUL_STRING, |
459 | .len = GENL_NAMSIZ - 1 }, | ||
459 | }; | 460 | }; |
460 | 461 | ||
461 | static int ctrl_getfamily(struct sk_buff *skb, struct genl_info *info) | 462 | static int ctrl_getfamily(struct sk_buff *skb, struct genl_info *info) |
@@ -470,12 +471,9 @@ static int ctrl_getfamily(struct sk_buff *skb, struct genl_info *info) | |||
470 | } | 471 | } |
471 | 472 | ||
472 | if (info->attrs[CTRL_ATTR_FAMILY_NAME]) { | 473 | if (info->attrs[CTRL_ATTR_FAMILY_NAME]) { |
473 | char name[GENL_NAMSIZ]; | 474 | char *name; |
474 | |||
475 | if (nla_strlcpy(name, info->attrs[CTRL_ATTR_FAMILY_NAME], | ||
476 | GENL_NAMSIZ) >= GENL_NAMSIZ) | ||
477 | goto errout; | ||
478 | 475 | ||
476 | name = nla_data(info->attrs[CTRL_ATTR_FAMILY_NAME]); | ||
479 | res = genl_family_find_byname(name); | 477 | res = genl_family_find_byname(name); |
480 | } | 478 | } |
481 | 479 | ||