mirror of
https://github.com/vanhoefm/fragattacks.git
synced 2025-01-17 18:34:03 -05:00
dbus: Add boolean AllowRoam option to Scan() method options dictionary
To disallow roaming when a scan request's results are read, callers of the D-Bus Scan() method may add a new "AllowRoam" boolean key to the scan options dictionary and set that key's value to FALSE. Signed-hostap: Dan Williams <dcbw@redhat.com>
This commit is contained in:
parent
c6f5dec9c1
commit
538922a628
@ -1236,6 +1236,23 @@ static int wpas_dbus_get_scan_channels(DBusMessage *message,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int wpas_dbus_get_scan_allow_roam(DBusMessage *message,
|
||||||
|
DBusMessageIter *var,
|
||||||
|
dbus_bool_t *allow,
|
||||||
|
DBusMessage **reply)
|
||||||
|
{
|
||||||
|
if (dbus_message_iter_get_arg_type(var) != DBUS_TYPE_BOOLEAN) {
|
||||||
|
wpa_printf(MSG_DEBUG, "wpas_dbus_handler_scan[dbus]: "
|
||||||
|
"Type must be a boolean");
|
||||||
|
*reply = wpas_dbus_error_invalid_args(
|
||||||
|
message, "Wrong Type value type. Boolean required");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
dbus_message_iter_get_basic(var, allow);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wpas_dbus_handler_scan - Request a wireless scan on an interface
|
* wpas_dbus_handler_scan - Request a wireless scan on an interface
|
||||||
* @message: Pointer to incoming dbus message
|
* @message: Pointer to incoming dbus message
|
||||||
@ -1254,6 +1271,7 @@ DBusMessage * wpas_dbus_handler_scan(DBusMessage *message,
|
|||||||
char *key = NULL, *type = NULL;
|
char *key = NULL, *type = NULL;
|
||||||
struct wpa_driver_scan_params params;
|
struct wpa_driver_scan_params params;
|
||||||
size_t i;
|
size_t i;
|
||||||
|
dbus_bool_t allow_roam = 1;
|
||||||
|
|
||||||
os_memset(¶ms, 0, sizeof(params));
|
os_memset(¶ms, 0, sizeof(params));
|
||||||
|
|
||||||
@ -1284,6 +1302,12 @@ DBusMessage * wpas_dbus_handler_scan(DBusMessage *message,
|
|||||||
if (wpas_dbus_get_scan_channels(message, &variant_iter,
|
if (wpas_dbus_get_scan_channels(message, &variant_iter,
|
||||||
¶ms, &reply) < 0)
|
¶ms, &reply) < 0)
|
||||||
goto out;
|
goto out;
|
||||||
|
} else if (os_strcmp(key, "AllowRoam") == 0) {
|
||||||
|
if (wpas_dbus_get_scan_allow_roam(message,
|
||||||
|
&variant_iter,
|
||||||
|
&allow_roam,
|
||||||
|
&reply) < 0)
|
||||||
|
goto out;
|
||||||
} else {
|
} else {
|
||||||
wpa_printf(MSG_DEBUG, "wpas_dbus_handler_scan[dbus]: "
|
wpa_printf(MSG_DEBUG, "wpas_dbus_handler_scan[dbus]: "
|
||||||
"Unknown argument %s", key);
|
"Unknown argument %s", key);
|
||||||
@ -1332,6 +1356,9 @@ DBusMessage * wpas_dbus_handler_scan(DBusMessage *message,
|
|||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!allow_roam)
|
||||||
|
wpa_s->scan_res_handler = scan_only_handler;
|
||||||
|
|
||||||
out:
|
out:
|
||||||
for (i = 0; i < WPAS_MAX_SCAN_SSIDS; i++)
|
for (i = 0; i < WPAS_MAX_SCAN_SSIDS; i++)
|
||||||
os_free((u8 *) params.ssids[i].ssid);
|
os_free((u8 *) params.ssids[i].ssid);
|
||||||
|
Loading…
Reference in New Issue
Block a user