mirror of
https://github.com/vanhoefm/fragattacks.git
synced 2024-11-28 10:18:21 -05:00
Allow the privsep driver to pass the set_country to the real driver
This commit is contained in:
parent
2cfcd014f4
commit
6301cc5d38
@ -31,6 +31,7 @@ enum privsep_cmd {
|
||||
PRIVSEP_CMD_L2_NOTIFY_AUTH_START,
|
||||
PRIVSEP_CMD_L2_SEND,
|
||||
PRIVSEP_CMD_SET_MODE,
|
||||
PRIVSEP_CMD_SET_COUNTRY,
|
||||
};
|
||||
|
||||
struct privsep_cmd_associate
|
||||
|
@ -756,6 +756,15 @@ static int wpa_driver_privsep_set_mode(void *priv, int mode)
|
||||
}
|
||||
|
||||
|
||||
static int wpa_driver_privsep_set_country(void *priv, const char *alpha2)
|
||||
{
|
||||
struct wpa_driver_privsep_data *drv = priv;
|
||||
wpa_printf(MSG_DEBUG, "%s country='%s'", __func__, alpha2);
|
||||
return wpa_priv_cmd(drv, PRIVSEP_CMD_SET_COUNTRY, alpha2,
|
||||
os_strlen(alpha2), NULL, NULL);
|
||||
}
|
||||
|
||||
|
||||
struct wpa_driver_ops wpa_driver_privsep_ops = {
|
||||
"privsep",
|
||||
"wpa_supplicant privilege separated driver",
|
||||
@ -796,7 +805,7 @@ struct wpa_driver_ops wpa_driver_privsep_ops = {
|
||||
wpa_driver_privsep_get_scan_results2,
|
||||
NULL /* set_probe_req_ie */,
|
||||
wpa_driver_privsep_set_mode,
|
||||
NULL /* set_country */,
|
||||
wpa_driver_privsep_set_country,
|
||||
NULL /* global_init */,
|
||||
NULL /* global_deinit */,
|
||||
NULL /* init2 */,
|
||||
|
@ -575,10 +575,21 @@ static void wpa_priv_cmd_set_mode(struct wpa_priv_interface *iface,
|
||||
}
|
||||
|
||||
|
||||
static void wpa_priv_cmd_set_country(struct wpa_priv_interface *iface,
|
||||
char *buf)
|
||||
{
|
||||
if (iface->drv_priv == NULL || iface->driver->set_country == NULL ||
|
||||
*buf == '\0')
|
||||
return;
|
||||
|
||||
iface->driver->set_country(iface->drv_priv, buf);
|
||||
}
|
||||
|
||||
|
||||
static void wpa_priv_receive(int sock, void *eloop_ctx, void *sock_ctx)
|
||||
{
|
||||
struct wpa_priv_interface *iface = eloop_ctx;
|
||||
char buf[2000];
|
||||
char buf[2000], *pos;
|
||||
void *cmd_buf;
|
||||
size_t cmd_len;
|
||||
int res, cmd;
|
||||
@ -649,6 +660,13 @@ static void wpa_priv_receive(int sock, void *eloop_ctx, void *sock_ctx)
|
||||
case PRIVSEP_CMD_SET_MODE:
|
||||
wpa_priv_cmd_set_mode(iface, cmd_buf, cmd_len);
|
||||
break;
|
||||
case PRIVSEP_CMD_SET_COUNTRY:
|
||||
pos = cmd_buf;
|
||||
if (pos + cmd_len >= buf + sizeof(buf))
|
||||
break;
|
||||
pos[cmd_len] = '\0';
|
||||
wpa_priv_cmd_set_country(iface, pos);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user