mirror of
https://github.com/vanhoefm/fragattacks.git
synced 2025-02-17 17:43:06 -05:00
dbus: Redirect signal processing to the management device if present
This fixes sending of FindStopped, GroupFormationFailure, and InvitationReceived signals in the case of separate P2P-Device interface. This extends the coverage of the earlier commit 745d62322b37675b4a7eb8f0cd10e25a288168da ("dbus: Redirect P2P request to the managment device if present") to these three functions that were missing the redirection. Some wireless controllers might have separate P2P-Device interface, see as example result of 'iw dev': phy#0 Unnamed/non-netdev interface ... type P2P-device ... Interface wlp2s0 type managed ... In this case there is separate 'struct wpa_supplicant' created for this p2p-dev-* device as result of 'wpa_supplicant_add_iface > wpas_p2p_add_p2pdev_interface > wpa_supplicant_add_iface'. This instance of wpa_supplicant is not registered in D-Bus (wpas_dbus_register_*) since for corresponding P2P device interface flag 'struct wpa_interface > p2p_mgmt' is set. But this instance is saved in p2p_init_wpa_s and is used for handling P2P related D-Bus commands. Therefore we should look for D-Bus path in the parent of p2p_init_wpa_s instance. Without this change test dbus_p2p_discovery starts failing if we set support_p2p_device in vm-run.sh. Signed-off-by: Vasyl Vavrychuk <vvavrychuk@gmail.com>
This commit is contained in:
parent
e480212765
commit
d53401c54b
@ -2027,6 +2027,9 @@ void wpas_dbus_signal_p2p_group_formation_failure(struct wpa_supplicant *wpa_s,
|
||||
if (iface == NULL)
|
||||
return;
|
||||
|
||||
if (wpa_s->p2p_mgmt)
|
||||
wpa_s = wpa_s->parent;
|
||||
|
||||
msg = dbus_message_new_signal(wpa_s->dbus_new_path,
|
||||
WPAS_DBUS_NEW_IFACE_P2PDEVICE,
|
||||
"GroupFormationFailure");
|
||||
@ -2068,6 +2071,9 @@ void wpas_dbus_signal_p2p_invitation_received(struct wpa_supplicant *wpa_s,
|
||||
if (iface == NULL)
|
||||
return;
|
||||
|
||||
if (wpa_s->p2p_mgmt)
|
||||
wpa_s = wpa_s->parent;
|
||||
|
||||
msg = dbus_message_new_signal(wpa_s->dbus_new_path,
|
||||
WPAS_DBUS_NEW_IFACE_P2PDEVICE,
|
||||
"InvitationReceived");
|
||||
@ -4266,7 +4272,13 @@ void wpas_dbus_signal_p2p_find_stopped(struct wpa_supplicant *wpa_s)
|
||||
iface = wpa_s->global->dbus;
|
||||
|
||||
/* Do nothing if the control interface is not turned on */
|
||||
if (iface == NULL || !wpa_s->dbus_new_path)
|
||||
if (iface == NULL)
|
||||
return;
|
||||
|
||||
if (wpa_s->p2p_mgmt)
|
||||
wpa_s = wpa_s->parent;
|
||||
|
||||
if (!wpa_s->dbus_new_path)
|
||||
return;
|
||||
|
||||
msg = dbus_message_new_signal(wpa_s->dbus_new_path,
|
||||
|
Loading…
x
Reference in New Issue
Block a user