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:
Pontus Fuchs 2012-11-24 16:47:20 +02:00 committed by Jouni Malinen
parent e99b4f3a14
commit fb660a9431

View file

@ -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;
} }