Verify that eloop_register_read_sock() succeeds for ctrl_iface setup
authorJouni Malinen <j@w1.fi>
Thu, 8 Jan 2015 00:29:59 +0000 (02:29 +0200)
committerJouni Malinen <j@w1.fi>
Thu, 8 Jan 2015 00:34:08 +0000 (02:34 +0200)
This allows faster detection of a case where a memory allocation fails
within eloop.

Signed-off-by: Jouni Malinen <j@w1.fi>
hostapd/ctrl_iface.c

index 6c81211..a7235a4 100644 (file)
@@ -2251,8 +2251,11 @@ int hostapd_ctrl_iface_init(struct hostapd_data *hapd)
        os_free(fname);
 
        hapd->ctrl_sock = s;
-       eloop_register_read_sock(s, hostapd_ctrl_iface_receive, hapd,
-                                NULL);
+       if (eloop_register_read_sock(s, hostapd_ctrl_iface_receive, hapd,
+                                    NULL) < 0) {
+               hostapd_ctrl_iface_deinit(hapd);
+               return -1;
+       }
        hapd->msg_ctx = hapd;
        wpa_msg_register_cb(hostapd_ctrl_iface_msg_cb);
 
@@ -2299,6 +2302,7 @@ void hostapd_ctrl_iface_deinit(struct hostapd_data *hapd)
        }
 
        dst = hapd->ctrl_dst;
+       hapd->ctrl_dst = NULL;
        while (dst) {
                prev = dst;
                dst = dst->next;