]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
hostapd: Fix DETACH command debug prints to avoid use of freed memory
authorJouni Malinen <jouni@qca.qualcomm.com>
Tue, 5 Nov 2013 23:15:28 +0000 (01:15 +0200)
committerJouni Malinen <j@w1.fi>
Tue, 5 Nov 2013 23:15:28 +0000 (01:15 +0200)
In case a control interface socket is detached because of sendmsg()
failing for the socket, function call to detach the socket uses a
pointer to the socket information in the structure to be freed. Reorder
code to print socket info before freeing the data to avoid use of freed
memory in case debug prints are enabled.

This is similar to the earlier wpa_supplicant fix in commit
a235aca316a8a4729735fecb00f7d7775b38d993.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

hostapd/ctrl_iface.c

index cea96eb60c9a880ea930a638a0783256bba93c28..3f181fa82f6945a94d36057f5c2ab476bce92eb0 100644 (file)
@@ -82,15 +82,15 @@ static int hostapd_ctrl_iface_detach(struct hostapd_data *hapd,
                    os_memcmp(from->sun_path, dst->addr.sun_path,
                              fromlen - offsetof(struct sockaddr_un, sun_path))
                    == 0) {
+                       wpa_hexdump(MSG_DEBUG, "CTRL_IFACE monitor detached",
+                                   (u8 *) from->sun_path,
+                                   fromlen -
+                                   offsetof(struct sockaddr_un, sun_path));
                        if (prev == NULL)
                                hapd->ctrl_dst = dst->next;
                        else
                                prev->next = dst->next;
                        os_free(dst);
-                       wpa_hexdump(MSG_DEBUG, "CTRL_IFACE monitor detached",
-                                   (u8 *) from->sun_path,
-                                   fromlen -
-                                   offsetof(struct sockaddr_un, sun_path));
                        return 0;
                }
                prev = dst;