libnetlink: don't confuse variables in rtnl_talk()
There is two variables named 'len' in rtnl_talk. In fact, commitc079e121a7didn't work. For example, it was possible to trigger a seg fault with this command: $ ip link set gre2 type ip6gre hoplimit 32 Let's rename the argument len to maxlen. Fixes:c079e121a7("libnetlink: add size argument to rtnl_talk") Reported-by: Thomas Faivre <thomas.faivre@6wind.com> Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
This commit is contained in:
parent
0f7543322c
commit
ed108cfc02
|
|
@ -332,7 +332,7 @@ int rtnl_dump_filter_nc(struct rtnl_handle *rth,
|
||||||
}
|
}
|
||||||
|
|
||||||
int rtnl_talk(struct rtnl_handle *rtnl, struct nlmsghdr *n,
|
int rtnl_talk(struct rtnl_handle *rtnl, struct nlmsghdr *n,
|
||||||
struct nlmsghdr *answer, size_t len)
|
struct nlmsghdr *answer, size_t maxlen)
|
||||||
{
|
{
|
||||||
int status;
|
int status;
|
||||||
unsigned seq;
|
unsigned seq;
|
||||||
|
|
@ -415,7 +415,7 @@ int rtnl_talk(struct rtnl_handle *rtnl, struct nlmsghdr *n,
|
||||||
} else if (!err->error) {
|
} else if (!err->error) {
|
||||||
if (answer)
|
if (answer)
|
||||||
memcpy(answer, h,
|
memcpy(answer, h,
|
||||||
MIN(len, h->nlmsg_len));
|
MIN(maxlen, h->nlmsg_len));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -427,7 +427,7 @@ int rtnl_talk(struct rtnl_handle *rtnl, struct nlmsghdr *n,
|
||||||
|
|
||||||
if (answer) {
|
if (answer) {
|
||||||
memcpy(answer, h,
|
memcpy(answer, h,
|
||||||
MIN(len, h->nlmsg_len));
|
MIN(maxlen, h->nlmsg_len));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue