Do not double free cfg struct if netlink_init() fails
If netlink_init() fails on socket create or bind the cfg struct provided as parameter is freed by netlink_init(). Callers of netlink_init() also free this struct on their error paths leading to double free. Signed-hostap: Pontus Fuchs <pontus.fuchs@gmail.com>
This commit is contained in:
parent
e99b4f3a14
commit
fb660a9431
1 changed files with 2 additions and 2 deletions
|
@ -97,8 +97,6 @@ struct netlink_data * netlink_init(struct netlink_config *cfg)
|
||||||
if (netlink == NULL)
|
if (netlink == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
netlink->cfg = cfg;
|
|
||||||
|
|
||||||
netlink->sock = socket(PF_NETLINK, SOCK_RAW, NETLINK_ROUTE);
|
netlink->sock = socket(PF_NETLINK, SOCK_RAW, NETLINK_ROUTE);
|
||||||
if (netlink->sock < 0) {
|
if (netlink->sock < 0) {
|
||||||
wpa_printf(MSG_ERROR, "netlink: Failed to open netlink "
|
wpa_printf(MSG_ERROR, "netlink: Failed to open netlink "
|
||||||
|
@ -121,6 +119,8 @@ struct netlink_data * netlink_init(struct netlink_config *cfg)
|
||||||
eloop_register_read_sock(netlink->sock, netlink_receive, netlink,
|
eloop_register_read_sock(netlink->sock, netlink_receive, netlink,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
|
netlink->cfg = cfg;
|
||||||
|
|
||||||
return netlink;
|
return netlink;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue