From fb660a9431f881ea6dbba2967094605ad64398ee Mon Sep 17 00:00:00 2001 From: Pontus Fuchs Date: Sat, 24 Nov 2012 16:47:20 +0200 Subject: [PATCH] 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 --- src/drivers/netlink.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/drivers/netlink.c b/src/drivers/netlink.c index dd662f371..6c60550fd 100644 --- a/src/drivers/netlink.c +++ b/src/drivers/netlink.c @@ -97,8 +97,6 @@ struct netlink_data * netlink_init(struct netlink_config *cfg) if (netlink == NULL) return NULL; - netlink->cfg = cfg; - netlink->sock = socket(PF_NETLINK, SOCK_RAW, NETLINK_ROUTE); if (netlink->sock < 0) { 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, NULL); + netlink->cfg = cfg; + return netlink; }